2012-12-02 161 views
0

我已經檢查了很多示例代碼,但仍在努力使礦山正常工作。我正嘗試從我的PHP腳本生成XML輸出。從PHP生成XML輸出

的login.php

<?php 

    mysql_connect("localhost", "root", "") or die("cannot connect"); 
    mysql_select_db("ConquestOfLancaster") or die("cannot select DB"); 

    $username = $_REQUEST['username']; 
    $password = sha1($_REQUEST['password']); 

    $username = mysql_real_escape_string($username); 

    $domDoc = new DOMDocument; 
    $rootElt = $domDoc->createElement('root'); 
    $rootNode = $domDoc->appendChild($rootElt); 

    $sql = "SELECT user_id, user_name FROM tbl_user WHERE user_name='$username' and user_pass='$password'"; 
    $result = mysql_query($sql); 

    $count=mysql_num_rows($result); 

    if($count > 0){ 

     //echo("welcome"); 
     $rootAtr = $domDoc->createAttribute('success'); 
     $rootAtrVal = $domDoc->createTextNode('TRUE'); 
     $rootAtr->AppendChild($rootAtrVal); 
     $rootElt->AppendChild($rootAtr); 

     $subElt = $domDoc->createElement('username'); 
     $subNode = $rootNode->appendChild($subElt); 

     $textNode = $domDoc->createTextNode($username); 
     $subNode->appendChild($textNode); 

     echo htmlentities($domDoc->saveXML()); 
    } else{ 

     //echo("not exist"); 
     $rootAtr = $domDoc->createAttribute('success'); 
     $rootAtrVal = $domDoc->createTextNode('FALSE'); 
     $rootAtr->AppendChild($rootAtrVal); 
     $rootElt->AppendChild($rootAtr); 

     echo htmlentities($domDoc->saveXML()); 
    } 

?> 

和瀏覽器的輸出是

<?xml version="1.0"?> <root success="TRUE"><username>user1</username></root> 

我的主要問題是,與此PHP交互我的iOS應用程序無法解析這個結果。我做錯了什麼?

+0

,這是非常錯誤的第一件事就是用depricated mysql_ *命令集。使用PDO或mysqli –

+0

這會改變XML生成的方式嗎?我的意思是從我這邊來看是一個重要的錯誤? – OutOfBoundsException

+0

不會更改xml,但在新代碼中使用過時的不受支持的技術是個不錯的主意。 http://ca1.php.net/manual/en/function.mysql-connect.php –

回答

1

您是否嘗試取出htmlentities

當你發送的是:

&lt;xml version ... 

<?xml version="1.0"?> <root success="TRUE"><username>user1</username></root> 

像你想象的

+0

有一種方法可以將它打印爲真正的XML輸出?我已經刪除了htmlentities,現在屏幕上什麼也沒有。我是PHP編程新手,仍在掙扎。對不起,傻傻的問題.. – OutOfBoundsException

+0

你應該得到user1在屏幕上,如果你沒有發送正確的標題它是正確的輸出,你總是可以嘗試查看頁面源。並且要確保在if語句的兩個地方用'echo $ domDoc-> saveXML();'替換'echo htmlentities($ domDoc-> saveXML());''。 –

+0

嗚呼!!!我改變了你的建議並添加了標題('Content-Type:application/xml');現在,看起來像XML輸出:)然而,在頂部說:「這個XML文件似乎沒有任何與它相關的樣式信息,文檔樹如下所示。」需要擔心? – OutOfBoundsException