问题标签 [magic-quotes-gpc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1332 浏览

php - 我应该总是对 _POST _GET 和 _COOKIE 变量使用带斜杠吗

当我读到get_magic_quotes_gpc()PHP 中的函数时,我真的很困惑。

到处都说该功能已弃用(示例)。

但是 PHP 5.3 中的默认行为是什么?我曾经magic_quotes_gpc在我的脚本开头检查 all 和变量是否打开并剥离所有斜杠POSTGET这样COOKIE我就不会感到困惑。

但是如果我不应该使用 来检查添加的斜杠get_magic_quotes_gpc(),那么如果 PHP 5.3 没有添加斜杠,那么总是删除斜杠会导致错误的数据。

对此有同样的困惑

目前magic_quotes_gpc在我的服务器上(PHP 5.2.17),所以我需要删除斜杠。但是我应该如何处理这个为未来的 PHP 版本做准备呢?

我可以在脚本开头的运行时以某种方式设置默认值吗?但是默认值是多少?

0 投票
2 回答
1567 浏览

php - filter_input() 何时删除 POST 变量的斜线?

我创建了一个小的 PHP 脚本,它在 PHP 5.2.17 的服务器上运行并magic_quotes_gpc启用了该指令。

我没有对 php.ini 文件的写访问权限,我想从用户输入中删除所有斜杠。

即使该magic_quotes_gpc指令被关闭(例如将脚本移动到另一台服务器时),这也应该有效。

当用户提交数组时,它也应该递归地工作。
我更喜欢使用内置函数。

这在我的服务器上给出了以下结果:

似乎除了数组键之外,斜线都被删除了。

还是从未添加斜线?(filter_input()并且filter_input_array()可能会忽略该magic_quotes_gpc指令,因为它已被弃用;但我找不到该指令的参考)

删除/不设置斜杠的行为是否filter_input()依赖filter_input_array()于系统参数?
我不明白这里的警告。

0 投票
4 回答
2129 浏览

php - php 5.3 上的 magic_quotes 不会消失

我有一个运行 PHP 5.3.2 的 Ubuntu 10.04 服务器,并且在我的 php.ini 文件中设置了这些行:

没有其他 php.ini 文件(我搜索了整个硬盘驱动器),我检查了所有 apache2 配置文件(包括整个硬盘驱动器上的所有 .htaccess 文件),并且在其他任何地方都没有引用它们。

然而:

产生这个输出:int(1) 也就是说,魔术引号是打开的,这很容易通过添加任何类型的带引号的请求来验证,并且它们将被引用。 我已通过将以下内容添加到我的根 .htaccess 文件来解决此问题:

上述代码现在产生所需的结果:int(0),并且没有引用输出。

所以问题是:为什么,哦,天哪,为什么,魔术语录一开始就出现了?! 是的,我知道这个问题与其他被问到的问题相似。我不是在寻找“快速修复”,是的,我知道魔术引号将在 php 5.4 中删除。但事实是,在 5.4 发布后(不同的客户端等),我需要在几年内保持向后兼容性,所以我试图弄清楚为什么会出现魔术引号。我知道我可以通过在我的根 .htaccess 文件中添加一行来解决这个问题(如我所展示的那样),但我更希望更深入地了解我的 php.ini 设置是如何被覆盖的。

那么有没有人对如何打开它有任何想法?

0 投票
2 回答
3846 浏览

php - 无法重新声明函数错误

我正在尝试从数组的魔术引号中删除斜杠。所以我有两个功能,一个是删除斜线,另一个是设置变量。

我在我不理解的实时服务器中收到此错误,

致命错误:无法在第 16 行的 json.php 中重新声明 stripslashes_array()(之前在 json.php:16 中声明)

第 16 行是指这一行function stripslashes_array($array),似乎没有任何错误。

知道如何解决这个问题吗?

0 投票
1 回答
233 浏览

php - php deprecation magic_quotes 错误不会消失

我知道不久前还有另一个话题,但那里从来没有真正可靠的答案。

我正在运行 Debian 6、Apache 2.2 和 PHP 5.3.3。当我查看服务器上的 phpinfo() 输出时,它显示 magic_gpc_quotes 设置为关闭。尽管每次有人访问页面时,我的 error.log 文件都会收到此错误的垃圾邮件。

我已经搜索了每一个 .ini 文件,并且在其中的每一个文件中,magic_quotes_gpc 都设置为关闭。

我正在使用受 Suhosin 保护的 mod_fastcgi 和 php。我不确定其中任何一个是否会影响 magic_quotes_gpc 的行为,但我真的不知道该怎么做。任何解决此问题的帮助将不胜感激。

我也运行了 apt-get update 并且一切都是最新的。

运行grep -r 'magic_quotes_gpc' /返回 3 个 php.ini 文件,所有文件都显示magic_quotes_gpc = off

我认为可能是 mod_fastcgi 导致了这个问题,所以我禁用了我的脚本使用它,但仍然出现错误。

0 投票
1 回答
159 浏览

mysql - Should I try to rid my MySQL database of back-slashes?

I'm using PDO prepared statements to insert data into a MySQL database, and I notice that apostrophes (single quotes) in strings are being stored in the database with back-slashes (\) preceding them.

I use stripslashes($string) on output, and of course this gets rid of them.

I searched my server's phpinfo() information (PHP version 5.2.17) for "magic_quotes" and found:

  • magic_quotes_gpc: local value = on, master value = on
  • magic_quotes_runtime: local value = off, master value = off
  • magic_quotes_sybase: local value = off, master value = off

Firstly, would turning magic_quotes_gpc off prevent the occurrence of the back-slashes? I don't currently have access to the server php.ini master settings, but as I understand it I would be able to disable it by configuring the root .htaccess file with the directive php_flag magic_quotes_gpc Off.

Secondly, is the prevention of these back-slashes in the database desirable? I ask this because I saw the somewhat cryptic remark here to "think twice before you do".

0 投票
1 回答
576 浏览

mysql - Why does this PDO DB insertion with magic_quotes_gpc off still result in backslashes in db?

On the server I'm using (running php_fastcgi5), there is an .htaccess file in the root directory containing this directive, to turn off magic_quotes_gpc:

A phpinfo() output reports that the local value for magic_quotes_gpc is indeed off. (The master value is however "on".)

I am not sure if this is reporting accurately, firstly because I read this posting, and secondly because the following code using PDO prepared statements still ends up with backslashes inserted into the database record:

Does anyone know why text inserted into the database using this code still results in db records with slashes added before apostrophes?

Is it because PHP is running as php_fastcgi5 (i.e., is the .htaccess directive to switch off magic_quotes_gpc not working because of this)? If so, is there a workaround? (I have no access to the php.ini file.)

0 投票
4 回答
1462 浏览

php - PHP:magic_quotes_gpc

根据PHP手册:

为 GPC(Get/Post/Cookie)操作设置 magic_quotes 状态。当 magic_quotes 打开时,所有 '(单引号)、"(双引号)、\(反斜杠)和 NUL 都会自动使用反斜杠进行转义。

但这也适用于 $_REQUEST 变量吗?

0 投票
1 回答
136 浏览

php - 修复 magic_quote 受影响的数据

我有一个 CMS 来解决一些问题。由于托管服务已在服务器中启用 php_magic_quotes,因此它们的数据库包含带有斜线的内容。拿到项目后,我要求主办方关闭 magic_quotes,问题不再可用。但是,由于魔术引号,我需要修复现有的受影响数据。是否有任何 mysql 或 php 命令可以用来修复这些问题。一些记录受到严重影响。作为一个例子,我可以在数据库中看到类似的 you\\\\\\'r内容 感谢任何修复这些现有数据的建议。

0 投票
3 回答
115 浏览

php - 为什么我引用的文字会出现“像这样”?

可能重复:
“每个引用前的斜线”问题

我使用如下代码在我的 php 应用程序的不同部分之间传递消息:

在另一端获取它的代码如下所示:

在我的开发环境中,输出如下所示:"Some site"已修改。在我的生产环境中,输出如下所示:\"Some site\"已修改。

这使我相信这是php.ini环境之间设置的差异。我一直在寻找,直到我的眼球起泡,但我找不到区别。url 中传递的内容如下所示:

如果我把这段代码:

在上面的变量赋值和标头调用之间,url 如下所示:

但在这两种环境中都不会显示任何消息。$_REQUEST['site']如果包含&符号,我也有类似的问题。

谁能解释这里发生了什么,以及如何解决它?