PHP Curl ekler '\' ASP sayfasına gönderme karakteri kesme işareti için

3 Cevap php

Ben form verileri alır bir klasik ASP sayfası olan bir 3. parti sunucu var. Benim web sayfasından ben kıvrılmasını kullanarak ASP sayfasına alanları gönderir bir PHP komut dosyası var. Her şey bir kullanıcı metne bir kesme işareti karakteri içeriyorsa dışında çalışıyor. Geri Sonunda "\ '" olarak alınır. Ne daha tuhaf hususun olup sadece benim barındırılan web sitesinden bu yapmasıdır. Ben yerel olarak test ederken iyi çalışıyor.

Burada veri gönderir PHP pasajı:

$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);

3 Cevap

http://php.net/manual/en/security.magicquotes.php: Muhtemelen o sunucuda Sihirli Tırnaklar devre dışı bırakmanız gerekir

Ayrıca, bu nedenle olursa olsun çevre (her sayfa dahil bir kütüphanede, daha iyisi) Betiğinizin üstüne bu kodu eklemek olabilir, her zaman sihirli tırnak tersine alırsınız:

<?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);
}
?>

http://php.net/manual/en/security.magicquotes.disabling.php alınan

Eğer devre dışı sihirli tırnak var emin olun. Veri $_POST geliyor nasıl görünce, o büyük olasılıkla suçlu.