<?
require("cart_class.php");
session_start();if (!isset($_SESSION['CART'])) {
?>
//测试$_SESSION['CART']是否存在的
<script>
alert("no");
</script>
<?
$cart = new cart;
$_SESSION['CART'] = $cart;
}
else {
$cart = $_SESSION['CART'] ;
}
if ($action == "add") {
addtocart($cart,$id,$name,$price,$count);
//session_register("cart");
$_SESSION['CART'] = $cart;
}
if ($action == "del") {
delfromcart($cart,$id);
//session_register("cart");
$_SESSION['CART'] = $cart;
}
?>用SESSION保存一个对象.
这问题很奇特,有些时候这程序是正常的(正常就不说了),有些时候,明明$_SESSION['CART'] 已经存在,却执行alert("no");也就是$_SESSION['CART']不存在重新生成。
require("cart_class.php");
session_start();if (!isset($_SESSION['CART'])) {
?>
//测试$_SESSION['CART']是否存在的
<script>
alert("no");
</script>
<?
$cart = new cart;
$_SESSION['CART'] = $cart;
}
else {
$cart = $_SESSION['CART'] ;
}
if ($action == "add") {
addtocart($cart,$id,$name,$price,$count);
//session_register("cart");
$_SESSION['CART'] = $cart;
}
if ($action == "del") {
delfromcart($cart,$id);
//session_register("cart");
$_SESSION['CART'] = $cart;
}
?>用SESSION保存一个对象.
这问题很奇特,有些时候这程序是正常的(正常就不说了),有些时候,明明$_SESSION['CART'] 已经存在,却执行alert("no");也就是$_SESSION['CART']不存在重新生成。
放在最上边 试试
这点是怎么知道的?
因为首次执行整个页面的时候如下:
if (!isset($_SESSION['CART'])) {
?>
//测试$_SESSION['CART']是否存在的
<script>
alert("no");
</script>
<?
$cart = new cart;
$_SESSION['CART'] = $cart;
}
else {
$cart = $_SESSION['CART'] ;
}有$_SESSION['CART'] = $cart;就把$cart 存到了$_SESSION['CART']里;
然后有一个表单提交到本身页面的过程。
在提交表单的时候,会有alert("no");提示
试过了,不行。
session_start();
放最上面的话,在用对象方法的时候貌似有问题。
要在session中使用一个类的实例,必须先保证类的结构(申明)被加载。
另外,session是迟刷新后生效的。也就是说,$_SESSION在这首次赋值是无值的,只有在第二次调用时,$_SESSION才有正确的值馈。
楼主所说“有时正常”应该是1+N次以后。初次赋值是无效的。
这种作法在技术研究上只能供学习研究,应用于大型构架时,SESSION存储会成为效率的瓶颈。
接者是本页面向本页面传值(),使用到$_SESSION['CART']
算第二次调用了吗?
“次”,简意就是(刷新)refresh页面。
---------------开头print 一下,这session值。。
第一次,提交给本页(a.php),在a.php文件中对SESSION进行了赋值,再对SESSION进行输出(SESSION无效);
第二次,只刷新本页(a.php),无需提交任何值,再对SESSION输出(SESSION有效!)这个是比较庸俗的说法,文言化的说法。google一下比较官方哈。我一俗人。
应用于大型构架。。个人看法。1.SESSION必然会存在。但要保证小,只存储必要信息。(SESSION的要求)
2.组件支持,如果能保证SESSION只存储USER——ID,而其它信息,有第三方组件完成。多取决于Frameworks的机制。
3.富客户端存储,Web Browser(cookie 2KB),(Flash)SharedObject 100KB,用于作校验铺助客户端持久化,很不错。
应该还有其它的机制,只是我学识较浅,以上都是一些工作中的经验。
这次发帖学到了不少。