用戶登陸程序
(
版本
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();
}
?>
項目的運行結果以下
或
源代碼在附件裏!!!