博客列表 >cookie session——2018年4月21日

cookie session——2018年4月21日

沈斌的博客
沈斌的博客原创
2018年04月21日 11:33:15769浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议