background image

echo $txt.”<br><hr>”;
echo $encrypt.”<br><hr>”;
echo $decrypt.”<br><hr>”;
echo $decryptArray.”<br><hr>”;
?>

关键的地方来了 当你要跳转到另外一个网址,但又要保证你的 session 无误的时候,你需
要对 session 作一个处理.貌似一个公司有一个网站又有一个论坛,两个地方都有注册和登
录,但又不想让用户在主页登录后跳转到论坛的时候 session 失效,即是登录一次跑完整间

公司
那要怎样来处理用户的 session

网页都是无状态的,如果要在新的网页中继续使用 session,则需要把 session 从一个地方
移到另一个地方,可能有些人已经想到了,我可以通过 url

传址的方式来调用它 .而 PHP 有

个处理 session 的变量,叫$_SESSION.

于是 .

将需要注册的 session 转换成一个数组吧.那么,你可以这样写:
//login.php
<?php
session_start();
include “fun.php”;
….
$_SESSION[“userid”];
$_SESSION[“username”];
$_SESSION[“userpwd”];

header("Location:

 

http://$domain/process.php?

s=".urlencode(passport_encrypt(serialize($_SESSION),"sessionkey")));
?>
上例中先用 serialize 将$_SESSION 变成可存储的数据,然后通过 passport_encrypt 将
这个数据加密,加 urlencode 的原因是因为$_SESSION 加密时,有可能会产生像料想不到
的编码,

所以以防万一 (事实证明非常有效)

处理下先
//process.php
<?php
session_start();
include “fun.php”;
$_SESSION=unserialize(passport_decrypt($_GET["s"],"sessionkey"));
header("Location: http://$domain/index.php");
?>
先用$_GET[“s”]获取 URL 的参数,然后用 passport_decrypt 将其解密,再用 unserialize
将其数据还原成原始数据
到了这步处理,你的网页就可能通过 header

自由跳转啦 .

这种方法还涉及到安全性的问题,如果你的 url 地址在传址的过程中被人家获取的话,那就

真的是不好意思了 人家虽然可能破解不了 url 里边的内容,但人家也可以直接用这个 url
地址来登录你的一些个人账户啊,邮箱帐户啊甚至银行帐户(当然很少人会这样写,我例外,
哈哈)…

听起来好怕 .但其实你可以在跳转页面作取消 session

处理 .