PHP Curl将'\'添加到发送到ASP页面的撇号字符

Blu*_*oid 4 php curl asp-classic

我有一个第三方服务器,它有一个传统的ASP页面,它接收表单数据.从我的网页上我有一个PHP脚本,它使用curl将字段发送到ASP页面.除非用户在文本中包含撇号字符,否则一切正常.在后端,它被收到"\".甚至更奇怪的是它只能从我的托管网站上做到这一点.当我在本地测试它工作正常.

以下是发送数据的PHP代码段:

$datatopost = array (); 
foreach($_POST as $key => $data) {
    $datatopost[$key] = $data;
}

$ch = curl_init("http://my.server.com/validate.asp");
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $datatopost);
$result =  curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

Seb*_*Seb 5

您可能需要在该特定服务器中禁用Magic Quotes:http://php.net/manual/en/security.magicquotes.php

此外,您可以将此代码添加到脚本的顶部(更好的是,在每个页面中包含的库中),因此无论环境如何,您都可以将魔术引号反转:

<?php
if (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
?>
Run Code Online (Sandbox Code Playgroud)

取自http://php.net/manual/en/security.magicquotes.disabling.php

  • 谢谢!这解决了它.我只需要将该脚本添加到顶部. (2认同)