<?
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']不存在重新生成。
解决方案 »
- PHP能实现这个功能吗?
- php如何获取当前页地址栏的URL地址
- 由远程获取文件保存到本地的过程中,获取文件数据、获取文件类型(扩展名),免不了要两次读取文件吗?
- PDF2SWF 中文转换
- apache php 服务器配置域名后登录页面后 用户名显示不正确
- “花一晚上做的游戏”,又一版本
- 如果页面静态化了,那html怎么接收参数呢?
- 【深圳】胜行软件招PHP程序员3-5名(加急)
- mysql如何仅保留最新1000条数据而删除其他记录啊?
- 在yii1.1的框架下如何使用token
- php文件写入问题
- 大家有遇到过这样的问题没apache 运行 调试php 之后过一会就会有一个arp.exe 起来system32下的 结果服务就不行了。
放在最上边 试试
这点是怎么知道的?
因为首次执行整个页面的时候如下:
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,用于作校验铺助客户端持久化,很不错。
应该还有其它的机制,只是我学识较浅,以上都是一些工作中的经验。
这次发帖学到了不少。