`
xieye
  • 浏览: 831536 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php基础知识(4)-cookie使用

    博客分类:
  • PHP
 
阅读更多
php基础知识-cookie使用

示例代码下载页http://xieye.iteye.com/blog/1336095(在附件)

cookie简单定义:浏览器发送请求给服务器时额外传送的数据。

cookie原理:web协议规定,服务器返回请求时可以将一小部分数据存在浏览器客户端,浏览器在下次往同域名服务器请求信息时,会
同时自动把该段信息再发送给服务器,而这一切是对用户透明的,用户不需要理解这些东西可以照常上网。
cookie的一个特点是,服务器存客户端时可以带有时间参数,浏览器会根据这个参数决定cookie是否过期来处理,如果过期了,这个cookie就
不会到服务端。
假如服务端不对cookie做处理,则每次浏览器发送请求到服务端总会自动传送相同内容的cookie。
cookie的另一个特点是多个名称和值的组合。

例子:自动登录。
有3个页面,一个首页,一个是登录页

必须先添加一个用户
insert into test.member(username,password)values('admin', md5('1') );

9.php,10.php,11quit.php 是没有自动登录的例子。

19.php,20.php,21quit.php 是自动登录的例子。

演示
首先是一个普通的登录例子
http://localhost/command/peixun/cookie/9.php,提示登录
进入10.php,输入admin,1则跳转到9.php,显示出当前用户名,如果愿意可以退出。
如果没有点击“退出”按钮,则直接关闭浏览器,再打开浏览器输入http://localhost/command/peixun/cookie/9.php,发现并没有处于登录状态。


然后是一个通过cookie的自动登录例子。
http://localhost/command/peixun/cookie/19.php,提示登录
进入10.php发现多了一个复选框,不勾选的情况下和上面的例子效果完全一样,输入admin,1则跳转到19.php,显示出当前用户名,如果愿意可以退出。
如果勾选后输入admin,1则跳转到19.php,此时不能点击“退出”链接,直接关闭浏览器。
双击桌面的浏览器图标再次打开浏览器,发现处于已登录状态,这就是cookie的效果。

重要说明:本例子只用于演示cookie的用法,实际应用中为安全起见,最好隐藏cooikie的字段含义,程序也因此需要做修改。

代码可下载,只显示第2个例子的代码

19.php
<?php
//会话的第2个例子,首页

//9.php,简单例子,首页
//10.php,简单例子,登录页
//11quit.php,简单例子,退出页
//19.php,     复杂例子,首页
//20.php,    复杂例子,登录页
//21quit.php, 复杂例子,退出页

require_once('../Public/CommandLine.php');

session_start();

//逻辑是如果未登录,则显示“请登录”,如果已登录,显示欢迎某某某
$html = '';
if (isset($_SESSION['islogin']) &&  $_SESSION['islogin'] == 1  ) { //已登录
    $html .= '欢迎您,' . $_SESSION['username'] .
            "&nbsp;&nbsp;&nbsp;&nbsp;<a href='11quit.php'>退出</a>";
    
} else { //未登录分:有cookie的记住我,且为1
    if (isset($_COOKIE['rememberme']) &&  $_COOKIE['rememberme']==1 ) {
        $username = strval($_COOKIE['username']);
        $password = strval($_COOKIE['password']);
        $db = Sys::getdb();
        $select = $db->select();
        $select->from('test.member', 'count(*)'   )
               ->where('username=?', $username)
               ->where('password=?', $password);
        $result = $db->fetchOne($select);
        if ($result) { //如果是对的
            $_SESSION['islogin'] = 1;
            $_SESSION['username'] = $username;
            
            $html .= '欢迎您,' . $_SESSION['username'] .
            "&nbsp;&nbsp;&nbsp;&nbsp;<a href='21quit.php'>退出</a>";
            
        }
    }
}

if(!( isset($_SESSION['islogin']) &&  $_SESSION['islogin'] == 1 ) ){
    $html .= '<a href="20.php">请登录</a>';
} 

$html .= "<br><h1>这是首页<h1>";
echo $html;




20.php
<?php
//自动登录的登录页
require_once('../Public/CommandLine.php');

session_start();

$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
    $html = <<<longs
<html>    
<body>
  <form method="post">
    请输入用户名:<input type="text" name="username" value=''><br>
    请输入密码:<input type="text" name="password" value=''><br>
    <input type="checkbox" name="rememberme" value="1" />下次自动登录<br>
    <input type="submit" value="登录" >
  </form>
</body>  
</html>  
longs;
    echo $html;
    
} else {
    //echo $_POST['name1'];
    $username = $_POST['username'];
    $password  = $_POST['password'];
    $db = Sys::getdb();
    $select = $db->select();
    $select->from('test.member', 'count(*)'   )
           ->where('username=?', $username)
           ->where('password=?', md5($password));
    $result = $db->fetchOne($select);
    if ($result) {
        $_SESSION['islogin'] = 1;
        $_SESSION['username'] = $username;
        
        
        $time = time() + 3600 * 24 * 365;
        
        setcookie('rememberme', intval($_POST['rememberme']), $time, "/");
        setcookie('password',  md5($password), $time, "/");
        setcookie('username',  $username, $time, "/");
        
        header('Location: 19.php');
    }else {
        
        $html = <<<longs
<html>    
<body>

  请输入正确的用户名和密码
  <form method="post">
    请输入用户名:<input type="text" name="username" value='{$username}'><br>
    请输入密码:<input type="text" name="password" value='{$password}'><br>
    <input type="checkbox" name="rememberme" value="1" />下次自动登录<br>
    <input type="submit" value="登录" >
  </form>
</body>  
</html>  
longs;
        echo $html;
    }
    
}



21quit.php
<?php
//第2个例子,自动登录的退出页
require_once('../Public/CommandLine.php');

session_start();

$_SESSION['islogin'] =0;
$date = time() - 3600 * 24 * 365;
foreach($_COOKIE as $key => $ko){
    if ($key != 'PHPSESSID') {
        setcookie($key, "", $date, "/"); //删除cookie的写法
    }
}
header('Location: 19.php');

分享到:
评论

相关推荐

    php简单的cookie身份验证机制

    在PHP编程中,Cookie是一种常见的身份验证机制,用于在客户端(浏览器)和服务器之间...了解这些基础知识后,你可以根据提供的源代码学习和理解实际的实现细节,并可能进一步优化和增强这个简单的Cookie身份验证机制。

    零基础学习PHP-从零开始学习PHP-PHP基础教程

    以上只是PHP基础知识的冰山一角,深入学习还包括错误处理、性能优化、框架使用等内容。希望这个“零基础学习PHP-从零开始学习PHP-PHP基础教程”能助你在PHP学习之路上一臂之力,让你逐步成为PHP开发的专家。

    php基础知识期末考试题_php网站开发技术期末题库

    根据提供的文件内容,这里将对相关的PHP基础知识进行详细的解析,以帮助理解这些概念和技术要点。 ### 1. mysql_connect()与@mysql_connect()的区别 **知识点解析:** - **mysql_connect()**: 这是一个用于建立...

    用header 发送cookie的php代码

    下面我们将详细讨论如何使用`header()`函数发送Cookie以及相关的知识点。 首先,让我们来看一下提供的代码片段: ```php header("Set-Cookie: testcookie=中文; path=/; domain=.phpv.net; expires=" . gmstrftime...

    PHP语言基础学习笔记-php函数大全笔记

    - 学习PHP的基础知识和发展历程有助于理解语言设计背后的逻辑。 2. **选择合适的学习资源**: - **在线教程**:适合初学者,能够快速上手。 - **视频课程**:提供更多实践操作指导。 - **书籍**:系统性更强,...

    php基础知识树形图

    "php基础知识树形图"提供了这样一种直观的学习工具,它以树状结构清晰地展现了PHP知识体系的关键组成部分。 首先,我们从标题"php基础知识树形图"可以推测,这个树形图会包括以下几个主要部分: 1. **PHP简介**:...

    php基础知识期末考试题.doc.docx

    根据提供的文档信息,这里将对几个关键的知识点进行详细的解释和扩展。 ### 1. `mysql_connect()`与`@mysql_connect()`的区别 - **`mysql_connect()`**: 这...希望这些内容能够帮助您更好地理解和掌握PHP的基础知识。

    php 基础知识 一张纸

    标题:“PHP基础知识一张纸”揭示了PHP编程语言的核心概念与常用函数,旨在为开发者提供一个简洁而全面的参考指南。这份“一张纸”的资源聚焦于PHP的基础知识点,涵盖了数组、日期时间、文件系统、网络、数学操作、...

    后盾网教学视频 PHP基础--向军 (143课时 6.8G)

    根据提供的文件信息,我们可以从标题、描述以及部分给出的内容中提炼出有关PHP基础知识学习的关键信息。下面将对这些信息进行详细的展开与解释。 ### 标题解析:“后盾网教学视频 PHP基础--向军 (143课时 6.8G)”...

    PHP知识点梳理与简介

    1. PHP基础知识 - PHP是嵌入HTML中的服务器端脚本语言,使用&lt;?php?&gt;作为代码标记。 - PHP文件的扩展名通常是.php。 - 文件名和路径不应该包含中文字符,因为可能会导致服务器解析错误。 - PHP是区分大小写的编程...

    wpshout-cookie-demo:该演示演示了如何在WordPress环境中使用PHP cookie

    【标题】:“wpshout-cookie-demo”是一个演示项目,它专注于在WordPress中使用PHP cookies的实践教程。这个项目源于WPShout的一篇文章,名为“在WordPress中使用PHP Cookies”,旨在帮助开发者了解如何在WordPress...

    良心出品php基础知识期末考试题.doc

    这些问题涵盖了 PHP 的基础知识点,包括 MySQL 连接、PHP 循环语句、超全局变量、运算符优先级、Cookie 存储、变量类型、字符串比较、复选框类型、SESSION 会话、最近一条查询信息、结构类型变量、客户端 Cookies ...

    phP基础知识期末考试题知识.pdf

    本资源摘要信息涵盖了PHP基础知识的各个方面,包括变量、运算符、控制结构、函数、数组、字符串、会话、 cookie 等内容。通过对这些知识点的详细解释和分析,可以帮助读者更好地理解PHP的基础概念和应用场景。 一、...

    PHP程序设计-3期(KC016) 3.11.3 cookie课后习题.doc

    总结,Cookie在PHP程序设计中扮演着关键角色,理解它们的差异和正确使用方式是开发安全、高效Web应用的基础。无论是短暂的会话Cookie还是长期的持久Cookie,都需要根据实际需求和安全策略来明智地选择和配置。

    PHP经典实例--Web基础

    "PHP经典实例--Web基础"这个主题深入探讨了PHP在处理Web交互时的关键技术,包括Cookie管理、HTTP头部信息控制、用户身份验证以及如何有效地使用查询字符串。下面将详细阐述这些知识点。 1. **Cookie管理**: - **...

    新版php基础知识期末考试卷.doc.pdf

    【PHP基础知识概述】 PHP是一种广泛使用的开源脚本语言,尤其适用于Web开发,它可以嵌入到HTML中使用。PHP的设计目标是提升动态内容的处理效率,同时也支持命令行接口(CLI)模式,使得它能用于通用编程。以下是...

    PHP登录系统以及连接Mysql和Cookie使用的项目代码

    1. **PHP基础**:PHP是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。在本项目中,`index.php`可能是整个系统的入口文件,包含了处理用户请求和显示响应的核心逻辑。 2. **用户登录系统**:用户登录通常...

    PHP入门基础知识.doc

    【PHP入门基础知识】 PHP是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发,能够嵌入到HTML中。它的全称“PHP:Hypertext Preprocessor”表明它是一种预处理程序,用于处理服务器上的HTML超文本。PHP文件的...

Global site tag (gtag.js) - Google Analytics