Авто Отправка формы (cURL)

Я пишу форму для отправки данных в paypal, и это отлично работает, я создаю форму со скрытыми полями, а затем добавляю кнопку отправки, которая отправляет все на paypal.

Однако, когда пользователь нажимает на эту кнопку, есть еще что я хочу сделать, например, изменить статус своей корзины в базе данных. Таким образом, я хочу, чтобы иметь возможность выполнять некоторый код, когда они нажимают кнопку «Отправить», а затем публикуют данные в paypal.

Я не хочу использовать javascript для этого.

Мой метод на данный момент использует cURL, форма отправляется обратно на текущую страницу, затем проверяю данные $ _POST, выполняю ли другие мои команды, такие как обновление состояния корзины, а затем создаю команду curl и отправляю данные формы к paypal. Теперь он получает сообщение успешно, но браузер не переходит к paypal.

Сначала я просто возвращал результат в строку, а затем повторял ее, и я мог видеть, что сообщение прошло успешно, а затем я установил CURLOPT_FOLLOWLOCATION в 1, предположив, что это позволит браузеру перейти на paypal, но это не так, как кажется сделайте, возьмите кое-что из PayPal и положите его на мою страницу.

Использует ли cURL правильную вещь для этого? и если да, то как мне обойти эту проблему? Я хочу держаться подальше от javascript, так как только пользователи с включенным javascript обновили бы свою корзину.

Код im, используемый для curl, ниже, post_data – это массив, который я создал, а затем прочитал пары ключ-значение в post_string.

//Set cURL Options curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, false); curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl_connection, CURLOPT_MAXREDIRS, 20); //Set Data to be Posted curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string); //Execute Request curl_exec($curl_connection); 

Возможно, попробуйте объединить CURL с заголовком

 <?php header ("Location: https://www.paypal.com/"); 

Это может зависеть, если браузеру необходимо передать информацию о состоянии (сессии) в paypal. Эта информация о сеансе собрана в вашем вызове CURL, но нет способа передать это браузеру, к сожалению. Поэтому, если вам нужно поддерживать состояние, тогда это не сработает.

Curl работает на стороне сервера. Это не повлияет на ваш браузер. CURLOPT_FOLLOWLOCATION просто инструктирует CURL подчиняться, когда, например, paypal отправляет ему заголовок, подобный указанному выше. Единственный способ сообщить браузеру что-то сделать – это ответить HTTP-заголовком, подобным выше, или с каким-то метатегом в ответе HTML, например

 <META HTTP-EQUIV="refresh" CONTENT="10;URL=https://www.paypal.com/"> 

В качестве альтернативы, PayPal не предоставляет функцию перенаправления, которая, когда транзакция будет завершена, перенаправит обратно на ваш сервер. Если это так, просто измените статус карты во время этого обратного вызова и пропустите весь процесс завивки?

Получив форму и выполняя то, что вам нужно сделать, вы должны представить другую форму с помощью всего одной кнопки (все остальные данные в скрытых полях), чтобы пользователь мог щелкнуть и, наконец, отправиться в paypal.