PHP DOMDocument: как получить два (2) значения с веб-страницы, когда одно значение не имеет значения идентификатора

Я хотел бы получить два значения из веб-документа. Значения api_key а также authenticity_token. Я написал функцию, но проблема в том, что она только вытаскивает api_key. Может кто-нибудь помочь мне с другой частью этой функции, которая позволит мне вытащить authenticity_token, СПАСИБО:

Вот мой код для моей функции:

    <?php
class apiKey{
public $apikey;
public $authenticity_token;function getApiKey(){
//Get api_key and pass it in
$apikey = null;
$doc = new DOMDocument();
$semcatStartUrl = 'https://entryform.semcat.net/1800stonewall';
libxml_use_internal_errors(true);
$doc->loadHTMLFile("$semcatStartUrl");
libxml_clear_errors();
$apikey = $doc->getElementById('api_key')->getAttribute('value');
return $apikey;

}

function getAuthenticityToken(){
//My guesstimate this doesn’t work because the form hasn’t been /               //submitted yet
$authenticity_token = $_POST['authenticity_token'];
return $authenticity_token;
}

}?>

Любая помощь будет принята с благодарностью. Еще раз спасибо!

0

Решение

Маркер подлинности содержится в этом элементе:

<input name="authenticity_token" type="hidden" value="..." />

К сожалению, как вы можете видеть, этот элемент не имеет атрибута ID, и поэтому получить его будет немного сложнее.

$xpath = new DOMXPath($doc);
$input = $xpath->query("input[@name=authenticity_token]")->item(0)->getAttribute("value");

В идеале вам понадобится некоторая проверка ошибок, чтобы убедиться, что элемент существует, но этот код должен работать нормально … при условии, что он находится в том же месте, что и существующая функция «получить ключ API», потому что он использует $doc,

0

Другие решения

Вот полный рабочий код:

<?php
class apiKey{
public $apikey;
public $authenticity_token;function getApiKey(){
//Get api_key and pass it in
$apikey = null;
$authenticity_token = null;
$doc = new DOMDocument();
$semcatStartUrl = 'https://entryform.semcat.net/1800stonewall';
libxml_use_internal_errors(true);
$doc->loadHTMLFile("$semcatStartUrl");
libxml_clear_errors();
$apikey = $doc->getElementById('api_key')->getAttribute('value');

//Original 2 Lines
//$xpath = new DOMXPath($doc);
//$input = $xpath->query("input[@name=authenticity_token]")->item(0)->getAttribute("value");

//Modified 2 Lines and added 2 Lines
$xpath = new DOMXPath($doc);
$input = $xpath->query("//input[@name='authenticity_token']");
$authenticity_token = $input->item(0)->getAttribute('value');
$this->authenticity_token = $authenticity_token;

return $apikey;

}

function getAuthenticityToken(){

return $this->authenticity_token;
}

}?>

Работает как отличный программист! Спасибо за помощь. Это действительно помогло направить меня в правильном направлении, и после небольшого исследования и тестирования я смог внести некоторые небольшие изменения в ваш код, чтобы он работал успешно и без ошибок.

0

По вопросам рекламы [email protected]