2010-02-04 80 views
1

这里是我的代码PHP不会回显XML孩子

<form method="post"> 
    <input name="hash" type="text" id="hash" style='width: 30%;'/> 
    <input name="Crack!" type="submit" value="Crack!" onfocus="if(this.blur)this.blur()"/> 
</form> 

    <?php 
if(isset($_POST['Crack!'])){ 
    $hash = $_POST['hash'];   

    $xml = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash"); 

    $status = $xml->data->status; 
    if ($status = "Success"){ 
    $plain = $xml->data->result; 
     }elseif ($status = "Hash not found"){ 
     $plain = "Not Found"; }  

?> 
<table> 
<tr> 
<td><?php echo "gdataonline.com: "; ?></td> 
<td><?php echo "$plain"; ?></td> 
</tr> 
</table> 

<?php 
echo "<pre>"; 
var_dump($xml); 
echo "</pre>"; 

} //if submit 

?> 

出于某种原因,我无法得到它的回声$平原,在所有。就好像它甚至无法读取它一样。

回答

5

Rob,如果您希望人们甚至理解您的问题,您必须付出努力而不是只发布一大堆不相关的代码,并问“为什么这个不工作?”

所以,我做了你的功课,我想出了什么e脚本正在做并取得example XML document。事实证明,你的层次结构错了。此外,这是无关的,但您使用assignment operators而不是comparison operators。换句话说,您的if s不会测试任何东西,第一个只会将$status设置为“成功”。

相关部分应该是这样的:

$data = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash"); 

switch ($data->status) 
{ 
    case 'Success': 
     $plain = $data->result; 
     break; 

    case 'Hash not found': 
     $plain = "Not Found"; 
     break; 
} 
+0

是的,你的代码是:-) – streetparade 2010-02-04 20:42:39

+0

非常感谢!像魅力一样工作! – Rob 2010-02-04 20:54:19

1

你在哪里得到“$ xml-> data”?根据php.net,SimpleXMLElement对象没有名为“data”的成员。查看该链接或simplexml_load_file的文档以获取有关正确使用此内容的众多示例。

+0

http://gdataonline.com/qkhash.php?mode=xml&hash=098f6bcd4621d373cade4e832627b4f6 – Rob 2010-02-04 20:35:35

1

它可能不是你的整个问题,但一个明确的问题是,你有两个任务,而不是测试:

if ($status = "Success")

}elseif ($status = "Hash not found"){

都分配这些值为$状态而不是测试相等。你需要$status == "Success"$status == "Hash not found"

在这种情况下,你的第一个测试总是会成功的(因为赋值的返回值是分配的值,所以$ status =“Success”将返回“Success”如果'测试,那么$ plain将始终是$ xml-> data->结果,即使状态不是真的成功。

+0

你对了,我不知道我是怎么错过的。谢谢!但我仍然有同样的问题,但仍然有必要,谢谢。 – Rob 2010-02-04 20:45:31

0

这为我工作:

<form method="post"> 
    <input name="hash" type="text" id="hash" style='width: 30%;'/> 
    <input name="Crack!" type="submit" value="Crack!" onfocus="if(this.blur)this.blur()"/> 
</form> 

    <?php 
if(isset($_POST['Crack!'])){ 
    $hash = $_POST['hash'];   

<?php 

$xml = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash") 

if(!xml) 
{ 
echo "hash not found"; 
// return false; // not function so cant return false ignore it 
} 

$plain = $xml->result; 

?> 


<table> 
<tr> 
<td><?php echo "gdataonline.com: "; ?></td> 
<td><?php echo "$plain"; ?></td> 
</tr> 
</table>