亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

登入功能(三)

之前的準(zhǔn)備工作及登入的前端頁面都做好了,現(xiàn)在我們來介紹登入的功能程式碼。

先建立一個login.php的文件,用來寫我們的登入php程式碼,

#第一步就是要先連接資料庫,不然就取得不到資料庫裡的信息,程式碼如下:

<?php
$link = mysqli_connect("localhost","root","root","joke");//注意后面的這幾個參數(shù),服務(wù)器名,數(shù)據(jù)庫的用戶名,密碼,數(shù)據(jù)庫名。密碼沒有可以不填
if (!$link) {
    die("連接失敗: " . mysqli_connect_error());
}
?>

第二步:不管是使用者名稱也好還是密碼也好,我們都是透過前臺的表單傳遞值到php程式中,然後再進(jìn)行驗(yàn)證,所以,我們接下來就是要先要取得前臺表單傳遞過來的值是多少,才能去驗(yàn)證它的對和錯,取得值的程式碼如下:

<?php
$username = $_POST['username'];
$password = $_POST['password'];
?>

我們?yōu)槭颤N是post而不是get呢?這就需要看下我們前臺的表單了,看form標(biāo)籤中的信息:

<form action="login.php" method="post">
...
</form>

action是講信息提交到哪裡,method是通過什麼方式傳遞,這裡我們是post方法

第三步:我們?nèi)〉玫街抵峋托枰ヲ?yàn)證這個值和資料庫中的是不是一樣的,必須都相同才可以登錄,驗(yàn)證程式碼如下:

<?php
$sql="select * from login where username = '{$username}' and password  = '{$password}'";//先從數(shù)據(jù)庫中查詢戶名和密碼
$rs=mysqli_query($link,$sql); //執(zhí)行sql查詢
$row=mysqli_fetch_array($rs);//將查詢的結(jié)果放入變量$row中
?>

第四步:查詢到結(jié)果之後,我們就要開始進(jìn)行驗(yàn)證了:

<?php
if($row) { 
     if ($username == $row['username'] && $password == $row['password']) //判斷表單獲取的用戶名,密碼和數(shù)據(jù)庫中的是否一致
     { 
         echo "登陸成功,正在為你跳轉(zhuǎn)至后臺頁面";
         header("location:index.html");//如果一致會跳轉(zhuǎn)到后臺的首頁
     }
 }else{
     echo "賬號或密碼錯誤" . "<br/>";
     echo "<a href='login.html'>返回登陸頁面</a>";//如果不一致,將重新跳轉(zhuǎn)至登錄頁面重新登錄
 }
?>

好像漏了點(diǎn)什麼?

...

...

驗(yàn)證碼好像沒說....

最後我們來說下驗(yàn)證碼。

我們需要一個產(chǎn)生驗(yàn)證碼的程序,先建立個PHP文件,叫passcode.php,用來寫驗(yàn)證碼產(chǎn)生。

下面我將驗(yàn)證碼的詳細(xì)寫法寫出來,每個重點(diǎn)難點(diǎn)都會有註釋,方便你們?nèi)ダ斫?,注意,看碼:

<?php
//設(shè)置開啟session
session_start();
$image = imagecreatetruecolor(100, 30);    //設(shè)置驗(yàn)證碼圖片大小的函數(shù)
//設(shè)置驗(yàn)證碼顏色,用法:imagecolorallocate(int im, int red, int green, int blue);
$bgcolor = imagecolorallocate($image,255,255,255); //#ffffff
//區(qū)域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的區(qū)域著色,col 表示欲涂上的顏色
imagefill($image, 0, 0, $bgcolor);
//設(shè)置變量
$captcha_code = "";
//生成隨機(jī)數(shù)字
for($i=0;$i<4;$i++){
    //設(shè)置字體大小
    $fontsize = 10;
    //設(shè)置字體顏色,隨機(jī)顏色
    $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));      //0-120深顏色
    //設(shè)置數(shù)字
    $fontcontent = rand(0,9);
    //10>.=連續(xù)定義變量
    $captcha_code .= $fontcontent;
    //設(shè)置坐標(biāo)
    $x = ($i*100/4)+rand(5,10);
    $y = rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
//存到session
$_SESSION['authcode'] = $captcha_code;
//增加干擾元素,設(shè)置雪花點(diǎn)
for($i=0;$i<200;$i++){
    //設(shè)置點(diǎn)的顏色,50-200顏色比數(shù)字淺,不干擾閱讀
    $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));
    //imagesetpixel — 畫一個單一像素
    imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
}
//增加干擾元素,設(shè)置橫線
for($i=0;$i<4;$i++){
    //設(shè)置線的顏色
    $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));
    //設(shè)置線,兩點(diǎn)一線
    imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);
}
//設(shè)置頭部,image/png
header('Content-Type: image/png');
//imagepng() 建立png圖形函數(shù)
imagepng($image);
//imagedestroy() 結(jié)束圖形函數(shù) 銷毀$image
imagedestroy($image);
?>

如果想形象的具體的了解每行程式碼的功能,你可以講程式碼更改(盡量與之前差異很大,這樣才明顯),然後看其變化,和之前會有什麼不一樣,這樣,你就知道這行程式碼的作用了。

接下來就是驗(yàn)證碼的驗(yàn)證了,看碼:

<?php
//判斷驗(yàn)證碼是否填寫并且是否正確
 if(!$_POST['code']){            //首先判斷前端頁面是否有驗(yàn)證碼的值傳過來,沒有就提示驗(yàn)證碼不能為空
     echo('驗(yàn)證碼不能為空');
     return;
 }else if($_POST['code']!=$_SESSION['authcode']){   //如果有,判斷是否正確
     echo('驗(yàn)證碼不正確');
     return;
 }
?>

好了,這就是我們的完整的一個登陸功能。

繼續(xù)學(xué)習(xí)
||
<?php session_start(); header("content-type:text/html;charset=utf-8"); //連接數(shù)據(jù)庫 $link = mysqli_connect("localhost","root","root","joke"); if (!$link) { die("連接失敗: " . mysqli_connect_error()); } $username =$_POST['username']; $password = $_POST['password']; //判斷驗(yàn)證碼是否填寫并且是否正確 if(!$_POST['code']){ echo('驗(yàn)證碼不能為空'); return; }else if($_POST['code']!=$_SESSION['authcode']){ echo('驗(yàn)證碼不正確'); return; } $sql="select * from login where username = '{$username}' and password = '{$password}'"; $rs=mysqli_query($link,$sql); //執(zhí)行sql查詢 $row=mysqli_fetch_array($rs); if($row) { // 用戶存在; if ($username == $row['username'] && $password == $row['password']) { //對密碼進(jìn)行判斷。 echo "登陸成功,正在為你跳轉(zhuǎn)至后臺頁面"; header("location:index.html"); } }else{ echo "賬號或密碼錯誤" . "<br/>"; echo "<a href='login.html'>返回登陸頁面</a>"; } // 我這里沒有數(shù)據(jù)庫,所以右邊會顯示連接失敗。 ?>
提交重置程式碼