2014-12-06 1 views
1

Что я хочу сделать, это получить значение элемента с тегом 'input' и именем '__RequestVerificationToken' и использовать его без обновления страницы ... если это имеет смысл.Получение значения от элемента на странице с помощью URL-адреса и его использование

Я знаю о curl, то, что я делаю сейчас, получает содержимое со страницы, а затем с помощью DOM, чтобы получить значение __RequestVarificationToken и использовать его в curl POST. Вот мой код на данный момент, код не работает ... Как я могу заставить его работать?

<?php 
 

 

 
    function curl($url, $post=false, $cookie=false){ 
 
    $ch = curl_init(); 
 
    curl_setopt ($ch, CURLOPT_URL, $url); 
 
    curl_setopt ($ch, CURLOPT_HEADER, 0); 
 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
 
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 
 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
 
    
 
    $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"; 
 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
 
    if($cookie){ 
 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
 
    } 
 
    
 
    if($post){ 
 
     curl_setopt($ch, CURLOPT_POST, true); 
 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
 
    } 
 
    
 
    return curl_exec ($ch); 
 
} 
 
function SendMsg($body,$Subject,$RecipientId){ 
 
\t $dom = new DOMDocument; 
 
\t $Content = curl("http://m.roblox.com/messages/sendmessage?id=$RecipientId", false, USERNAME); 
 
\t //print_r($Content); 
 
\t $dom->loadHTML($Content); 
 
\t $input = $dom->getElementsByTagName('input'); 
 
\t foreach($input as $node){ 
 
\t \t print_r($node); 
 
\t \t if ($node->nodeName == '__RequestVerificationToken'){ 
 
\t \t \t $vartoken = $node->nodeValue; 
 
\t \t } 
 
\t } 
 
\t curl("http://m.roblox.com/messages/sendmessagework",('__RequestVerificationToken=' .$vartoken . '&RecipientId='.$RecipientId. '&Subject='.$Subject.'&Body='.$body),USERNAME); 
 
\t echo("Message sent?"); 
 
} ?>
любая помощь будет принята с благодарностью! Благодарю.

ответ

1

Если вы имеете в виду имя, значение атрибута

<input name="name_here" /> <!-- name attribute --> 

Тогда $node->nodeName не то, что вы ищете.

Использование ->getAttribute() вместо:

if($node->getAttribute('name') == '__RequestVerificationToken'){ 
    $vartoken = $node->nodeValue; 
} 
+0

Ого, оказывается, с этим исправлением, он работает сейчас! БЛАГОДАРЯ! :) – POC0bob

+0

@ POC0bob уверен, что мужчина рад, что это помогло – Ghost