Я пытаюсь закодировать простой скрипт с curl, но проблема в том, что мне нужно собрать специальный ключ, который генерируется при каждом новом запросе POST (onLoad()
). Проблему можно легко пропустить, создав новый элемент DOM и получив значение с помощью функции GetElementById из DOM, но в этом случае нет «id», объявленного в конкретном теге, с которого я хочу вернуть значение. Есть только имя.GetElementById альтернативный
Пример:
<input name="trans_id" value="Lk+Vz957skV845b7x2DX7iyR1FI=" type="hidden">
пыльник есть псевдо-код, который я сделал сегодня (последний абзац, где мне нужна помощь):
<?php
// Author : me
// Date : 10.11.2013.
?>
<?php
// Declaring variables :)
$data_string = '';
$url = 'http://www.website.com';
$uagent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6';
// Declaring variables for e-pay
$url2 = 'http:/website2.com';
...
$exChar = '|';
$exStr = '';
$exStr = Explode($exChar, $_POST['ccep']);
$data = array (
"email" => '',
...
"submitFromInputForm" => 'Next',
);
foreach($data as $key=>$value) { $data_string .= $key.'='.$value.'&'; }
rtrim($data_string, '&');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt ($ch, CURLOPT_POST, count($data));
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data_string);
$result = curl_exec ($ch);
print($result);
// ====================================================================
// Need help with this function
$check = strpos($result, 'Confirmation');
if ($check == True) {
$doc = new DOMDocument();
@$doc->loadHTML($result);
$id = $doc->getElementsByName('trans_id');
echo 'Value:' . $id;
}
// ====================================================================
curl_close($ch);
?>
Но, честно говоря, я не был в состоянии получить результат от этой функции, потому что, ну, это не exsist. Поиск в Google помогает мне получить результаты с помощью getElementsByTagName, которые после чтения документации из официального сайта PHP не решают мою проблему.
Заметка в конце: я не хочу включать Javascripting, только чистый PHP.
Заранее благодарен,
Отношения.
Благодарим Вас за помощь @Royal Bg. К сожалению, кажется, что ваш код работает неправильно. Я попытался извлечь первое значение, по которому запускается функция ($ trans_id-> item (0) -> nodeValue;), но кажется, что она тоже не работает. Не могли бы вы проверить выражение оценки, это может быть неправильно. Я также попытался использовать цикл foreach, но это не решило проблему. – sensation
@HalisDuraki Я отредактировал свой ответ, это должно работать как ожидалось :) –
Теперь это хорошо работает. Кроме того, мне не нужен цикл foreach, поэтому я удалил его (есть только один тег с именем «trans_id») и заменил его на «item (0)». Ответ принят. – sensation