博客列表 >第九课—cookie和session 2018年8月31日 20时00分

第九课—cookie和session 2018年8月31日 20时00分

空白
空白原创
2018年09月04日 14:05:20828浏览

cookie

实例

<?php
// 公共函数
// 用户登录成功后跳转到首页
function jump_index($page = 'index.php')
{
	// 默认URL
	// $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
	$url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);

	// 去掉url右边的斜线
	$url = rtrim($url, '/\\');

	// 添加上当前脚本名称
	$url .= '/'.$page;

	//跳转到指定地址
    header('Location:' .$url);
    exit();
}

// 验证用户登录
function login($sql, $email, $password)
{
	// 建立一个保持错误信息的数组
	$errors = [];

	// 邮箱验证
	if(empty($email)){
		$errors = '邮箱不能为空!';
	} else {
		// 去掉特殊字符
		$e = mysqli_real_escape_string($sql,trim($email));
	}

	// 密码验证
	if(empty($password)){
		$errors = '密码不能为空!';
	} else {
		// 去掉特殊字符
		$p = mysqli_real_escape_string($sql,trim($password));
	}

	// 到数据库中进行数据验证
	if (empty($errors)) {
		// 根据邮箱和密码进行验证,并返回id, name
		$que = "SELECT `id`,'name' FROM `login` WHERE `email`='$e' AND `password`='$p'";

		// 执行查询
		$res = mysqli_query($sql, $que);

		if (mysqli_num_rows($res) == 1) {
           $row = mysqli_fetch_array($res, MYSQLI_ASSOC);
            //返回查询结果
            return [true, $row];
        } else {
            $errors[] = '邮箱或密码不正确,请重新输入';
        }

        return [false, $errors];
	}
}

运行实例 »

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

实例

<?php
//登录成功页面

//判断用户是否登录?
if (!isset($_COOKIE['id'])) {
    require 'common/fun.php';
    jump_index();
}

$page_title = '登录成功';
//导入页面的公共头部
include 'common/head.php';

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



//导入页面的公共底部
include 'common/footer.php';

运行实例 »

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

k1.pngk2.pngk3.pngk4.png

session

实例

<?php
// 公共函数
// 用户登录成功后跳转到首页
function jump_index($page = 'index.php')
{
	// 默认URL
	// $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
	$url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);

	// 去掉url右边的斜线
	$url = rtrim($url, '/\\');

	// 添加上当前脚本名称
	$url .= '/'.$page;

	//跳转到指定地址
    header('Location:' .$url);
    exit();
}

// 验证用户登录
function login($sql, $email, $password)
{
	// 建立一个保持错误信息的数组
	$errors = [];

	// 邮箱验证
	if(empty($email)){
		$errors = '邮箱不能为空!';
	} else {
		// 去掉特殊字符
		$e = mysqli_real_escape_string($sql,trim($email));
	}

	// 密码验证
	if(empty($password)){
		$errors = '密码不能为空!';
	} else {
		// 去掉特殊字符
		$p = mysqli_real_escape_string($sql,trim($password));
	}

	// 到数据库中进行数据验证
	if (empty($errors)) {
		// 根据邮箱和密码进行验证,并返回id, name
		$que = "SELECT `id`,'name' FROM `login` WHERE `email`='$e' AND `password`='$p'";

		// 执行查询
		$res = mysqli_query($sql, $que);

		if (mysqli_num_rows($res) == 1) {
           $row = mysqli_fetch_array($res, MYSQLI_ASSOC);
            //返回查询结果
            return [true, $row];
        } else {
            $errors[] = '邮箱或密码不正确,请重新输入';
        }

        return [false, $errors];
	}
}

运行实例 »

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

实例

<?php
//登录成功页面

//启动会话
session_start();

//判断用户是否登录?
if (!isset($_SESSION['id'])) {
    require 'common/fun.php';
    jump_index();
}

$title = '登录成功';
//导入页面的公共头部
include 'common/head.php';

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



//导入页面的公共底部
include 'common/footer.php';

运行实例 »

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

s1.pngs2.pngs3.pngs4.png

cookie与session的优点和缺点:优点:一个网站内只需登录一次即可浏览器全站,不用来来回回登录。缺点:如果cookie被人拦截了,就可以取得所有的session信息。


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