php用户登录代码实例
实例一最基本的用户登录,跑到指定页面这个不安全,如果用户知道你这个地址就不需要登录了,实例二利用了session也是较常用的在操作页面加了session验证,但是无法记住下次登录,实例三就利用了session和cookie同时登录并可以自动记录下次自动登录功能。
我们先来看个最简单的实例,以下附简单的login.htm内容,代码如下:
< html > < body > < form name = "login" action = "login.php" method = post > 用户名 < input type = text name = "name" > < p > 密码 < input type = password name = "password" > < p > < input name = "log" type = submit value = "登录" > </ form > </ body > </ html >login.php内容如下:
<? error_reporting (0); $mysql_servername = "localhost" ; //主机地址 $mysql_username = "root" ; //数据库用户名 $mysql_password = "" ; //数据库密码 $mysql_database = "peng" ; //数据库 mysql_connect( $mysql_servername , $mysql_username , $mysql_password ); mysql_select_db( $mysql_database ); $name = $_POST [ 'name' ]; $passowrd = $_POST [ 'password' ]; if ( $name && $passowrd ){ $sql = "SELECT * FROM liuyanban WHERE name = '$name' and password='$passowrd'" ; $res = mysql_query( $sql ); $rows =mysql_num_rows( $res ); if ( $rows ){ header( "refresh:0;url=a.htm" ); //跳转页面,注意路径 exit ; } echo "<script language=javascript>alert('用户名密码错误');history.back();</script>" ; } else { echo "<script language=javascript>alert('用户名密码不能为空');history.back();</script>" ; } ?>下面还有一个我刚学php 是写的,代码如下:
< input name = "myname" type = "text" id = "myname" style = "border:solid 0px;" /> < input name = "mypass" type = "password" id = "mypass" style = "border:solid 0px;" />php代码如下:
<? session_start(); //这个一定要申明喽,给个小提示:在session之前不能有任何输出哦,在php.5以下的版本会有问题. $myname =get_value( 'myname' ,post); $mypass =get_value( 'mypass' ,post); if (!preg_match( "/^w+$/" , $myname ) || strlen ( $myname )<3 || strlen ( $myname )>15 ){ alert( '输入的用户名信息有误!用户名必须由数字下划线英语字母组成,长度为3-15个字符!' , '' ); } if (!preg_match( "/^w+$/" , $mypass ) || strlen ( $mypass )<6 || strlen ( $mypass )>15 ){ alert( '输和的用户密码!密码必须由数字下划线英语字母组成,长度为6-15个字符!' , '' ); } $sql = "select * from tbn where admin_name='$myname' and admin_pwd='" .md5( $mypass ). "'" ; $result =mysql_query( $sql ); if (mysql_num_rows( $result ) ){ $my =mysql_fetch_array( $result ); $_SESSION [ 'uid' ]= $myname ; //$_SESSION['auth']=return_auth($my['group_id']); //这里是因为用到用户组取得用户组的权限 header( "location:main.php" ); } else { alert( '提示:你输入的用户名与密码不一致!' , '' ); } ?>上面的实例我都只保存信息到了session下面来看个同时应用session和cookie来保存用户登录信息
1,数据库连接设备页面:connectvars.php, 代码如下:
<?php //数据库的地位 define( "" DB_HOST "" , "" 127.0.0.1 "" ); //用户名 define( "" DB_USER "" , "" root "" ); //口令 define( "" DB_PASSWORD "" , "" 19900101 "" ); //数据库名 define( "" DB_NAME "" , "" test "" ) ; ?>2、登录页面:logIn.php,代码如下:
<?php //插入连接数据库的相干信息 require_once "" connectvars.php "" ; //开启一个会话 session_start(); $error_msg = "" ; //若是用户未登录,即未设置$_SESSION[""user_id""]时,履行以下代码 if (!isset( $_SESSION [ "" user_id "" ])){ if (isset( $_POST [ "" submit "" ])){ //用户提交登录表单时履行如下代码 $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); $user_username = mysqli_real_escape_string( $dbc ,trim( $_POST [ "" username "" ])); $user_password = mysqli_real_escape_string( $dbc ,trim( $_POST [ "" password "" ])); if (! empty empty ( $user_username )&&! empty empty ( $user_password )){ //MySql中的SHA()函数用于对字符串进行单向加密 $query = "SELECT user_id, username FROM mismatch_user WHERE username = " "$user_username" " AND " . "password = SHA(" "$user_password" ")" ; $data = mysqli_query( $dbc , $query ); //用用户名和暗码进行查询,若查到的记录正好为一条,则设置SESSION和COOKIE,同时进行页面重定向 if (mysqli_num_rows( $data )==1){ $row = mysqli_fetch_array( $data ); $_SESSION [ "" user_id "" ]= $row [ "" user_id "" ]; $_SESSION [ "" username "" ]= $row [ "" username "" ]; setcookie( "" user_id "" , $row [ "" user_id "" ],time()+(60*60*24*30)); setcookie( "" username "" , $row [ "" username "" ],time()+(60*60*24*30)); $home_url = "" loged.php "" ; header( "" Location: "" . $home_url ); } else { //若查到的记录不合错误,则设置错误信息 $error_msg = "" Sorry, you must enter a valid username and password to log in. "" ; } } else { $error_msg = "" Sorry, you must enter a valid username and password to log in. "" ; } } } else { //若是用户已经登录,则直接跳转到已经登录页面 $home_url = "" loged.php "" ; header( "" Location: "" . $home_url ); } ?> <html> <head> <title>Mismatch - Log In</title> <link rel= "stylesheet" type= "text/css" href= "style.css" /> </head> <body> <h3>Msimatch - Log In</h3> <!--经由过程 $_SESSION [ "" user_id "" ]进行断定,若是用户未登录,则显示登录表单,让用户输入用户名和暗码--> <?php if (!isset( $_SESSION [ "" user_id "" ])){ echo "" <p class = "error" > "" . $error_msg . "" </p> "" ; ?> <!-- $_SERVER [ "" PHP_SELF "" ]代表用户提交表单时,调用自身php文件 --> <form method = "post" action= "<?php echo $_SERVER[" "PHP_SELF" "];?>" > <fieldset> <legend>Log In</legend> <label for = "username" >Username:</label> <input type= "text" id= "username" name= "username" value= "<?php if(!empty($user_username)) echo $user_username; ?>" /> <br/> <label for = "password" >Password:</label> <input type= "password" id= "password" name= "password" /> </fieldset> <input type= "submit" value= "Log In" name= "submit" /> </form> <?php } ?> </body> </html>3、登入页面,loged.php,代码如下:
<?php //应用会话内存储的变量值之前必须先开启会话 session_start(); //若是会话没有被设置,查看是否设置了cookie if (!isset( $_SESSION [ "" user_id "" ])){ if (isset( $_COOKIE [ "" user_id "" ])&&isset( $_COOKIE [ "" username "" ])){ //用cookie给session赋值 $_SESSION [ "" user_id "" ]= $_COOKIE [ "" user_id "" ]; $_SESSION [ "" username "" ]= $_COOKIE [ "" username "" ]; } } //应用一个会话变量搜检登录状况 if (isset( $_SESSION [ "" username "" ])){ echo "" You are Logged as "" . $_SESSION [ "" username "" ]. "" <br/> "" ; echo "" <a href= "logOut.php" > Log Out( "" . $_SESSION [ "" username "" ]. "" )</a> "" ; } /**在已登录页面中,可以哄骗用户的session如$_SESSION[""username""]、 * $_SESSION[""user_id""]对数据库进行查询,可以做很多多少很多多少工作*/ ?>4、刊出session与cookie页面,logOut.php(刊出后重定向到lonIn.php),代码如下:
<?php /**同时刊出session和cookie的页面*/ //即使是刊出时,也必须起首开端会话才干接见会话变量 session_start(); //应用一个会话变量搜检登录状况 if (isset( $_SESSION [ "" user_id "" ])){ //要清除会话变量,将$_SESSION超等全局变量设置为一个空数组 $_SESSION = array (); //若是存在一个会话cookie,经由过程将到期时候设置为之前1个小时从而将其删除 if (isset( $_COOKIE [session_name()])){ setcookie(session_name(), "" "" ,time()-3600); } //应用内置session_destroy()函数调用撤销会话 session_destroy(); } //同时将各个cookie的到期时候设为畴昔的某个时候,使它们由体系删除,时候以秒为单位 setcookie( "" user_id "" , "" "" ,time()-3600); setcookie( "" username "" , "" "" ,time()-3600); //location首部使浏览看重定向到另一个页面 $home_url = "" logIn.php "" ; header( "" Location: "" . $home_url ); ?>用户注册登录涉及到用户信息与数据库的交互,因此要特别注意用户提交的信息不能为非法信息,本例中注册部分已经使用正则表达式做了限制,对登录部分只简单使用了 htmlspecialchars() 处理,实际应用时可更严格一些。
本教程只是简单演示用户注册与登录的过程,其代码仅供学习参考,不可直接用于项目生产。
对于用户登录成功后采用 session 来管理,也可以采用 cookie 来管理,尤其对于有时限要求的情况。
为了提高用户体验,用户注册部分可以结合 AJAX 来检测用户输入的信息而不必等点击提交后再检测。
查看更多关于php用户登录代码实例 - 综合实例的详细内容...