php的session

 session是啥玩意?

Session的中文译名叫做“会话”,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。目前社会上对session的理解非常混乱:有时候我们可以看到这样的话“在一个浏览器会话期间,...”,这里的会话是指从一个浏览器窗口打开到关闭这个期间; 也可以看到“用户(客户端)在一次会话期间”这样一句话,它可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程;然而有时候也可能仅仅是指一次连接;其中的差别只能靠上下文来推断了。

session用来干嘛?

网页浏览基于http协议由于http协议是无状态协议服务器无法知道用户浏览的状态,session就是填补了这一个http这一个领域的空白。%&……%……&是不是觉得不耐烦了说得通俗一些就是网页a和网页b不能传递参数,而有时候网页和网页之间需要传递参数以了解网页之间的状态,而通过session可以在网页和网页之间建立全局变量,肿么建立的呢还是先上一个例子,先看源代码(稍后解释代码):

文件一    index.html:

<html>
<head>
<title>test</title>
</head>
<body>
<FORM METHOD=POST ACTION="login.php">
用户名:<INPUT TYPE="text" NAME="name"><br/>
密码:<INPUT TYPE="password" name="pwd"><br/>
<INPUT TYPE="submit" value="提交">
</FORM>
</body>
</html>

 

文件二 login.php

 

<?php
global $login;
if ($_POST['name']!="Victor" || $_POST['pwd']!="111111")
{
        echo "登陆失败";
        echo "请<a href=index.html>返回</a>";
        exit;
}
$login = array('name'=>$_POST['name'],
                           'pwd'=>$_POST['pwd']);
session_start();
session_register(login);
$login = array('name'=>$_POST['name'],'pwd'=>$_POST['pwd']);
$_SESSION[login] = $login;
$_SESSION[‘name’]="我是黑旋风李逵!";
echo "<a href=info.php>查看信息</a><br/>";
echo "<a href=logout.php>退出登陆</a><br/>";
echo "login[name] = " . $login["name"] . "<br />";
echo "_SESSION[‘name’]" . $_SESSION[‘name’] . "<br />";
?>

文件三 info.php

 

<?php
session_start();
if (session_is_registered(login))
{
        global $login;
        echo "hello, _SESSION[login][name] =". $_SESSION[login][name]."<br/>" . "_SESSION[‘name’] = " . $_SESSION[‘name’] ."<br />" ;
        echo "<a href=logout.php>退出登陆</a><br/>";
}
else
{
        echo "非法操作<br/>";
        exit;
}
?>

文件四 logout.php

 

<?php
session_start();
session_unregister(login);
header("location:index.htm");
?>
把上面四个文件放到http服务器目录(如apache的linux标准目录/var/www目录下面),然后打开浏览器,输入http://[ip]/index.html. 如果没有异常会显示一个提示用户名和密码 111111 输入的页面,用户名输入“Victor”然后输入密码。点击“提交”按钮跳转到login.php.在login.php中调用:

session_register(login);
$login = array('name'=>$_POST['name'],'pwd'=>$_POST['pwd']);
$_SESSION[login] = $login;
$_SESSION[‘name’]="我是黑旋风李逵!";

声明session 变量name和login。

点击login.php的查看信息链接跳转到info.php,在info.php中把$_SESSION[login][name]和$_SESSION[‘name’]打印就来发现就是 login.php中的值,就是通过session把值从login.php传到了info.php了。

 

总结:

session使用步骤:

1. 在声明和使用session的时候先执行session_start();

2. 使用$_SESSION[xxx]使用session;

 

3. 使用完成后执行

session_start();
session_unregister(login);

是个很好的习惯。

刚开始学习php希望多多指教。


### PHP Session 使用指南 #### 创建并启动会话 为了在 PHP 序列化环境中维持用户的交互状态,需调用 `session_start()` 函数来创建新的会话或恢复现有会话。此函数负责初始化会话数据,并将其与客户端通过 cookie 或 URL 参数关联起来[^1]。 ```php <?php // 启动会话前可以设置一些选项 ini_set('session.cookie_httponly', 1); ini_set('session.use_only_cookies', 1); // 开始会话 session_start(); ?> ``` #### 存储和检索会话变量 一旦建立了有效的会话连接,则可以通过超级全局数组 $_SESSION 来存取特定于该访客的信息。这些信息会在整个浏览期间持续存在直至显式删除或超时期满。 ```php <?php $_SESSION['username'] = "JohnDoe"; // 设置会话变量 echo $_SESSION['username']; // 获取会话变量 unset($_SESSION['username']); // 删除单个会话变量 session_destroy(); // 销毁全部会话数据 ?> ``` #### 安全实践建议 当涉及到敏感资料传输时,应当采取额外的安全措施以保护用户隐私及防止潜在攻击。这包括但不限于启用 HTTPS 协议、配置严格的 Cookie 属性以及采用第三方库增强安全性[^3]。 ```php <?php require_once 'vendor/autoload.php'; $config = [ 'lifetime' => 86400, // 设置会话生命周期为一天 'httponly' => true, 'secure' => isset($_SERVER["HTTPS"]), // 只允许通过 HTTPS 发送 Cookies ]; $sessionManager = new \Ezimuel\PhpSecureSession\Session($config); $sessionManager->start(); if ($userAuthenticated) { $segment = $sessionManager->getSegment('auth'); $segment->set('userId', $userId); } ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值