博主信息
博文 56
粉丝 3
评论 1
访问量 60914
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
cookie session——2018年4月21日
沈斌的博客
原创
980人浏览过

php利用cookie和session 实现用户登录.使用session要在开始加session_start()

inc/connect.php

实例

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

$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if (mysqli_connect_errno($dbc)) {
	echo "connect failed".mysqli_connect_errno;
}

mysqli_select_db($dbc,DB_NAME);
mysqli_set_charset($dbc,DB_CHAR);

运行实例 »

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

inc/header.php

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>
		<?php
			echo isset($page_title)? $page_title:'default title';
		?>
	</title>
</head>
<body>
	<h3>公共头部</h3>

运行实例 »

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

inc/footer.php

实例

	<h3>公共底部</h3>
</body>
</html>

运行实例 »

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

inc/function.php

实例

<?php

// 页面跳转
function redirect_user($page='index.php'){
	// url
	$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)) {
		// 查询
		$sql="SELECT `user_id`,`user_name` FROM `php` WHERE `email`='$e' AND `password`='$p'";
		$res=mysqli_query($dbc,$sql);
		echo mysqli_error($dbc);
		
		if (mysqli_num_rows($res) == 1) {
			$row=mysqli_fetch_array($res,MYSQLI_ASSOC);

			return [true,$row];
		} else {
			$errors[]='邮箱密码不正确';
		}
	}

	return [false,$errors];
}

运行实例 »

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

index.php

实例

<?php
$page_title='首页';
include('inc/header.php');
echo '<h2 style="color:red">我是首页</h2>';

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');

运行实例 »

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

login.php

实例

<?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('loginedin.php');
	} else {
		$errors=$data;
	}

	mysqli_close($dbc);
}



include('login_page.php');

运行实例 »

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

login_page.php

实例

<?php

$page_title='用户登录';

include('inc/header.php');

// error msg
if (isset($errors) && !empty($errors)) {
	$errors_msg='<p style="color:red">';
	foreach ($errors as $msg) {
		$errors_msg.=$msg.'<br>';
	}
	echo $errors_msg.'</p>';
}
?>
<h2 style="color: red">用户登录</h2>
<form action="login.php" method="POST">
	<p>
		<label for="email">邮箱:</label>	
		<input type="email" name="email" id="email" value="<?php echo isset($_POST['email'])?$_POST['email']:'' ?>">
	</p>

	<p>
		<label for="password">密码:</label>
		<input type="password" name="password" id="password" value="<?php echo isset($_POST['password'])?$_POST['password']:'' ?>">
	</p>
	<p><button type="submit" name="submit" id="submit">登录</button></p>
</form>
<?php include ('inc/footer.php'); ?>

运行实例 »

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

loginedin.php

实例

<?php

if (!isset($_COOKIE['user_id'])) {
	require('inc/function.php');
	echo $_COOKIE['user_id'];
	redirect_user();
}

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

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

include ('inc/footer.php');

运行实例 »

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

logout.php

实例

<?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"
<h2 style="color:red">退出成功</h2>
<p><a href="login.php">登录</a></p>
WELCOME;

include ('inc/footer.php');

运行实例 »

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



-----------------------

session

index.php

实例

<?php
session_start();
$page_title='首页';
include('inc/header.php');
echo '<h2 style="color:red">我是首页</h2>';

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');

运行实例 »

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

login.php

实例

<?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) {
		$_SESSION['user_id']=$data['user_id'];
		$_SESSION['user_name']=$data['user_name'];

		redirect_user('loginedin.php');
	} else {
		$errors=$data;
	}

	mysqli_close($dbc);
}



include('login_page.php');

运行实例 »

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

loginedin.php

实例

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
	require('inc/function.php');
	echo $_SESSION['user_id'];
	// redirect_user();
}

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

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

include ('inc/footer.php');

运行实例 »

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

logout.php

实例

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

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

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

include ('inc/footer.php');

运行实例 »

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

session.png

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学