PHP中如何使⽤session实现保存⽤户登录信息
session在php中是⼀个⾮常重要的东西,像我们⽤户登录⼀般都使⽤到session这个东西,相对于cookie来说session 要安全很多,同时我们购物车经常使⽤session来做临时的记录保存哦。
使⽤session保存页⾯登录信息
1、数据库连接配置页⾯:connectvars.php
<?php
//数据库的位置
define('DB_HOST', 'localhost');
//⽤户名
define('DB_USER', 'root');
//⼝令
define('DB_PASSWORD', '19900101');
//数据库名
define('DB_NAME','test') ;
>
php调用mysql数据库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($user_username)&&!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,同时进⾏页⾯重定向
if(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
$_SESSION['user_id']=$row['user_id'];
$_SESSION['username']=$row['username'];
$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();
//使⽤⼀个会话变量检查登录状态
if(isset($_SESSION['username'])){
echo 'You are Logged as '.$_SESSION['username'].'<br/>';
/
/点击“Log Out”,则转到logOut页⾯进⾏注销
echo '<a href="logOut.php"> Log Out('.$_SESSION['username'].')</a>';
}
/**在已登录页⾯中,可以利⽤⽤户的session如$_SESSION['username']、
* $_SESSION['user_id']对数据库进⾏查询,可以做好多好多事情*/
>
4、注销session页⾯:logOut.php(注销后重定向到lonIn.php)
<?php
//即使是注销时,也必须⾸先开始会话才能访问会话变量
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();
}
//location⾸部使浏览器重定向到另⼀个页⾯
$home_url = 'logIn.php';
header('Location:'.$home_url);
>
好了以上代码就是本⽂的全部内容,代码很简单,很多地⽅都附有注释⽂字说明,有哪⾥不明⽩的地⽅欢迎给我留⾔,我会在第⼀时间给⼤家答复的。谢谢!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论