-1

コードの問題 - 予期しない $end ? この問題を解決するために、今から 30 分ほど試してみました....

問題を見つけることができますか?

<?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 アドレスがデータベースに記載されているものと同じであることを証明することです。

ありとあらゆる助けをいただければ幸いです。

4

3 に答える 3

4

while ブロックは . の後に終了することはありませんelse

最後}else.

第二に、@Tadeck が述べたように、コードはインジェクション攻撃に対して脆弱です。これを防ぐには、関数が非推奨になっているため、 PDO または mysqliのいずれかをお勧めします。mysql_*

于 2012-10-05T23:12:35.520 に答える
1

Aptana などのより高度なテキスト エディターを使用してみてください。これには、コードのトラブルシューティングをより簡単にする多くの機能が組み込まれています。http://www.aptana.com/

于 2012-10-05T23:17:56.363 に答える
0

while ループのブレースを閉じていません。

コードをインデントすると、この種のものを見つけるのがずっと簡単になります!

于 2012-10-05T23:12:37.223 に答える