是呀,如果不加以控制,是会重新产生一个session, 但是怎样控制也是个问题, 比如, 我用: t.php <?php session_start(); if(!isset($_SESSION['ini'])) {$_SESSION['ini']="abb"; echo "session is not set";} else echo "session is seted"; ?>先打开t.php,当然会显示:session is not set 但是刷新一下,连续刷新也还是显示:session is not set 这就奇怪啦,你们没有遇到这样的问题吗?
让系统产生一个随机的ID号做为Session中用户的临时表示不就完了嘛,等他最后买完东西登录或注册时,他是谁就真象大白啦,用真的ID把随机ID替下来再往数据库里存不就行了么?
管他什么IP和时间呢!!
所谓登录其实是开发者写的程序而已,他和session之间没有必然的联系
不是说你登录了就有了session,不登录就没有session
session是你一访问本站就在服务器端建立的一个跟踪状态还需要好好看看书?那么用户如果刷新了本页面,就又产生了一个新的session ????
我对这句似乎不是很理解
如果因为刷新页面就产生了一个新的session,除非是session过期了,否则那不叫session记得毕业答辩一个老师就问我什么是session,我当时的感觉是他一点都不懂才问的
只有用户,关闭该网页后,session才停止。
不行,如 telescope(望远镜) 所说,那么用户如果刷新了本页面,就又产生了一个新的session?<---
页面的开头判断一下,如果有了自己设置的session了,就不要再重新设了。
if(不存在session){
设置session;
}
//....other code
但是怎样控制也是个问题,
比如,
我用:
t.php
<?php
session_start();
if(!isset($_SESSION['ini']))
{$_SESSION['ini']="abb";
echo "session is not set";}
else
echo "session is seted";
?>先打开t.php,当然会显示:session is not set
但是刷新一下,连续刷新也还是显示:session is not set
这就奇怪啦,你们没有遇到这样的问题吗?
1.如果从A网页连接到主页,改主页注册了一个session变量,是不是在主页之后连接的
网页中用session_start();就可以用到主页中注册的session ID?
2.还有如果我历史后退到A网页,然后再连接到主页,那么session ID的值会不会改变
?而我希望实现的是:从A网页连接到主页,一旦在主页中注册了一个session,那么在以
后连接网页中可以用在主页注册了的session ID 就是通过session_start();,这样就
保证了在关闭浏览器之前用的是同一个session ID,唯一地标识了一个连接主页的用
户,一直到浏览器的关闭。
而当用户历史后退到A网页,然后再连接到主页,主页中的session ID也不变,跟第一
次连接到主页注册的session ID一致。这样就保证了无论用户如何连接,跳转,都不能
改变session ID的值,唯一标识了连接到主页的用户,直到关闭浏览器。因为我在网上看到有个购物网站实现这样的功能。这样的功能可以用在记录进行一系列
操作的用户,如购物的用户等。一旦一个用户访问了主页,那么在他之后的操作中都由
session ID唯一地标识了此次的用户,无论如何后退,跳转,只要浏览没有关闭,进行
各种操作的用户就只有一个。但是经过我的测试,只要历史后退到A网页,再连接到主页,session ID的值就会改
变,这样就无法实现以上功能。就是说,无法唯一地标识此次的用户。我不知道
session的有效期,即生命期是怎样的。是不是一旦注册了session,直到浏览器的关闭
这个过程,只有唯一的session ID?可是经过我测试,不是这样的。还是其他怎样的
session生命期?我实在是搞不清楚session的生命期。也不知道以上功能是怎样实现
的。
请问ashchen(陈辉),如果我第一次从A网页连接到主页,那么一直到浏览器关闭,在主页注册的session id是不是贯穿整个过程?按照我的理解是这样的。但是我的测试为什么不成功呢?就是只要历史后退到A网页,再连接到主页,session ID的值就会改变。这是什么原因呢?如果我在主页加一个控制,就是如果该变量已注册了,就不再注册。如果没有,就要注册(第一次进入主页时就要)。可是我这个控制也没成功,如上贴。
另外,
test1.php
<?
session_start();
session_register("Name");
$Name='jeff';
header("location:test2.php");
?>test2.php
<?
session_start();
echo $Name."**********";
?>先输入test1.php,在test2.php中就只输出**********,后来,我把Header("location:test2.php"); 去掉,加上:
echo "<a href=test2.php>gototest2</a>";
点击gototest2
就可以正常显示:jeff**********
非得要通过超级连接才能把session的值传过去。
这到底是怎么回事?我真的很搞不清楚session的生命期即有效期。是不是一定要从注册的页面开始,通过注册页面的超级连接才使session有效?唉,我都被session搞胡涂了,session不是从注册那一刻开始知道浏览器结束都有效的吗?
为了这个事情我都搞了好多天了,再解决不了,我都没什么兴趣了。