php中的session cookie 记住密码基本原理 浏览器退出登录后保持状态
2015-03-26 18:49
639 查看
1.sql语句:
create database demo;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(255) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('123', '1', '123');
2.配置文件config.php
<?php
header('Content-Type:text/html;charset=utf-8');
define('dbhost','localhost');
define('dbuser','root');
define('dbpassword','root');
define('dbname','demo');
3.登录页面 login.php
<?php
require('config.php');
session_start();
if(!isset($_SESSION['user_id'])){
if(isset($_POST['submit']) && !empty($_POST['username'])&&!empty($_POST['password'])){
$dbc=mysqli_connect(dbhost,dbuser,dbpassword,dbname);
$user_username=$_POST['username'];
$user_password=$_POST['password'];
if(!empty($user_username)&&!empty($user_password)){
$query = "SELECT user_id, username FROM user WHERE username = '$user_username' AND "."password = ('$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));
<?php
header('Content-Type:text/html;charset=utf-8');
//使用会话内存储的变量值之前必须先开启会话
session_start();
// var_dump($_SESSION);
// var_dump($_COOKIE);
//如果会话没有被设置,查看是否设置了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 '你好 '.$_SESSION['username'].'<br/>';
echo '<a href="logout.php"> 登出('.$_SESSION['username'].')</a>';
}else{
$home_url='login.php';
header('Location:'.$home_url);
}
echo '<hr>';
var_dump($_COOKIE);
echo '<hr>';
var_dump($_SESSION);
/**在已登录页面中,可以利用用户的session如$_SESSION['username']、
* $_SESSION['user_id']对数据库进行查询,可以做好多好多事情*/
?>
5.登出页面 logout.php
<?php
header('Content-Type:text/html;charset=utf-8');
session_start();
if(isset($_SESSION['user_id'])){
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),'',time()-3600);
}
session_destroy();
}
setcookie('user_id','',time()-3600);
setcookie('username','',time()-3600);
$home_url='login.php';
echo '退出成功';
header('Location:'.$home_url);
如果浏览器设置了关闭浏览器时,清除cookie,以上代码就会失效。再看看有乜嘢其他办法?
create database demo;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(255) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('123', '1', '123');
2.配置文件config.php
<?php
header('Content-Type:text/html;charset=utf-8');
define('dbhost','localhost');
define('dbuser','root');
define('dbpassword','root');
define('dbname','demo');
3.登录页面 login.php
<?php
require('config.php');
session_start();
if(!isset($_SESSION['user_id'])){
if(isset($_POST['submit']) && !empty($_POST['username'])&&!empty($_POST['password'])){
$dbc=mysqli_connect(dbhost,dbuser,dbpassword,dbname);
$user_username=$_POST['username'];
$user_password=$_POST['password'];
if(!empty($user_username)&&!empty($user_password)){
$query = "SELECT user_id, username FROM user WHERE username = '$user_username' AND "."password = ('$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));
<span style="white-space:pre"> </span>// 以下设置是没有效果的 // setcookie("user_id",$_COOKIE['user_id'], time()+600); // setcookie("username",$_COOKIE['username'], time()+600); $home_url = 'loged.php'; header('Location: '.$home_url); }else{//若查到的记录不对,则设置错误信息 $error_msg = '用户名密码错误,重试'; } } }else{ $error_msg = '请填写用户名和密码'; } }else{//如果用户已经登录,则直接跳转到已经登录页面 $home_url = 'loged.php'; header('Location: '.$home_url); } ?> <html> <head> <title>登录</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <h3>登录</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> <?php echo '<hr>'; var_dump($_COOKIE); echo '<hr>'; var_dump($_SESSION); ?>4.登录状态显示页面(登陆后)loged.php
<?php
header('Content-Type:text/html;charset=utf-8');
//使用会话内存储的变量值之前必须先开启会话
session_start();
// var_dump($_SESSION);
// var_dump($_COOKIE);
//如果会话没有被设置,查看是否设置了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 '你好 '.$_SESSION['username'].'<br/>';
echo '<a href="logout.php"> 登出('.$_SESSION['username'].')</a>';
}else{
$home_url='login.php';
header('Location:'.$home_url);
}
echo '<hr>';
var_dump($_COOKIE);
echo '<hr>';
var_dump($_SESSION);
/**在已登录页面中,可以利用用户的session如$_SESSION['username']、
* $_SESSION['user_id']对数据库进行查询,可以做好多好多事情*/
?>
5.登出页面 logout.php
<?php
header('Content-Type:text/html;charset=utf-8');
session_start();
if(isset($_SESSION['user_id'])){
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),'',time()-3600);
}
session_destroy();
}
setcookie('user_id','',time()-3600);
setcookie('username','',time()-3600);
$home_url='login.php';
echo '退出成功';
header('Location:'.$home_url);
如果浏览器设置了关闭浏览器时,清除cookie,以上代码就会失效。再看看有乜嘢其他办法?
相关文章推荐
- 转载:php实现记住密码自动登录
- PHP 实现登录记住密码
- php记住密码自动登录
- php中实现记住密码自动登录的代码
- 原创思考 NSUserDefaults实现自动登录--保存账号和密码--记住登录状态
- PHP 使用cookie实现记住登录状态
- php实现记住密码自动登录方法
- php 记住密码自动登录
- 关掉浏览器后,再次打开浏览器,记住用户登录状态是怎么实现的?
- PHP登录对用户名、密码进行验证及登录状态操作
- php实现记住密码自动登录
- PHP之cookie应用---记住我登录状态
- php使用cookie实现记住登录状态
- php实现记住密码自动登录方法
- PHP用户登录和状态保持
- php如何实现记住密码自动登录
- php使用cookie完成登录记住密码
- PHP安全编程:记住登录状态的安全做法
- php中实现记住密码自动登录的代码
- php中实现记住密码下次自动登录的例子