2017.8.01

一、sessio变量的应用实例。

1、做个简单的登录界面,获取所需的值。PHP文件里面可以写有HTML

<?php
session_start();//必须先执行此句,前面不要有任何输出。
header("Content-type:text/html;charset=utf-8");//解决中文乱码

if(isset($_SESSION[‘username‘])){
    header(‘location:user.php‘);//跳转函数,location后面为地址。
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登陆</title>
</head>
<body>
<form action="deng.php" method="post">

    用户名:<input type="text" name="username" value="admin" /><br />
    密码:<input type="password" name="password" value="123456" /><br />
    <input type="submit" value="提交" />
</form>>

</body>
</html>

2、获取所得数值,并把其赋值给session变量。后台连接数据库验证所得值是否正确。

<?php
/** */
session_start();//使用session变量就必须开启,
header("Content-type:text/html;charset=utf-8");//解决中文乱码
if(isset($_POST[‘username‘])&&isset($_POST[‘password‘])){
    //这里需要查询数据库,目前只做简单判断
    $username=$_POST[‘username‘];
    $password=$_POST[‘password‘];

    if($username==‘admin‘&&$password==‘123456‘)//此处没有查询数据库,使用已知的值{
        //设置session
        $_SESSION[‘username‘]=$username;
        header(‘location:user.php‘); //跳转到指定地方
    }else{
        echo "用户名和密码不匹配";
    }
}

3、在其他页面使用session变量。在其他页面通过之前设置好的session变量$_SESSION[‘username‘]从数据库获取其他所需数值。

<?php
/** */
session_start();
header("Content-type:text/html;charset=utf-8");//解决中文乱码

if(isset($_SESSION[‘username‘])){
    echo "恭喜".$_SESSION[‘username‘]."登陆成功<br />";
    echo ‘<a href="logout.php">退出登陆</a >‘;
}else{
    header(‘location:deng0.php‘);
}

4、删除会话,删除会话id和会话变量以及客户端cookie值。退出登录时的操作。

<?php
/** */
session_start();
header("Content-type:text/html;charset=utf-8");//解决中文乱码
/*
//删除会话变量$_SESSION[‘user‘]="yangyang",不会删除session文件和session_Id
session_unset();
echo session_Id(),‘<br />‘;
//删除会话变量$_SESSION[‘user‘]="yangyang",不会删除session文件和session_Id
$_SESSION=array();
echo session_Id(),‘<br />‘;

//删除会话Id和会话文件,它不会删除内存中的会话变量$_SESSION[‘user‘]="yangyang"
session_destroy();
print_r($_SESSION);echo session_Id(),‘<br />‘;
*/
//如果要删除会话Id和会话文件,并且清空会话变量,需要配合session_unset()来使用,此时服务器中的会话文件和Id和变量都被删除了
//但是客户端cookie还在
session_unset();
session_destroy();
//清空cookie会话Id的值,路径必须写上
setcookie(session_name(),session_id(),time()-10,‘/‘);
echo "感谢使用!";

二、cookie变量的应用实例。

1、通过例子中的$_COOKIE[‘hist‘]变量存储用户最近10条浏览记录

<?php
/*序列化和反序列化函数测试
$arr=[1=>‘a‘,2=>‘b‘,3=>‘c‘];
$a=serialize($arr);//
echo $a;
print_r(unserialize($a));
*/
header("Content-type:text/html;charset=utf-8");//解决中文乱码
//1、获取URL地址,用到变量$_SERVER[‘REQUEST_URI‘]
$url=$_SERVER[‘REQUEST_URI‘];//获取当前URL地址
//echo $url,‘<br />‘;
//echo a,‘<br />‘;

//2、将URL放入到cookie中

//用一个数组来保存URL,因为记录比较多用变量存储太麻烦
$arr=[];
//2、首先判断是否有浏览记录,如果有,则将当前URL放到浏览记录的最前面//反之,则新建一个浏览记录
if(isset($_COOKIE[‘hist‘]))
{
    $arr=unserialize($_COOKIE[‘hist‘]);//变成数组,取出来的是字符串需要反序列化,因为下面要压入数组中
    array_unshift($arr,$url);//压入数组,将URL地址放到历史记录最前面
    $arr=array_unique($arr);//保证浏览记录不重复
    //只保存最近10条浏览记录
    if(count($arr)>10){
        array_pop($arr);//弹出最早进入的一条数据
    }
    //2、再次存放到cookie中
    setcookie(‘hist‘,serialize($arr));//放入cookie中
}else{
    $arr[]=$url;//将URL地址存入数组中
    //1、首次设置cookie
    setcookie(‘hist‘,serialize($arr));//把数组序列化为字符串,存入$_COOKIE[‘hist‘]

}
echo "历史浏览记录<br />";
//print_r($arr);

echo ‘<ol>‘;
foreach($arr as $k=>$v){
    //echo $v,‘<br />‘;
    echo ‘<li>‘.$v.‘</li>‘;

}
echo ‘</ol>‘;

echo ‘<hr />‘;
echo ‘<a href="?id=‘.mt_rand(1,100).‘">随机产生一个Id</a >‘;
时间: 2024-12-25 11:34:05

2017.8.01的相关文章

调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器

2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cookie:*支持请求的代理与模拟环境参数设置:*时间戳管理(取网络当前时间戳.转成日期.转成倒计时):*支持拖放文件到本程序窗计算文件的MD5.SHA1.CRC32值:*集成常见编码解码(Ansi与Utf8互转.URL加解密.UniCode转中文);*集成常用符号与其UniCode值:*集成常用数学计算

Cheatsheet: 2017 03.01 ~ 03.31

Web New Year, New Blog Day 10 - Using JetBrains Rider with a .NET Core Console Application JavaScript Interview Day # 1: How to create a Class Using React, Redux and Webpack with Dotnet Core to build a modern web frontend Learn Redis the hard way (in

跟锦数学2017年01月

(170131) 设 $u$ 为 $n$ 维欧氏空间 $\bbR^5$ 中的单位向量, 定义 $T_u(x)=x-2\sef{x,u}u$. 现设 $\al,\be$ 是 $\bbR^5$ 中线性无关的两个单位向量, 问当 $\al,\be$ 满足什么条件时, 存在正整数 $k$ 使得 $(T_\al T_\be)^k$ 为单位映射. (170130) 试建立 $[0,1]$ 到 $(0,1)$ 之间的一一对应. (170129) 试证: $$\bex 2\arctan x+\arcsin \f

2017/08/01 工作日志

昨天下班前拿到一份文档,就是上次开会时说的新系统的需求文档,记录了一些名词 EMR(Electronic Medical Record).EHR(Electronic Health Record). HIS:医疗信息系统(广义).HMIS:医疗管理信息系统(狭义). CIS(Clinical Information System)临床信息系统.HRP(Hospital Resource Planning System)医院运营管理信息系统. CDA(Clinical Document Archi

HCNA 2017年01月26日

[Huawei]ping 127.0.0.1 PING 127.0.0.1: 56 data bytes, press CTRL_C to break Reply from 127.0.0.1: bytes=56 Sequence=1 ttl=255 time=240 ms Reply from 127.0.0.1: bytes=56 Sequence=2 ttl=255 time=60 ms Reply from 127.0.0.1: bytes=56 Sequence=3 ttl=255 t

Java流程控制——2017.08.01

package Collection; import org.omg.CORBA.SystemException; public class ifexpression { public static void main(String[] args) { //if表达式针对布尔表达式或者boolean值 //第一种方式 int a=5; int b=7; int c=84; if(a<b){ System.out.println("a小于b"); } //第二种方式 if(a>

Java运算符——2017.08.01

package Collection;//除法运算与求余运算的区别 public class Div { public static void main(String[] args) { // TODO Auto-generated method stub int int1=5; int int2=2; double double1=2.0; //除法运算结果 System.out.println(int1/int2); System.out.println(int1/double1); /*

float、double以及正负无穷大——2017.08.01

package Collection; public class PrimitiveType { public static void main(String[] args) { // TODO Auto-generated method stub float f=5.45321562154655215f;//定义float类型后面必须加f float f1=5.2354f; //对比两个输出结果之间的差异 float f2=54222.4541564664f; float f3=5748411

Cheatsheet: 2017 05.01 ~05.31

Web Configuring Your .npmrc for an Optimal Node.js Environment Web Developer Security Checklist HTTPS on Stack Overflow: The End of a Long Road TypeScript 2.2: Mixin Classes Introducing the TypeScript Cookbook Performance Analysis Reference Golang Us