2012-06-05 307 views
0

我想編寫一個登錄腳本,用戶輸入電子郵件ID和密碼,並在電子郵件和密碼都正確的情況下轉到其他頁面。 此外,如果電子郵件和密碼是正確的;這些值被存儲在數據庫中。php sql登錄腳本

這裏就是整個校正後的工作代碼:

<?php 
    if($_POST['submit']){ 
     $email = protect($_POST['email']); 
     $password = protect($_POST['password']); 
     $md5password=MD5($password); 

     if(!$email || !$password){ 
      echo '<span style="color: red;" /><center>You need to fill in your <b>User Name</b> and <b>Password</b>!</center></span>'; 
     }else{ 
      $res = mysql_query("SELECT * FROM `employer` WHERE `email` = '".$email."'"); 
      $num = mysql_num_rows($res); 

      if($num == 0){ 
       echo '<span style="color: red;" /><center>The <b>E Mail ID</b> you supplied does not exist!</center></span>'; 
      }else{ 
      $res = mysql_query("SELECT * FROM `employer` WHERE `email` = '".$email."' AND `password` = '".$md5password."'"); 
      $num = mysql_num_rows($res); 

      if($num == 0){ 
       echo '<span style="color: red;" /><center>The <b>Password</b> you supplied does not match the one for that E Mail ID!</center></span>';}else{ 
       $row = mysql_fetch_assoc($res); 

       $_SESSION['uid'] = $row['id']; 
       echo "<center>You have successfully logged in!</center>"; 

       $time = date('U')+50; 
       mysql_query("UPDATE `employer` SET `online` = '".$time."' WHERE `id` = '".$_SESSION['uid']."'"); 
       mysql_query("UPDATE employer (date) VALUES (NOW())"); 

       header('Location: loggedin_employer.php'); 
       } 
      } 
     } 
    } 
?> 
+0

給我們展示了一些代碼。 – pixeline

+3

你想喝杯茶嗎? – Benjamin

+1

聽起來像個好主意。我同意。 – Mike

回答

6

有一個教程here等幾十個地方。

但是你查看教程,檢查出OWASP Authentication cheat sheet之前。

太多人構建不安全的系統。 不要成爲那些傢伙之一。 OWASP是一個很好的資源,所有的Web開發人員應該非常熟悉。

而且當你在這,你可能要考慮Jeff Atwood's excellent advice。從傑夫的文章

摘錄:

它總是心疼我大大的 整個互聯網上的每一個rinky,丁克網站要求我創建一個特殊的用戶名,只是他們的密碼 。是的,如果你是一個怪胎阿爾法,那麼你很可能是使用特殊的軟件和USB密鑰 組合從你的工具皮帶 產生安全的用戶名和密碼的幾十個網站,你 頻繁。但對於廣大而沉默的大多數普通人來說,他們知道安全性並不重要,但最重要的是希望方便,這意味着一個問題:一遍又一遍地使用相同的用戶名和密碼。它也是 ,可能也是一個簡單的密碼。

傑夫還有另外一篇關於OpenId的文章,值得在開始你的探索之前閱讀。

最後,或許也是最重要的是,Don't Store Your Passwords Incorrectly!鑑於大多數人在任何地方使用相同的用戶名/密碼,如果您的網站被攻破,那麼所有的帳戶可能會受到影響。

enter image description here

+1

真的是一個真棒帖子! – xan

+0

請不要低估我的問題。我忘了粘貼我的代碼匆忙。 – xan

1

這可能不是最好的方式,但它是我做到了。

與登錄表單創建一個簡單的HTML頁面,當他們按提交,送他們進入數據庫。如果存在,則將您創建的全局會話varibale(假設它被稱爲validUser)設置爲true;然後,使用javascript將它們發送到主頁。爲了以防萬一,他們嘗試沒有登錄訪問的頁面,把下面的代碼片段在每個安全頁面的頂部:

<?php 
    if (!$_SESSION["validUser"]) 
     // redirect them to the login page however you want... 
?> 

的片段基本上只是檢查,看看是否validUser變量設置爲true,這它應該有,如果他們已經登錄。

+0

謝謝,我解決了。前一陣我很苦惱。但是要感謝SO&你的人。 :) – xan