2013-12-10 59 views
0

我試圖讓一個PHP登錄,使之出現註銷按鈕如果登錄並顯示登錄表單,如果沒有登錄,這是形式和按鈕顯示代碼:PHP沒有檢測到會話變量值正確

<?php if ($_SESSION["login"] == "1") { ?> 
     <form class="form-signin" method="post"> 
      <h2 class="form-signin-heading">You are signed in!</h2> 
      <input type="hidden" name="op" value="logout"> 
      <button class="btn btn-lg btn-primary btn-block" type="submit">Log out</button> 
     </form> 
    <?php } else { ?> 
     <form class="form-signin" method="post"> 
      <h2 class="form-signin-heading">Sign in</h2> 
      <input type="text" class="form-control" placeholder="Username" name="user" required="" autofocus="" style="margin:2px 0"> 
      <input type="password" class="form-control" placeholder="Password" name="pass" required="" style="margin:2px 0"> 
      <input type="hidden" name="op" value="login"> 
      <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button> 
     </form> 
    <?php }; ?> 

這裏是啓動會話並設置變量登錄代碼:

if (isset($_REQUEST["user"]) && isset($_REQUEST["pass"]) && isset($_REQUEST["op"]) && $_REQUEST["op"] == "login") { 
       $user = $_REQUEST["user"]; 
       $pass = $_REQUEST["pass"]; 
       $con = mysql_connect("localhost", USER, PASS); 
       if (!$con) { 
        die("Could not connect: " . mysql_error()); 
       } 
       mysql_select_db("reddit", $con); 
       $sql = mysql_query("SELECT username from t120937_users WHERE t120937_users.username = '" . $user . "' AND t120937_users.password = '" . $pass . "';"); 
       if (mysql_num_rows($sql) > 0) { 
        session_start(); 
        $_SESSION["login"] = "1"; 
        header("Location: /~rauno.sams/"); 
       } else { 
        echo "Incorrect login information :("; 
       } 
       mysql_close($con); 
      } 
      if(isset($_REQUEST["op"]) && $_REQUEST["op"] == "logout") { 
       $_SESSION["login"] = ""; 
       session_destroy(); 
       header("Location: /~rauno.sams/"); 
      } 

然而,顯示登錄表單每次和我不知道爲什麼。

+0

無關,但你可以做'if(isset($ _REQUEST [「user」],$ _REQUEST [「pass」],$ _REQUEST [「op」]] ))'而不是每個變量再次調用'isset'。 – dave

+0

感謝您的提示! – Praxbyr

回答

0

您的選擇語句有額外的;在裏面。所以你的mysql_num_rows是0,這是不會登錄你。

+0

這仍然不會使登出按鈕出現,而不是登錄表單。 – Praxbyr

+0

在PHP中,這是我通常做我的選擇查詢: '「SELECT x,y,z FROM table_abc WHERE x ='$ xxx'」;' 也許你的標記是不正確的? – ChaseC