Home  >  Article  >  php教程  >  PHP Session 用法与Sessions入实例应用

PHP Session 用法与Sessions入实例应用

WBOY
WBOYOriginal
2016-06-13 09:58:091016browse

PHP Session 用法与Sessions入实例应用


session 出现头信息已经发出的原因与cookie一样.
    在php教程5中,所有php session 的注册表配置选项都是编程时可配置的,一般情况下,我们是不用修改其配置的.要了解php的session注册表配置选项,请参考手册的Session 会话处理函数处.
      session的保存数据的时候,是通过系列化$_SESSION数组来存贮,所以有系列化所拥有的问题,可能有特殊字符的值要用base64_encode函数编码,读取的时候再用base64_decode解码

 


下面是一个简单的脚本,你应该在你的PHP代码开始的地方开始了一个PHP的会话。

session_start(); // start up your PHP session!
?>

这小片的代码将注册与服务器的用户的会话,让您开始储蓄用户信息和分配一个UID(独特的识别号码该用户的会话)。

存储会话变量
当你要存储在会话用户数据使用了$ _SESSION关联数组。这是你们两个存储和检索会话数据。在以前的PHP版本中还有其他方法来执行此存储操作,但它已被更新,这是正确的方式去做。

session_start();
$_SESSION['views'] = 1; // store session data
echo "Pageviews = ". $_SESSION['views']; //retrieve data
?>
看个简单购物车实例

session_start(); 
if(isset($_SESSION['views']))
    $_SESSION['views'] = $_SESSION['views']+ 1;
else
    $_SESSION['views'] = 1;

echo "views = ". $_SESSION['views'];
?>

session_start(); 
if(isset($_SESSION['cart']))
    unset($_SESSION['cart']);
?>

session_start();
session_destroy();
?>


session使用实例

/**
 * 效验session的合法性
 *
 */
function sessionVerify() {
    if(!isset($_SESSION['user_agent'])){
        $_SESSION['user_agent'] = MD5($_SERVER['REMOTE_ADDR']
        .$_SERVER['HTTP_USER_AGENT']);
    }
    /* 如果用户session ID是伪造,则重新分配session ID */
    elseif ($_SESSION['user_agent'] != MD5($_SERVER['REMOTE_ADDR']
    . $_SERVER['HTTP_USER_AGENT'])) {
        session_regenerate_id();
    }
}

/**
 * 销毁session
 * 三步完美实现,不可漏
 *
 */
function sessionDestroy() {
    session_destroy();
    setcookie(session_name(),'',time()-3600);
    $_SESSION = array();
}
?>


session解决了一个PHP允许你存储上以供日后使用(即用户名,购物车中的物品等)服务器的用户信息这个问题。不过,本次session的信息是暂时的,通常会被删除后,很快用户已经离开了网站,它使用会话。

重要的是要思考,如果session的临时存储是适用于您的网站。如果你需要一个较长期储存,你需要找到另一种解决方案,像一个MySQL数据库教程。

session的工作创造一个独特的识别码(UID)为每个访问者,并在此基础身份证储存变数。这有助于防止两个用户的数据获取与另一次混乱的时候访问同一网页。

注:如果您不与会话编程经验,不建议您使用在网站上,需要高度安全session,因为有安全漏洞,需要一些先进的技术,以堵塞。

启动一个PHP会话
在您可以开始在你的PHP会话存储用户信息,您必须首先启动了session。当您启动一个会话,它必须在您的代码的开头很之前任何HTML或文本,发送。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn