• <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-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 20次 | 進入軟件測試論壇討論

    領測軟件測試網     大家在瀏覽網站的時候,常常會遇到某些網頁會需要用戶和密碼的驗證,這就需要我們編寫相應的身份驗證程序來實現此功能。以下是我的一些學習過程和體會,希望對大家有所幫助。
    (一)、基于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/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>