2012-10-05 33 views
-1

代碼問題 - 意外$ end?試了好半個小時,現在解決這個問題....

你能發現問題嗎?

<?php 
    session_start(); 

    if (!isset($_SESSION['user_id'])) { 
if (isset($_COOKIE['user_id']) && isset($_COOKIE['username'])) { 
    $_SESSION['user_id'] = $_COOKIE['user_id']; 
    $_SESSION['username'] = $_COOKIE['username']; 
} 
    } 
?> 

<html> 
<head> 
</head> 
<body> 
test 
<?php 

    $dbc = mysqli_connect(localhost, hidden, hidden, hidden); 

if (!isset($_GET['shipID'])) { 
    $query = "SELECT user_id, shipID, IP, Image FROM ships WHERE shipID = '" .    $_SESSION['shipID'] . "'"; 
    } 
    else { 
    $query = "SELECT user_id, shipID, IP, Image FROM ships WHERE shipID = '" .  $_GET['shipID'] . "'"; 
    } 
    $data = mysqli_query($dbc, $query); 


while ($row = mysqli_fetch_array($data)) { 
    if ($row['IP'] == $_SERVER["REMOTE_ADDR"]) 
    { 
     echo 'Cool'; 
    } 
else { echo 'Fail' ; } 

?> 
</body> 
</html> 

遊戲的目的是證明,IP地址是相同的數據庫中列出的一個。

任何&所有幫助讚賞。

+1

你的代碼容易受到[SQL注入](http://stackoverflow.com/q/332365/548696)的影響,你應該[學習如何防止它](http://stackoverflow.com/q/60174/548696)。 – Tadeck

+0

感謝您的回答,我的帳戶被禁止提問 - 因爲它們不是「真實」或「有幫助」的問題。我認爲Stackoverflow是一個PHP的幫助網站,我在這裏推薦的代碼項目的幫助,所以我想道歉,如果我浪費任何人的時間。 –

+0

SO是一個關於PHP和其他技術的網站(閱讀[faq]),你可能會被暫時禁止,因爲你的問題太局部化了(再次閱讀[faq])。嘗試獲得一些聲望點,然後提出符合網站政策的問題。 – Tadeck

回答

4

你的時間段永遠不會在else之後結束。

您可以通過在最後一個else後添加一個關閉(})支架來輕鬆解決此問題。其次,正如@Tadeck所提到的,你的代碼容易受到注入攻擊。爲了防止這種情況,我建議使用PDO or mysqli,因爲mysql_*函數已被棄用。

+0

也謝謝你的回答! –

+0

@SamBowyer我也更新了一個更好的數據庫交互解決方案的鏈接。至於tuts,我的書中最好的材料可以通過手冊找到,但如果你想要更精確的東西,請進一步解釋。 – Daedalus

0

您沒有關閉while循環中的大括號。

如果你縮進你的代碼,發現這樣的事情會容易得多!

+0

再次感謝。我看了看,但一定錯過了它。我想我需要購買一些關於高級php主題的書。有什麼可以推薦的嗎?你已經回答了我的一些問題,所以我不介意會員鏈接等,以返回此優惠。 –

+0

唉,從我開始寫代碼已經很久了,我不記得我用過的任何書籍,也不知道目前有什麼可用的書籍。我可以建議的是你寫很多代碼! – andrewsi

1

嘗試使用更高級的文本編輯器(如Aptana),它具有許多內置功能,可以使您的代碼故障排除變得更容易。 http://www.aptana.com/