• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 淺談php用戶身份認證

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    大家在瀏覽網站的時候,常常會遇到某些網頁會需要用戶和密碼的驗證,這就需要我們編寫相應的身份驗證程序來實現此功能。以下是我的一些學習過程和體會,希望對大家有所幫助。 (一)、基于HTTP驗證的單用戶身份驗證: 我們利用函數header()發送HTTP標頭強制
        大家在瀏覽網站的時候,常常會遇到某些網頁會需要用戶和密碼的驗證,這就需要我們編寫相應的身份驗證程序來實現此功能。以下是我的一些學習過程和體會,希望對大家有所幫助。
    (一)、基于HTTP驗證的單用戶身份驗證:
        我們利用函數header()發送HTTP標頭強制進行驗證,客戶端瀏覽器則彈出要輸入用戶名和密碼的對話框,這時客戶端的用戶輸入的信息,被傳送到服務端之后保存為$PHP_AUTH_USER, $PHP_AUTH_PW這兩個全局變量中。利用這些變量,就可以進行用戶和密碼的驗證。
    下面的程序可以進行簡單的身份驗證
      <?
      if ($PHP_AUTH_USER!='Jane'||$PHP_AUTH_PW!='123456')
    {
      Header("WWW-Authenticate: Basic realm=\"爆米花登陸\"");
      Header("HTTP/1.0 401 Unauthorized");
      echo "身份驗證錯誤!";
      exit;
    }
    ?>
    (注意:使用HTTP驗證的時候,必須以Apache的模塊方式運行,如果使用的是CGI模式的PHP則無法實現基于HTTP的驗證功能。)
    (二)基于http的多用戶驗證  
      上次給大家介紹了基于http的單用戶驗證,這次利用mysql數據庫
    儲存多用戶數據,進行多用戶驗證。
    1、首先建立mysql數據庫
    mysql>create database user;        //建立數據庫user
    mysql>use user;                    //打開數據庫user
    mysql>create table user_data(      //建立數據表user_data
    id int(9) not null aoto_increment, //id為自動增加整數字段
    username varchar(10) not null,     //用戶姓名
    password varcher(10) not noll,     //密碼
    primary key(id);                   //設id為主鍵
    );
    2、身份驗證程序
    <?php
    $error = "/www/error/error.php";
    if ($PHP_AUTH_PW=="")                //如密碼為空
    {              
    Header("WWW-Authenticate: Basic realm=\"用戶登陸\"");
    Header("HTTP/1.0 401 Unauthorized"); //驗證
    include($error);                     //定向error,php文件
    exit;
    }
    else
    {
    mysql_connect("localhost", "root", "1234");     //連接數據庫
    $result = mysql_db_query("user","select password
    from user_data where username='$PHP_AUTH_USER'");
                               //送查詢字符串到mysql數據庫
    $row = mysql_fetch_array($result); //返回數組資料
    $passwd = $row[0];
    mysql_close($db_id);               //關閉數據庫  
    if ($PHP_AUTH_PW!=$passwd)      //密碼驗證
    {
    Header("WWW-Authenticate: Basic realm=\"用戶登陸\"");
    Header("HTTP/1.0 401 Unauthorized");
    include($error);
    exit;
    }
    }   
        前面講了基于http多用戶驗證,我們采用的mysql數據庫,在密碼驗證方面孤狼大哥建議非常好,密碼驗證的時候,最好在數據庫中進行,所以程序為:select id from user where user='$PHP_AUTH_USER' and password='$PHP_AUTH_USER'.
       大家好,前面幾節講了這個基于http單用戶和多用戶的密碼驗證的編寫程序的方法,這種方法對于需要身份驗證的頁面,是最好不過的了。但是,這種驗證不能在cgi模式的php,iis下的php使用。所以,我們就可以利用session在不同頁面之間來保存用戶信息,達到驗證的目的。
       session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間。session功能是它通過php腳本中定義全局變量的方法,使得這個全局變量在同一session中所有的php腳本都有效。
    以下為用戶登陸表單處理程序:
    <?
    $db=mysql_connect("localhost","root","1234");
                                      //連接數據庫服務器
    mysql_select_db("Jane",$db);
                                      //連接數據庫  
    $result=mysql_query("SELECT * FROM user where name='$name' and password='$pass'",$db);
                             //送查詢是字符串到數據庫         
    if ($myrow = mysql_fetch_row($result))
                             //如果記錄指針為真
    {
    session_start();         //session初始化   
    session_register("user");//注冊user變量
    $user=$myrow["user"];
    echo "驗證成功!";
    }
    else
    {
    echo"身份驗證失敗!";
    }
    ?>
    將下面的程序加入要保護的頁面開頭:
    <?
    session_start();
    if (!session_is_registered("user"))//檢查session變量是否注冊
    {
    echo "驗證失敗,屬非法登錄!";
    }
    else
    {
    ......

    }
    ?>

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>