2016-05-14 50 views
0

我對web開發非常陌生,現在正在開展一個學校項目。 我的登錄碼有問題,但我無法弄清楚它是什麼。 當我提交表單時,頁面似乎只是重新加載,並且沒有設置會話。這個php登錄頁面有什麼問題?

我的縮短登錄頁面:

<?php include "connect.php"; 

if (isset($POST['login'])) { 
    $user_email_username = mysqli_real_escape_string($link, $_POST['email_username']); 
    $user_password = mysqli_real_escape_string($link, $_POST['password']); 

    $email_username_query = mysqli_query($link, "SELECT * FROM User WHERE email='$user_email_username' OR username='$user_email_username'"); 

    if (mysqli_num_rows($email_username_query) == 0) { 
     $not_registered_error = "It looks like you still don't have an account. <a href=\"signup.php\">Sign up</a>."; 
    } else { 
     $row = mysqli_fetch_array($email_username_query); 
     if (sha1($user_password) != $row['password']) { 
      $wrong_password_error = "The password you submitted is wrong."; 
     } else { 
      $_SESSION['user_id'] = $row['idUser']; 
      $_SESSION['user_name'] = $row['name']; 
      $_SESSION['user_username'] = $row['username']; 
      header("Location: index.php"); 
     } 
    } 
} 
?> 
<!--metadata--> 
<div class="container"> 
    <div class="row"> 
     <div class="col-md-6 col-md-offset-3"> 
      <div id="login" class="login-panel panel panel-default"> 
       <div class="panel-body"> 
        <form role="form" method="post" action="login.php"> 
         <fieldset> 
          <!--login form--> 
         </fieldset> 
         <?php if (isset($not_registered_error)) { 
          echo "<div class=\"alert alert-danger\" role=\"alert\">" . $not_registered_error . "</div>"; 
         } 
         if (isset($wrong_password_error)) { 
          echo "<div class=\"alert alert-danger\" role=\"alert\">" . $wrong_password_error . "</div>"; 
         } ?> 
         <p>Haven't joined yet? <a href="signup.php">Sign up</a>.</p> 
        </form> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
//... 

不像我在網上找到的大多數例子,我想在這裏完成是有計劃要弄清楚的用戶名(或電子郵件)是否不存在或該用戶名的密碼錯誤。 我寫的註冊程序非常棒。問題本身已經足夠長了,所以我沒有添加signup.php。讓我知道它是否有幫助。 將mysql用於本地數據庫並使用Bootstrap進行樣式設置。

我知道這個問題對許多人都沒有幫助,因爲它被問到,但我不知道如何更好地制定它。

謝謝大家:d

+0

*不像你找到最例子*?這似乎是登錄的基礎...... – jeroen

+0

我的意思是,大多數示例使用這樣的查詢:「SELECT * FROM用戶WHERE電子郵件='$ user_email_username'和密碼='$密碼'」;這種方式,你不能告訴問題是在電子郵件提交或在密碼... –

+0

瑞安文森特,謝謝:) –

回答

7
if (isset($POST['login'])) { 

需要是:

if (isset($_POST['login'])) { 
+0

還在學習堆棧溢出:P – iGNEOS

+0

這是一個疏忽......對不起 –