PHP(10) 用戶登陸程序(版本2)

用戶登陸程序 ( 版本 2)
 
今天,咱們把咱們上一篇博文中的小項目作一個升級版本!
 
1、產生彩色的驗證碼
 
在上一篇文中,咱們產生了隨機的驗證碼, 可是咱們在有的網站上看到的驗證碼是彩色的,那麼,咱們怎麼來產生彩色的驗證碼呢?
 
若是要產生彩色的驗證碼,那麼就表明在網頁上的表現形式就是 1 A Q 9 這種形式了,那麼就表明網頁中的源代碼的表現也就只能爲 <span style=」color:rgb(x,y,z)」>x</span> !緣由很簡單,由於四個數字的顏色是不一樣的!固然,除了 span 標記,也能夠由其餘的標記來代替!如 b i strong em 等內聯標記!
 
咱們再來討論一個問題:若是有多個頁面都要使用隨機數的話,每一個頁面都寫這麼多代碼,這個工做量是可想而知的!那麼最好的解決方法就是:首先將其封裝成自定義函數,而且其存儲在某一個文檔內,而後,咱們想調用該函數的話,咱們只須要調用該文件就能夠了 ( 還記得包含文件嗎? )
 
好了,能夠工做了!
 
function   random()
 
{
 
       $chars = "0123456789";
 
       for($i=0;$i<4;$i++)
 
       {
 
              $char = substr($chars,rand(0,strlen($chars)-1),1);    
       
              $randChar .= "<span style=\"color:rgb(".rand(50,180).",".rand(50,180).",".rand(50,180).")\">" . $char . "</span>";
 
       }
 
       return $randChar;
 
}
 
 
如今咱們再將上面的函數來升一級,那就是:咱們已經將隨機數的長度固定了,最好的方法是咱們將系統的配置存儲在一個配置文件裏,由用戶來決定隨機數的長度!
 
好了,咱們來建立一個配置文件 ----config.include.php
 
$config[「random」][「length」] = 4;
 
那麼如今的問題就是如何將 $config[「random」][「length」] 的變量引入到函數內部,那就須要在函數內部添加 global 關鍵詞了!
 
那麼函數就變成了
 
function   random()
 
{
 
       global  $config;
       $chars = "01234567 89";
 
       for($i=0;$i<$config["random"]["length"];$i++)
 
       {
 
              $char = substr($chars,rand(0,strlen($chars)-1),1);   
        
              $randChar .= "<span style=\"color:rgb(".rand(50,180).",".rand(50,180).",".rand(50,180).")\">" . $char . "</span>";
 
       }
 
       return $randChar;
 
}
 
固然, RGB 顏色理論上的範圍爲 0 255 ,可是咱們通常的取值範圍爲 50-180 之間!
運行後的效果以下:
 
 
另外,咱們發現產生的驗證碼中存在相同的數字,若是我如今不想產生相同的數字,那該怎麼辦呢?當產生一個數字後,咱們就把產生的這個數字從原字符串中刪除就能夠了!
 
那麼函數就變成了 :
 
function   random()
 
{
 
       global  $config;
 
       $chars = "0123456789";
 
       for($i=0;$i<$config["random"]["length"];$i++)
 
       {
 
              $char = substr($chars,rand(0,strlen($chars)-1),1);
 
              $chars = str_replace($char,null,$chars);
 
              $randChar .= "<span style=\"color:rgb(".rand(50,180).",".rand(50,180).",".rand(50,180).")\">" . $char . "</span>";
 
       }
 
       return $randChar;
 
}
 
其效果以下:
 
 
2. 數據庫問題
 
在一個項目中會存在多個頁面都會操做數據庫的狀況,若是每一個頁面都去鏈接數據庫,狀況就會變成很繁瑣!根據隨機數的經驗,咱們也將其封裝成自定義函數!代碼以下:
 
<?php
 
function connect()
 
{
 
       global $config;
 
       $conn = mysql_connect($config["server"]["hostname"],$config["server"]["username"],$config["server"]["password"]);
 
       mysql_select_db($config["server"]["database"]);
 
       return $conn;
 
}
 
function query($sql)
 
{
 
       $result = mysql_query($sql);
 
       return $result;
 
}
 
function getRowsNum($result)
 
{
 
       $rowsNum = mysql_num_rows($result);
 
       return $rowsNum;
 
}
 
function getFieldsNum($result)
 
{
 
       $fieldsNum = mysql_num_fields($result);
 
       return $fieldsNum;
 
}
 
function getFieldName($result,$fieldIndex)
 
{
       $fieldName = mysql_field_name($r esult,$fieldName);
 
       return  $fieldName;
 
}
 
function getRow($result)
 
{
 
       $row = mysql_fetch_assoc($result);
 
       return $row;
 
}
 
function checkUserLogin($sql)
 
{
 
    $result = query($sql);
 
    $rowsNum = getRowsNum($result);
 
    $userLogined = $rowsNum ? true : false;
 
    return $userLogined;
 
}
 
function freeResult($result)
 
{
 
       return mysql_free_result($result);
 
}
 
function close()
 
{
 
       return mysql_close();
 
}
 
?>
 
項目的運行結果以下
 
 
 
 
源代碼在附件裏!!!
相關文章
相關標籤/搜索