博客列表 >cookie与session的用户登录20180420

cookie与session的用户登录20180420

jobing的博客
jobing的博客原创
2018年05月01日 18:24:14913浏览

今天主要学习了cookie与session的用户登录案例,以下是相关的代码与大家分享:

cookie的代码

index代码:

实例

<?php  

$page_title = '首页';
//导入头部
include('inc/header.php');

echo '<h3 style="color:skyblue">用户登录页</h3>';

if ((isset($_COOKIE['user_id'])) && basename($_SERVER['PHP_SELF']) != 'logout.php') {
    echo '<a href="logout.php">退出</a>';
} else {
    echo '<a href="login.php">登录</a>';
}

//导入底部
include('inc/footer.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

header代码:

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>
		<?php 
		echo isset($page_title) ?  $page_title:'默认标题';
		 ?>
	</title>
</head>
<body>
	
<h3>导航栏:<a href="http://www.jobing.com/20180420/index.php">首页</a></h3>

运行实例 »

点击 "运行实例" 按钮查看在线实例

footer代码:

实例

<p>友情链接:<a href="">关于我们</a>|<a href="">联系我们</a> </p>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

login_page代码:

实例

<?php 

/*用户登录页面*/
$page_title='用户登录';

include('inc/header.php');

?>


<h3 style="color: skyblue">用户登录</h3>
<form action="login.php" method="post">
	<p>
		<label for="email">邮箱:</label>
		<input type="email" name="email" id="email" value="">
	</p>
	<p>
		<label for="password">密码:</label>
		<input type="password" name="password" id="password" value="">
	</p>
	<p>
		<button type="submit" name="submit" id="submit">登录</button>
	</p>

</form>

<?php 
include('inc/footer.php');
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

login代码:

实例

<?php 

if($_SERVER['REQUEST_METHOD']=='POST'){

	require('inc/function.php');

	require('inc/connect.php');

	// 验证登录
	list($check, $data) = check_login($dbc, $_POST['email'], $_POST['password']);

	if($check){
		setcookie('user_id',$data['user_id']);
		setcookie('user_name',$data['user_name']);

		// 跳转
		redirect_user('20180420/loggedin.php');
	}else{
		$errors = $data;
	}

	mysqli_close($dbc);
}

include('login_page.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

function代码:

实例

<?php 
function redirect_user($page='index.php')
{
	// 默认地址
	$url='http://'.$_SERVER['HTTP_HOST'].dirname($SERVER['PHP_SELF']);

	
	$url = rtrim($url, '/\\');

	$url.='/'.$page;

	header('Location:'.$url);

	exit();
}

function check_login($dbc,$email='',$password='')
{
	$errors=[];

	if(empty($email)){
		$errors[] = '邮箱地址不能为空';
	}else{
		$e= mysqli_real_escape_string($dbc,trim($email));

	}

	if(empty($password)){
		$errors[] = '密码地址不能为空';
	}else{
		$p= mysqli_real_escape_string($dbc,trim($password));

	}

	if(empty($errors)){
		//根据邮箱与密码来查询用户id与用户名
		 $sql = "SELECT `user_id`,`user_name` FROM `user` WHERE `email`='$e' AND `password`=sha1('$p') ";

		 $res = mysqli_query($dbc, $sql);

		 if (mysqli_num_rows($res) == 1) {

            //将查询结果解析到数组中
            $row = mysqli_fetch_array($res, MYSQLI_ASSOC);

            //返回查询结果
            return [true, $row];
        } else { //查询失败
            $errors[] = '邮箱或密码不正确,请重新输入';
        }
	}

	return [false, $errors];
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

connect代码:

实例

<?php 

define ('DB_HOST', 'localhost');
define ('DB_USER', 'root');
define ('DB_PASS', 'root');
define ('DB_NAME', 'php');
define ('DB_CHAR', 'utf8');

$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);

if (mysqli_connect_errno($dbc)) {
    echo '连接失败'.mysqli_connect_error($dbc);
}

mysqli_select_db($dbc, DB_NAME);  //选择要操作的数据库
mysqli_set_charset($dbc, DB_CHAR); //设置客户端默认字符编码集

运行实例 »

点击 "运行实例" 按钮查看在线实例

loggedin代码:

实例

<?php 
// 未登录
if(!isset($_COOKIE['user_id'])){
	require('inc/function.php');
	redirect_user();
}
// 已登录

$page_title = '已经登录';
// 导入头部
include('inc/header.php');

echo <<< "WELCOME"
<h3 style="color:blue">登陆成功</h3>
<p>欢迎您: {$_COOKIE['user_name']}</p>
<p><a href="logout.php">退出</a></p>
WELCOME;


//导入底部
include('inc/footer.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

logout代码:

实例

<?php  
if(!isset($_COOKIE['user_id'])){
	require('inc/function.php');
	redirect_user();
}else{
	setcookie('user_id','',time()-3600);
	setcookie('user_name','',time()-3600);
}


// 退出登录

$page_title = '退出登录';
// 导入头部
include('inc/header.php');

echo <<< "WELCOME"
<h3 style="color:blue">退出成功</h3>
<p><a href="login.php">登录</a></p>
WELCOME;


//导入底部
include('inc/footer.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

session的代码

index代码:

实例

<?php  

session_start();

$page_title = '首页';
//导入头部
include('inc/header.php');

echo '<h3 style="color:skyblue">用户登录页</h3>';

if ((isset($_SESSION['user_id'])) && basename($_SERVER['PHP_SELF']) != 'logout.php') {
    echo '<a href="logout.php">退出</a>';
} else {
    echo '<a href="login.php">登录</a>';
}

//导入底部
include('inc/footer.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

loggedin代码:

实例

<?php 

session_start();
// 未登录
if(!isset($_SESSION['user_id'])){
	require('inc/function.php');
	redirect_user();
}
// 已登录

$page_title = '已经登录';
// 导入头部
include('inc/header.php');

echo <<< "WELCOME"
<h3 style="color:blue">登陆成功</h3>
<p>欢迎您: {$_SESSION['user_name']}</p>
<p><a href="logout.php">退出</a></p>
WELCOME;


//导入底部
include('inc/footer.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

login代码:

实例

<?php 

session_start();

if($_SERVER['REQUEST_METHOD']=='POST'){

	require('inc/function.php');

	require('inc/connect.php');

	// 验证登录
	list($check, $data) = check_login($dbc, $_POST['email'], $_POST['password']);

	if($check){
		// setcookie('user_id',$data['user_id']);
		// setcookie('user_name',$data['user_name']);

		$_SESSION['user_id']= $data['user_id'];
		$_SESSION['user_name']= $data['user_name'];

		// 跳转
		redirect_user('20180420-1/loggedin.php');
	}else{
		$errors = $data;
	}

	mysqli_close($dbc);
}

include('login_page.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例

loginout代码:

实例

<?php  

session_start();

if(!isset($_SESSION['user_id'])){
	require('inc/function.php');
	redirect_user();
}else{
	// setcookie('user_id','',time()-3600);
	// setcookie('user_name','',time()-3600);
	$_SESSION=[];
	session_destroy();
	setcookie('PHPSESSID','',time()-3600);
}


// 退出登录

$page_title = '退出登录';
// 导入头部
include('inc/header.php');

echo <<< "WELCOME"
<h3 style="color:blue">退出成功</h3>
<p><a href="login.php">登录</a></p>
WELCOME;


//导入底部
include('inc/footer.php');

运行实例 »

点击 "运行实例" 按钮查看在线实例


其他的与cookie相同

效果图:

1.png2.png3.png4.png

总结:

大体的思路是

1先创建首页,由于每个页面都有公共的头部和底部,将共同的头部和底部分离,之后进行复用

2创建用户的登录页面,创建登录验证文件,验证邮箱和密码

3.创建功能函数,创建用户页面的跳转函数,创建与数据库连接的函数,创建验证数据

4.创建登录成功的页面,验证通过之后页面进行跳转

5.创建退出登录的页面,点击退出之后页面进行跳转

使用session代替cookie,需要更改和登录相关的4个文件,分别是index.php、login.php、loggedin.php、logout.php

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议