Индекс $ _POST, казалось бы, опустошается наугад - PullRequest
0 голосов
/ 30 августа 2010

Хорошо, это сводит меня с ума! У меня есть сценарий, который берет информацию о продукте, отправленную пользователем с предыдущей страницы, и отправляет ее на бизнес-страницу Facebook пользователя через php sdk facebook.

Вот код php:

$app_id = "1234567890"; 
$app_secret = "1234567890";
$page_id = "1234567890";
$page_token = "1034921234567890"; 
$store_name = "MyStore.com"; 
$store_url = 'http://www.mystore.com'; 
$cur = '$'; 
$new_message = "New Product!"; 

    $prod_image = $store_url . "/images/" . $_POST['products_image'];
    $price = $products_price;
    $prod_url = $store_url . '/index.php?main_page=product_info&cPath=' . $current_category_id . '&products_id=' . $products_id;
    $prod_name = $_POST['products_name'][1];
    $prod_description = $_POST['products_description'][1];

include_once 'facebook/facebook.php';

$facebook = new Facebook(array(
      'appId'  => $app_id,
      'secret' => $app_secret,
      'cookie' => true, ));

$attachment = array(
'access_token'      =>  $page_token,
'message'           =>  $new_message,
'name'              =>  $prod_name,
'link'              =>  $prod_url,
'caption'           =>  'Price: '.$cur . $price,
'description'       =>  $prod_description,
'picture'           =>  $prod_image
);

Все отправляется в Facebook нормально, кроме как на некоторых серверах $ prod_description aka $ _POST ['products_description'] [1] заканчивается пустым. Когда var_dump($_POST['products_description']); помещается в одну строку, он возвращается с:

array (1) {[1] => string (35) "Это тестовое описание продукта. "}

Так что я знаю, что информация есть и не перезаписывается, просто по какой-то причине при отправке в facebook (с помощью cURL из файла include_once) она не публикуется.

Я должен также сказать, что это мод Zen Cart, который доступен для загрузки, и я пока не смог воспроизвести ошибку самостоятельно (тест на 4 разных серверах). У меня было несколько пользователей, которые добавили var_dump и отправили мне результаты.

Полагаю, мой вопрос таков; Есть ли что-то (например, параметр ini, опция cURL и т. Д.), Которое может варьироваться от сервера к серверу, что может привести к пустым случайным индексам при отправке через cURL, и могу ли я что-то сделать, чтобы это исправить?

Заранее спасибо.

1 Ответ

1 голос
/ 31 августа 2010

Я думаю, проблема в способе передачи данных.В описании есть пробелы, которые могут вызвать проблемы ...

Попробуйте явно установить enctype для формы "application / x-www-form-urlencoded"

<form enctype="application/x-www-form-urlencoded" .... >

Вы можететакже попробуйте url_encode описания продукта, прежде чем передавать его в Facebook.

$prod_description = urlencode($_POST['products_description'][1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...