Как разобрать входное значение, которое скрыто - PullRequest
1 голос
/ 19 марта 2011

Я не могу найти ничего здесь или Google, связанных с анализом входных значений, которые скрыты.Например, этот кусок кода здесь.Я пытаюсь разобрать ключ из 40 символов.

<input type="hidden" name="key" value="c126b4f134cb2c1184c1585fdfa4d1b0013a12f4"> 

Я пробовал это, но он никогда не возвращает значение чего-либо скрытого.

libxml_use_internal_errors(TRUE);
    $dom = new DOMDocument;
    $dom->loadHTMLFile('http://www6.cbox.ws/box/?boxid=524970&boxtag=7xpsk7&sec=form');
    libxml_clear_errors();

    $xp = new DOMXpath($dom);
    $nodes = $xp->query('//input/@value');
    foreach($nodes as $node)
        {
          echo( $node->textContent . "<br><br>" );
        }

var_dump($node);

код обновления

libxml_use_internal_errors(TRUE);
$dom = new DOMDocument;
$dom->loadHTMLFile('http://www6.cbox.ws/box/?boxid=524970&boxtag=7xpsk7&sec=form');
libxml_clear_errors();

$xp = new DOMXpath($dom);
$nodes = $xp->query('//input[type="hidden"]');
$val = $nodes->getAttribute('value');

var_dump($val);

возвращает эту ошибку, ссылаясь на строку "$ val = $ node-> getAttribute ('value');"

Fatal error: Call to undefined method DOMNodeList::getAttribute()

Ответы [ 2 ]

2 голосов
/ 19 марта 2011
$nodes = $xp->query('//input[type="hidden"]');
foreach ($nodes as $node) {
    $val = $node->getAttribute('value');
}

комментарий:

Если вы посмотрите на источник страницы, включенной в пример кода, вы увидите, что есть только одно скрытое поле формы, и онополучил пустое значение:

<input type="hidden" name="key" value="">

, поэтому, конечно, XPath вернет NULL - это то, что хранится в этом атрибуте значения: ничто.

0 голосов
/ 25 октября 2012

Используя ваш код обновления, фиксированная версия будет:

<?php

libxml_use_internal_errors(TRUE);
$dom = new DOMDocument;
// This link is now dead...
$dom->loadHTMLFile('http://www6.cbox.ws/box/?boxid=524970&boxtag=7xpsk7&sec=form');
libxml_clear_errors();

$val = array(); // Must be set before foreach loop

$xp = new DOMXpath($dom);
$nodes = $xp->query('//input[type="hidden"]');
foreach ($nodes as $node) {
    $val[] = $node->getAttribute('value');
}

var_dump($val);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...