標籤:
網站在進行新使用者註冊時,都會將使用者的註冊資訊存入資料庫中,需要的時候再進行提取。今天寫了一個簡單的執行個體。主要完成以下幾點功能:(1)使用者進行註冊,實現密碼重複確認,驗證碼校對功能。(2)註冊成功後,將使用者進行插入資料庫中進行儲存。(3)將資料庫表中資料進行提取,並列印。1.註冊表單在以前的幾篇部落格中,分享過註冊及登入表單的代碼。這次的代碼,大致相同,只是略有變化。僅作為執行個體探討<html> <head> <title>註冊頁面</title> <meta content-type:"text/html" charset="utf-8"> </head> <body> <h1>新使用者註冊</h1> <hr> <form method="post" action="regsubmit.php"> <table> <tr> <td>請輸入使用者名稱:<input type="text" name="username"></td> </tr> <tr> <td>請輸入密碼: <input type="password" name="password"></td> </tr> <tr> <td>請確認密碼: <input type="password" name="repassword"></td> </tr> <tr> <td>請輸入驗證碼:<input type="text" name="vcode"><img src="regauth.php"></td> </tr> <tr> <td><input type="submit" value="註冊"> <input type="reset" value="重設"></td> </tr> </table> </form> </body></html>2.驗證碼頁面<strong><span style="font-family:KaiTi_GB2312;font-size:18px;"><?php header("content-type:text/html charset=utf-8"); //開啟session session_start(); //準備畫布 $im=imagecreatetruecolor(50,25); //準備顏料 $black=imagecolorallocate($im,0,0,0); $gray=imagecolorallocate($im,200,200,200); //背景填充 imagefill($im,0,0,$gray); //文字置中 $x=(50-10*4)/2; $y=(25-5)/2+5; //添加幹擾素 for($i=0;$i<50;$i++){ imagesetpixel($im,mt_rand(0,50),mt_rand(0,25),$black); } //準備文字 $arr=array_merge(range(0,9),range(‘a‘,‘z‘),range(‘A‘,‘Z‘)); shuffle($arr); $str=implode(array_slice($arr,0,4)); //把$str放入session中,方便所有頁面中調用 $_SESSION[‘vstr‘]=$str; $file="../fonts/simsun.ttc"; imagettftext($im,15,0,$x,$y,$black,$file,$str); //輸出到瀏覽器上或儲存起來 header("content-type:image/png"); imagepng($im); //關閉畫布 imagedestory($im);?></span></strong>對於驗證碼功能,在以前的一篇部落格中,曾進行詳細的講解過。這次代碼也基本直接拿過來用了,唯一升級了一點就是添加了幹擾素,使得驗證碼沒有乾巴巴的四個字元在哪裡。用到了imagesetpixel()函數,用於製造一些幹擾點。具體使用方法請查看php手冊。3.提交頁面(資料提取頁面)<?php header("content-type:text/html;charset=utf-8"); //開啟session session_start(); //將驗證碼與輸入框中字串都轉為小寫 $code=strtolower($_POST[‘vcode‘]); $str=strtolower($_SESSION[‘vstr‘]); //接收表單傳遞的使用者名稱和密碼 $name=$_POST[‘username‘]; $pwd=$_POST[‘password‘]; $repwd=$_POST[‘repassword‘]; //判斷密碼是否一致 if($pwd!=$repwd){ echo"<script>alert(‘兩次密碼輸入不一致,請重新輸入‘);</script>"; echo"<script>location=‘regform.html‘</script>"; }else{ //判斷驗證碼是否正確 if($code!=$str){ echo "<script>alert(‘驗證碼輸入錯誤,請重新輸入‘);</script>"; echo"<script>location=‘regform.html‘</script>"; }else{ //通過php串連到mysql資料庫 $conn=mysql_connect("localhost","",""); //選擇資料庫 mysql_select_db("test"); //設定用戶端和串連字元集 mysql_query("set names utf8"); //通過php進行insert操作 $sqlinsert="insert into t1(username,password) values(‘{$name}‘,‘{$pwd}‘)"; //通過php進行select操作 $sqlselect="select * from t1 order by id"; //添加使用者資訊到資料庫 mysql_query($sqlinsert); //返回使用者資訊字元集 $result=mysql_query($sqlselect); echo "<h1>USER INFORMATION</h1>"; echo "<hr>"; echo "<table width=‘700px‘ border=‘1px‘>"; //從結果中拿出一行 echo "<tr>"; echo "<th>ID</th><th>USERNAME</th><th>PASSWORD</th>"; echo "</tr>"; while($row=mysql_fetch_assoc($result)){ echo "<tr>"; //列印出$row這一行 echo "<td>{$row[‘id‘]}</td><td>{$row[‘username‘]}</td><td>{$row[‘password‘]}</td>"; echo "</tr>"; } echo "</table>"; //釋放串連資源 mysql_close($conn); } }?>這個頁面的主要作用完成了最重要的幾個功能。將表單提交的資料都存入變數,然後進行密碼和驗證碼的判斷,都正確以後,將使用者資訊存入資料庫並將資料庫存放使用者資訊的表中所有資料提取列印出來。說白了,後半句就是資料存入和提取。代碼中注釋寫的相當的清楚了,基本每個用處都涉及到了。但還是有些容易疏忽的點要指出來:<1>串連資料庫的函數mysql_connect("localhost","username","password")。其中的使用者名稱和密碼,依據大家自己的配置進行編寫,我的資料庫懶得加密所以就都為空白了。<2>資料插入資料庫時$sqlinsert="insert into t1(username,password) values(‘{$name}‘,‘{$pwd}‘)";values(‘‘,‘‘)一定要加單引號(外層加了雙引號,裡面只能用單引號),因為本身資料就是字串,不能直接寫個變數就完事了。如果不加單引號,$name和$pwd變數解析以後變成幾個字元,不在引號內,誰認識誰呀。必然會報錯。<3>列印提取資料時,用到了while迴圈。裡面的mysql_fetch_assoc()函數提取後返回的數組,下標就是資料所屬欄位名。相似功能的函數還有mysql_fetch_array(),mysql_fetch_row(),mysql_fetch_field()。具體使用請看需求,一般來說mysql_fetch_assoc()比較的常用。
PHP執行個體 表單資料插入資料庫及資料提取 使用者註冊驗證