由于 PHP 中缺少 DEFINE 变量,AJAX 查询失败

发布于 2024-11-16 07:32:32 字数 445 浏览 0 评论 0原文

我是 AJAX/jQuery 和 PHP 的新手。

我正在尝试使用 XMLHttpRequest 或 jQuery 通过 AJAX 调用 PHP 脚本。在这两种情况下,调用都会失败,因为我调用的 php 文件在第一行包含以下检查

if (!defined("SOMETHING")) { die("Error. You cannot access this file directly");}

,这会导致我的调用失败,因为在这种情况下,当我从外部调用时,未定义此变量。这个条件只是检查调用者是否是同一个Web应用程序,或者调用是否来自外部(那么它将被拒绝)。

有没有解决方法而不删除此检查?我可以使用 AJAX/jQuery 设置这个预期变量吗?

有没有办法通过 AJAX 调用特定的 PHP 方法而不调用整个 PHP 文件?

提前致谢 托马斯

I am new to AJAX/jQuery with PHP.

I am trying to call a PHP script via AJAX using XMLHttpRequest or jQuery. In both cases the call fails because the php file I am calling into contains on the very first row the following check

if (!defined("SOMETHING")) { die("Error. You cannot access this file directly");}

which causes that my call fails, because this variable is not defined in this case as I am calling from the outside. This condition just checks if the caller is the same web application or wheather the call comes from outside (then it will be denied).

Is there a workaround for it without removing this check? Can I somehow set this expected variable using AJAX/jQuery?

Is there a way how to call specific PHP method via AJAX without calling into the whole PHP file?

Thanks in advance
Tomas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愿与i 2024-11-23 07:32:33

嗯......你可以做到这一点,但我不确定这是否安全或你希望的方式。

您的 jQuery 应该使用 GETPOST 发布一个变量,您应该在 PHP 端检查该变量。如果您已收到该变量,请定义SOMETHING

这是您的 jQuery,使用 POST 方法:

$.post('ajax.php', {SOMETHING: true}, function(ret){
    // do whatever you like with the return here
});

这是您的 PHP,如果它收到带有变量的 $_POST 请求,它将定义 SOMETHING其中有一些东西

<?php
if(isset($_POST['SOMETHING'])){
    define('SOMETHING', true);
}
if (!defined("SOMETHING")) { die("Error. You cannot access this file directly");}

// do anything you like here
?>

Hmm... you can do it, but I am not sure if this is secure or the way you would like it to be.

Your jQuery should post a variable with GET or POST, which you should check on PHP side. If you have received that variable, then define SOMETHING.

Here is your jQuery, using the POST method:

$.post('ajax.php', {SOMETHING: true}, function(ret){
    // do whatever you like with the return here
});

Here is your PHP, which will define SOMETHING if it receives a $_POST request with the variable SOMETHING in it.

<?php
if(isset($_POST['SOMETHING'])){
    define('SOMETHING', true);
}
if (!defined("SOMETHING")) { die("Error. You cannot access this file directly");}

// do anything you like here
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文