php通过会话控制实现身份验证实例

2019-05-02 18:46:58丽君

<?php
session_regenerate_id();//重置 session  字符
$session_info=array('uid'=>$uid,'session'=>session_encrypt(session_id().time()));
//下一步将,$session_info 存到 C 中
?>

下面是php通过会话控制实现身份验证实例

身份验证应用程序主体:authmain.PHP

<?php 
//开启一个会话 
session_start(); 
 
if((!isset($userid))||(!isset($password))) { 
  $userid=$_POST['userid']; 
  $password=$_POST['password']; 
//连接数据库 
$db_conn=new mysqli("localhost", "root", "","auth"); 
if(mysqli_connect_errno()){ 
  echo '连接数据库失败:'.mysqli_connect_error(); 
  exit(); 
} 
//执行SQL查询语句 
$query="SELECT * FROM authorized_users WHERE name='".$userid."' and password=sha1('".$password."')"; 
$result=$db_conn->query($query); 
if($result->num_rows>0){ 
  //注册一个会话变量 
  $_SESSION['valid_user']=$userid; 
} 
//断开数据库连接 
$db_conn->close(); 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="UTF-8"> 
  <title>身份验证</title> 
</head> 
<body> 
<h1>主页</h1> 
<?php 
//判断用户是否已经登录 
if(isset($_SESSION['valid_user'])){ 
  echo $_SESSION['valid_user'].',您好,你已经登录'; 
  echo '<a href="logout.php">退出登录</a><br/>'; 
}else{ 
  if(isset($userid)){ 
    echo '您没有登录成功'; 
  }else{ 
    echo '您还没有登录<br/>'; 
  } 
  ?> 
  <form method="post" action="authmain.php"> 
    <p>用户名:<input type="text" name="userid"></p> 
 
    <p>密码:<input type="password" name="password"></p> 
 
    <p><input type="submit" name="submit" value="登录"></p> 
  </form> 
<?php 
} 
?> 
<br/> 
<a href="members_only.php">登录进入</a> 
 
</body> 
</html> 

网站的有效用户检查:members_only.php

<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="UTF-8"> 
  <title>身份验证</title> 
</head> 
<body> 
<?php 
//启用会话 
session_start(); 
 
echo '<h1>会员有效</h1>'; 
if(isset($_SESSION['valid_user'])){ 
  echo "<p>".$_SESSION['valid_user'].",您好,您已经登录成功</p>"; 
  echo '<p>会员可享受折扣优惠</p>'; 
}else{ 
  echo '<p>您还没有登录成功</p>'; 
  echo '<p>只有登录成功才能查看此页</p>'; 
} 
echo '<a href="authmain.php">返回主页</a>'; 
?> 
</body> 
</html> 

注销会话变量并销毁会话:logout.php

<?php 
//启用会话 
session_start(); 
$olduser=$_SESSION['valid_user']; 
//注销会话变量 
unset($_SESSION['valid_user']); 
//销毁会话 
session_destroy(); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="UTF-8"> 
  <title>退出登录</title> 
</head> 
<body> 
<h1>您退出登录了!</h1> 
<?php 
if(!empty($olduser)){ 
  echo '退出登录了<br/>'; 
}else{ 
  echo '您没有登录过,所以当然也不存在退出登录<br/>'; 
} 
?> 
<a href="authmain.php">返回主页</a> 
</body> 
</html> 								 
			 
相关文章 大家在看