当前位置: 首页 > 面试题库 >

为什么$ _POST变量在PHP中被转义?

孟高峰
2023-03-14
问题内容

当我的PHP脚本从AJAX POST请求接收数据时,将对$_POST变量进行转义。真正奇怪的是,这仅发生在我的生产服务器(在Linux上运行PHP
5.2.12)上,而不在我的本地服务器(在Windows上运行PHP 5.3.1)上发生。

这是AJAX代码:

var pageRequest = false;
if(window.XMLHttpRequest)     pageRequest = new XMLHttpRequest();
else if(window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");

pageRequest.onreadystatechange = function() { }

var q_str = 'data=' + " ' ";

pageRequest.open('POST','unnamed_page.php',true);

pageRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
pageRequest.setRequestHeader("Content-length", q_str.length);
pageRequest.setRequestHeader("Connection", "close");

pageRequest.send(q_str);

这有什么原因吗?我应该如何解决这个问题,使其在两台服务器上都能正常工作?

编辑:我对magic_quotes具有以下设置:

                     Local   Master

magic_quotes_gpc     On      On
magic_quotes_runtime Off     Off
magic_quotes_sybase  Off     Off

问题答案:

您可能已在Linux服务器上启用了魔术引号:magic_quotes

当magic_quotes启用时,所有的’(单引号),“(双引号),\(反斜杠)和NUL都会自动以反斜杠转义。

禁用它们是一件好事,因为无论如何它们将从PHP 6开始被删除。 您还应该能够在脚本中禁用它们: set-magic-quotes-
runtime

不能取消
激活magic_quotes中负责在运行时转义POST数据的部分。如果可以,请在php.ini中将其禁用。如果您无法执行此操作,请检查是否启用了magic_quotes,并对从POST获取的任何内容执行stripslashes():

if (get_magic_quotes_gpc())  
 $my_post_var = stripslashes($_POST["my_post_var"]);


 类似资料:
  • 问题内容: 当我的PHP脚本从AJAX POST请求接收数据时,变量将被转义。真正奇怪的是,这仅发生在我的生产服务器上(在Linux上运行PHP 5.2.12),而不在我的本地服务器(在Windows上运行PHP 5.3.1)上发生。 这是AJAX代码: 这有什么原因吗?以及如何解决此问题,使其在两台服务器上均可工作? 编辑:我具有magic_quotes的以下设置: 问题答案: 您可能已在Lin

  • 主要内容:$_POST 变量,何时使用 method="post"?,PHP $_REQUEST 变量在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 $_POST 变量 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。 注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 M

  • 问题内容: 我一直在PHP中看到该变量,但我不知道它的用途。我从来没有亲自使用过它。 有人可以告诉我该变量在PHP中如何工作吗? 问题答案: 它是对当前对象的引用,在面向对象的代码中最常用。 例: 这会将’Jack’字符串存储为所创建对象的属性。

  • 问题内容: 我希望它不是重复的(同时鉴于存在此类错误的问题数量之多,但这是基本错误,同时也很难分辨),但我不明白这里会发生什么。 运行,没有错误(将字符转换为ASCII代码,它是内置的)。现在: 也可以运行,没有错误(不会被覆盖,条件始终为false)。现在: 我得到(在哪里) 看起来,即使不运行代码,仅引用左侧操作数也会使其成为局部变量。 显然,我可以解决此问题,但令我感到 非常 惊讶的是,由于

  • 变量被编译器声明为const,导致无法编译

  • 问题内容: 我不明白为什么这个简单的代码行不起作用: 它正在输出“ SomeVariable is $ someVariable”,而不是数字0。是否缺少某些内容或必须启用某些配置选项? 问题答案: 那是因为您需要使用双引号来代替。当用单引号引起来时,php不会将变量转换为它们的值