$ end意外 - 你能“发现”吗?短代码

时间:2012-10-05 23:10:58

标签: php database mysqli

代码问题 - 意外的$ 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地址与数据库中列出的IP地址相同。

任何&amp;非常感谢。

3 个答案:

答案 0 :(得分:4)

您的while块永远不会在else之后结束。

您可以在上一次}之后添加结束(else)括号,轻松解决此问题。

其次,正如@Tadeck所提到的,您的代码容易受到注入攻击。为防止出现这种情况,我建议使用PDO or mysqli,因为mysql_*函数已弃用。

答案 1 :(得分:1)

尝试使用更高级的文本编辑器(如Aptana),它具有许多内置功能,可以更轻松地对代码进行故障排除。 http://www.aptana.com/

答案 2 :(得分:0)

你没有关闭while循环中的大括号。

如果你缩进你的代码,发现这种事情要容易得多!