好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php用户登录代码实例 - 综合实例

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用户登录代码实例 - 综合实例的详细内容...

  阅读:47次