web編程之註冊以及登錄驗證模塊(PHP+mysql)

</pre>                                              註冊以及登錄驗證模塊</h1><h2>一,用戶信息表的設計</h2><div>1,設計用戶表user表如下:</div><div></div><div><img src="https://img-blog.csdn.net/20140622201650296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjMyNzEwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="top" alt="" /></div><div></div><div></div><div>2, 此處註冊頁面有一個form表單,用JS函數做一個有效性的檢驗。</div><div></div><div></div><div><pre name="code" class="html"><form  name="send" method="post" action="register.php"  onSubmit="check()">
..............
<script language="JavaScript">
function check()
{
    if (document.getElementByName(username).value=="")
   {
    alert("請輸入用戶名");
    return false;
   }
if(document.getElementByName(email).value.indexOf("@")==-1)
  {
   alert("請輸入有效地Email");
   return false;
  }
}
</script>






3,用戶登錄頁面同上,一個form 表單,再用js做有效性檢驗。

簡略代碼如下:

<html>
    <body>
        <form name = "send"  onSubmit="check()">
            <input name="pwd" type="password" >
            <input name="submit" type="submit" >
        </form>
    </body>
    
</html>

<script language="javascript">
function check()
    {
     if(document.send.pwd.value=="")
     {
         alert("密碼爲空");
         return false;     
     }    
    }
</script>

4,對錶單提交信息做驗證有兩種方式,一種是在服務器端驗證,一種是客戶端驗證。由於服務器端驗證需要往返於服務器與客戶端之間,所以大都是在瀏覽器端排除很多輸入錯誤,減輕服務器負擔。而,很多頁面基本都有表單的輸入,所以可以寫一個通用的JS過濾函數文件,需要時只需加載該文件即可。
      代碼如下(去掉字符串頭部和尾部的空格):
        
<script language="javascript">
    class MyString(str)
       {
         this .str=str;
           //去掉串頭部空格
           function ltrim(str)
             {
               var i=0;
               while(str.charAt(i)==" ")
                  {
                   i++;
                   }
                 return str.substring(i,str.length);
             }
           //去掉串尾部空格
           function  rtrim(str)
              {
                var i=str.length;
                while(str.charAt(i)==" ")
                   {
                     i--;
                   }
                return str.substring(0,i+1)
              }
           //去掉串頭尾部空格
           function trim(str)
               {
                 return ltrim(rtrim(str));
               }
       }    
    
</script>

5,服務端的數據有效性驗證:包括:正則表達式判斷,用戶名排重檢測,SQL注入驗證
   1)正則表達式判斷(PHP)
  PHP中常用的正則表達式判斷函數有以下幾個:
   1,規則匹配 int preg_match('/ hello/', $string)  當有符合的匹配時返回1,否則返回0
   2,規則替換  preg_replace()  詳見http://www.php100.com/cover/php/1927.html
   <?php
$string 
'April 15, 2003';
$pattern '/(w+) (d+), (d+)/i';
$replacement '${1}1,$3';
echo 
preg_replace($pattern$replacement$string);
?>

以上例程會輸出:

April1,2003

    3,規則分割 preg_split()可以將整段字符串按匹配的正則表達式分割成一兩個或更多字符的多段,該函數返回一個子串數組。注意與explode(),str_split()區分
   
<?php
//使用逗號或空格(包含" ", \r, \t, \n, \f)分隔短語
$keywords preg_split("/[\s,]+/""hypertext language, programming");
print_r($keywords);
?>

以上例程會輸出:

Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
)
   2) SQL注入驗證,需要注意以下兩點:1,遵循最小權限原則,即賦予連接數據庫的用戶儘可能小的權限。2,儘可能的過濾有客戶端提交的可疑的非法數據。要防範SQL注入,實際上只要屏蔽一些SQL命令以及關鍵字即可。
<?php>
  function checkIlleagalWord()
    {
        
      //定義不允許提交的SQL命令以及關鍵字  
      $words=array() ;
      $words[]="add";
      $words[]="count";
      $words[]="create";
      $words[]="delete";
      $words[]="drop";
      $words[]="from";
      $words[]="grant";
      $words[]="insert";
      $words[]="select";
      $words[]="update";  
      //判斷提交的數據中是否存在以上關鍵字,$_REQUEST中含有所有提交數據
        foreach($_REQUEST as $strGot)
           {
             $strGot=strtolower($strGot); //專爲小寫
             foreach($words as $word)
                {
                  if(strstr($strGot,$word))
                     {
                      echo "您輸入的內容含有非法字符";
                      exit();
                     }
                }
           
           
           }
    }
    
    checkIlleagalWord();  //在本文件被包含時即自動調用
    
</php>

   3)標記登錄狀態:用戶登錄成功後,利用session設置一個全局變量,如:
    $_SESSION['login']="true";$_SESSION['user']=$username;
   這樣判斷用戶是否登錄只需判斷$_SESSION['login']是否存在。
     if(empty($_SESSION['login']))
        {echo "您還沒有登陸。";exit();}

6,常用正則表達式 (摘自http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html)






                            








































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章