### php 中两个网页之间的变量传送

在网站设计中，我们常常用到用户登陆这一方法，在登陆后，一般的网站都会根据不同的用户来给定不同的页面，在链接到该站的一个新的网页或者打开一张新网页时，我们也会看到用户的信息能够被记住，现在尤其常用的是，登陆后链接或打开该站的其它网页都会看到诸如"XXX，晚上好"之类的问候语，这些当然都是在登陆后变量传送的结果，在我做个人主页的过程中，曾尝试几种变量传送的方法，现写出来与大家探讨一下。
一、这是最笨的方法，也是我最初没有接触 session、cookie 想出来的方法。这种方法就是把待传递的变量用表单的方式再次传送，比如在用户登陆后，把他的信息如$username、$id 等等信息用表单发送到下一张网页，当然，很多情况，是诸如 text、option 等等框体不想再被看到的话，可以采用隐藏的输入域。下面是一个实例，假设$username 是经过上页为验证身份发送到本页并且在本页经过验证的变量，想传递到下一页中去，那么可以建立文件 test4.php：
<?$username="张小明";?>
<form method="post" action="test5.php">
<input type="hidden" name="username" value="<?echo $username?>">
<input type="submit" name="submit" value="去我的空间看看">
</form>
建立 test5.php:
<?echo "你好,$username,欢迎你的光临!";?>
打开 apache 服务器，输入 http://127.0.0.1/test4.php 在页面的按钮上点击，会发现新出的网页上$username 的值已经传送过来了。
当然这种方法的弱点是很明显的，它还要再使用一个表单，而且在 test5.php 的网页上想要刷新的话还要重新发送，这显然是不太友好的。
二、使用 session。后来，我查找了一些关于 session 的文章，觉得这时传递变量的一种非常好的方法。下面通过举例子来说明：
建立一个新文件 test6.php:
<?session_start(); //初始化一个 session
session_register("username"); //注册一个 session 变量
$username="张小明"; //要传递的变量值
echo "<a href=test7.php>去看看</a>";
?>
建立 test7.php:
<?session_start(); //初始化一个 session
echo "你好,$username,欢迎你的光临!";?> //显示传递过来的变量
使用这种方法的时候要注意：<?session_start();?>应该放在文件的最前面，即"<?"前面不应有任何内容，包括空格，这是我调试多次未成功找出的原因。
这个变量只能在当前打开的浏览器中传递，若要在新打开的窗口中也能传递，刚要按下面的方法来做：
文件：test8.php
<?session_start();
session_register("username");
$username="张小明";
echo "<a href=test7.php?$a=".session_id()." target=_blank>去看看</a>"; //将当前的 session 的 id 值传给下一个窗口。
?>
文件 test7.php
<?session_start();
echo "你好,$username,欢迎你的光临!";?>
三，通过 cookie。还是通过例子说明：
建立文件 test9.php
<?SetCookie("username","张小明");//把 username 设置到 cookie 中去
echo "<a href=test5.php target=_blank>去看看</a>";?>
文件 test5.php
建立 test5.php:
<?echo "你好,$username,欢迎你的光临!";?>