我想关掉PHP的魔术引号.我无法访问php.ini.
当我尝试添加php_flag magic_quotes_gpc off
到我的.htaccess文件时,我收到500内部服务器错误.这是我的.htaccess文件的样子:
AddType x-mapp-php5 .php
php_flag magic_quotes_gpc off
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用ini_set('magic_quotes_gpc', 'O')
,但这没有效果.
如何关闭魔术报价?
是否值得将我的代码更改为"更便携"并能够处理魔法引号的恐怖,或者我应该确保它始终通过.htaccess文件关闭?
if (get_magic_quotes_gpc()) {
$var = stripslashes($_POST['var']);
} else {
$var = $_POST['var'];
}
Run Code Online (Sandbox Code Playgroud)
与
php_flag magic_quotes_gpc off
Run Code Online (Sandbox Code Playgroud) 我有$ _POST变量从带引号斜杠的标签传入.我知道魔术引号已关闭,并使用if(get_magic_quotes_gpc())语句来阻止它们.但是,斜杠仍在增加.这是为什么?
形成
<form method="POST" action="">
<input type="text" name="spe_set" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
PHP
print_r($_POST['spe_set']); // if I wrote "Test's", this prints as "Test\'s"
Run Code Online (Sandbox Code Playgroud)
所以我做了,
if ( get_magic_quotes_gpc() )
$tempvar = stripslashes($_POST['spe_set']);
else
$tempvar = $_POST['spe_set'];
print_r($tempvar); // Still says "Test\'s"
Run Code Online (Sandbox Code Playgroud) 为什么在PHP中启用magic_quotes_gpc被认为是一种不好的做法?
我有一个PHP脚本,它在我的localhost服务器上运行完美.
当我将所有内容从localhost移动到Web服务器时,我json_decode
无法正常工作.
我尝试过json_encode
但仍然没有.
这种行为可能有什么问题?
我的代码:
$productsArr = json_encode($_GET['object']);
$_GET['object']
是经过验证的JSON.
我的最后一个选项可能是,magic_quotes
但我不知道我是否可以使用cPanel更改PHP.ini文件,这是我对服务器的唯一访问权限.
我很感激任何想法.
编辑:
这是我的网址的一部分:
Request URL:http://something.com/download.php?object=[{%22code%22:%222F-58S%22},{%22code%22:%22HT-45H%22},{%22code%22:%2244-3%22},{%22code%22:%22898-OPv%22}]&checkbox=
Run Code Online (Sandbox Code Playgroud)
如果这甚至很重要,我正在使用这个标题:
header('Content-Description: File Transfer');
header("Content-type: application/ms-word");
header("Content-Disposition: attachment;Filename=$name_of_file.doc");
Run Code Online (Sandbox Code Playgroud) 好吧,我的托管公司已经magic_quotes_gpc
转向ON
,我编写了我的PHP脚本stripslashes()
,准备这个.但现在托管公司说要magic_quotes_gpc
关闭它,我想知道现在我的数据现在会发生什么,如果stripslashes()
存在,我应该通过所有数百万行代码并摆脱stripslashes()
?还是stripslashes()
单独留下这个功能?会不会stripslashes()
毁了我的数据?
我已经看过几十个这样的PHP代码片段:
function DB_Quote($string)
{
if (get_magic_quotes_gpc() == true)
{
$string = stripslashes($string);
}
return mysql_real_escape_string($string);
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话DB_Quote("the (\\) character is cool");
会怎么样?(谢谢jspcal!)
难道我们不应该只在剥离斜线get_magic_quotes_gpc() == true
和价值源于$_GET
,$_POST
或$_COOKIE
超全局变量?
我使用Zend框架和一个项目的学说,问题是,当我在数据库中插入像O'Shea这样的字符串时,它会插入O \'Shea.我想这是因为双重逃逸.一个当我得到帖子和一个当我使用教条时,为什么当我print_r($ _ POST)我得到的价值已经被转义?
doctrine查询的语法是:
$req = $this->getRequest()->getPost();
$company = Doctrine::getTable('Project_Model_Companies')->find($company_id);
$company->name = $req['name'];
$company->save();
Run Code Online (Sandbox Code Playgroud)
请帮我如何避免这种双重逃逸,或者是什么问题?谢谢.
当我读到get_magic_quotes_gpc()
PHP中的函数时,我真的很困惑.
据说该函数已被弃用(例如).
但是PHP 5.3中的默认行为是什么?我用来检查,如果magic_quotes_gpc
在和全部剥离斜线,如果是这样的话,就在我的脚本的开头为所有POST
,GET
和COOKIE
变量,这样我就不会感到困惑.
但是如果我不检查是否使用了添加的斜杠get_magic_quotes_gpc()
,如果PHP 5.3没有添加斜杠,则总是删除斜杠会导致错误的数据.
我对此也有同样的困惑
目前magic_quotes_gpc
在我的服务器上(PHP 5.2.17),所以我需要删除斜杠.但是我应该如何处理这个为未来的PHP版本做好准备?
我可以在脚本开头的运行时期间以某种方式设置默认值吗?但是什么是默认值?
背景:我不是一个php程序员,我只知道足够让我的iOS应用程序的Web服务部分工作.
我发现我的php正在为我的文本添加反斜杠,当我不想要它时.例如,如果我设置一些这样的变量:
$directory = "directory/";
$file = "file.jpg"
Run Code Online (Sandbox Code Playgroud)
然后我通过JSON数组输出回我的设备:
$directory . $file
Run Code Online (Sandbox Code Playgroud)
我明白了
"directory\/file.jpg"
Run Code Online (Sandbox Code Playgroud)
我已经在我的php中运行了get_magic_quotes_gpc并报告了魔术引号被关闭.我是这样做的:
if (get_magic_quotes_gpc()){
//then I send something back in the JSON array to let me know that get_magic_quotes_gpc is on
}
Run Code Online (Sandbox Code Playgroud)
我试图使用stripslashes()(在原始变量或输出上)并且没有任何变化.
那么如何阻止它这样做呢?因为这意味着我无法告诉我的php删除特定目录中的文件.
提前致谢
我有数千个调用 get_magic_quotes_gpc 的实例。由于 get_magic_quotes_gpc 即将消失,我找到了一个建议,只需将 call 替换为“false”。
然后是代码:
if (get_magic_quotes_gpc()) {
$cell = stripslashes($cell);
}
Run Code Online (Sandbox Code Playgroud)
会成为:
if (false) {
$cell = stripslashes($cell);
}
Run Code Online (Sandbox Code Playgroud)
这需要查找并替换每个实例。
我已经做了一些更新来测试一次性解决方案,但是是否有批量或通用解决方案,或者我是否必须雇用额外的程序员来筛选文件?否则当 PHP V8 出现时,将会出现很多崩溃。