PHP Curl добавляет » к отправке символа апострофа на PHP, но сервер на базе ASP

#php #curl

#php #curl

Вопрос:

У меня есть сторонний сервер на базе ASP, на котором есть страница PHP, которая принимает данные формы. С моей веб-страницы у меня есть PHP-скрипт, который отправляет поля на страницу PHP с помощью curl. Все работает нормально, за исключением того, что пользователь добавляет символ апострофа в текст! В серверной части он принимается как «‘».

Что еще более странно, так это то, что он делает это только с моего размещенного веб-сайта. Когда я тестирую локально, он работает нормально.

у меня нет элемента управления на моем размещенном сайте. Все, что мне нужно для работы с моей функцией php curl.

это отлично работает на моем локальном хостинге.

вот пример кода

   $this->headers[] = 'Accept: '. $_SERVER['HTTP_ACCEPT'];
    $this->headers[] = 'Connection: Keep-Alive';
    $this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
  
     $post_var = 'post='.urlencode(stripslashes("it's Me Ali"));

    $this->ch = curl_init();
    curl_setopt($this->ch, CURLOPT_HTTPHEADER,      $this->headers);
    curl_setopt($this->ch, CURLOPT_HEADER,          FALSE);
    curl_setopt($this->ch, CURLOPT_USERAGENT,       $this->USER_AGENT);
    curl_setopt($this->ch, CURLOPT_COOKIEFILE,      $this->cookie);
    curl_setopt($this->ch, CURLOPT_COOKIEJAR,       $this->cookie);
    curl_setopt($this->ch, CURLOPT_COOKIE,          $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/');
    curl_setopt($this->ch, CURLOPT_ENCODING,        "gzip");
    curl_setopt($this->ch, CURLOPT_RETURNTRANSFER,  TRUE);
    curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION,  TRUE);

    curl_setopt($this->ch, CURLOPT_URL,         'http://www.example.com/form.php');
    curl_setopt($this->ch, CURLOPT_POST,        TRUE);
    curl_setopt($this->ch, CURLOPT_POSTFIELDS,  $post_var);

    $get_page = curl_exec($this->ch);
    echo $get_page;
    curl_close($this->ch);
  

Комментарии:

1. Исправьте проблему в http://www.myhostsite.com/form.php , а не в вызове curl.

2. у меня нет доступа к myhostsite.com/form.php его сервис, который я должен использовать без каких-либо привилегий

3. Если у вас нет доступа, вы не сможете решить проблему с их magic_quotes. Ответ на вопрос. Проблема не решена.

Ответ №1:

Magic_quotes включен, и это не обязательно хорошо, поскольку теперь он считается устаревшим.

Вы можете включить это только в ini-файле. Если вы не можете, используйте strip_slashes, чтобы удалить их.

Вы можете перебрать свои переменные get и post, чтобы удалить косые черты в верхней части страницы.