佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1143|回复: 14

也是SESION的问题请教大家!

[复制链接]
发表于 13-6-2008 03:49 PM | 显示全部楼层 |阅读模式
我想用以下的SESSION储存起来,然后可以用在SHOPPING CART里!
可以这样写吗?

  if ($_SESSION['user'] == '' || $_SESSION['user'] == null) {
    // generate random encryption string
    $enc_str = rand(100000,1000000);
    $_SESSION['user'] = substr(('user'.$enc_str), 4,8);
    echo substr(('user'.$enc_str), 4,8);
    }
    elseif ($_SESSION['user'] != '' || $_SESSION['user'] != null){
    echo substr(('user'.$enc_str), 4,8);
回复

使用道具 举报


ADVERTISEMENT

发表于 14-6-2008 10:50 AM | 显示全部楼层
原帖由 明明明 于 13-6-2008 03:49 PM 发表
我想用以下的SESSION储存起来,然后可以用在SHOPPING CART里!
可以这样写吗?

  if ($_SESSION['user'] == '' || $_SESSION['user'] == null) {
    // generate random encryption string
    $enc_str = rand( ...


请问你这session是用在 shopping cart 的那一方面??

以下是我看了你的源码的意见,如果有得罪之处请见谅哦。。

说真,以下这段不懂你的用意是什么的
substr(('user'.$enc_str), 4,8);

你一开始是计算一个随机号码
然后将 user + 随机号码, 然后又你又substr
substr(('user'.$enc_str), 4,8);

你的程式例子就像 :
你的random号码是 12345
然后将 'user' + 12345 = user12345
substr(('user'.$enc_str), 4,8); 得到的答案不就是 12345 吗?
其实一开始random号码时你就得到答案了,为什么还要做substr多一个步骤??
回复

使用道具 举报

发表于 15-6-2008 01:09 PM | 显示全部楼层
if ($_SESSION['user'] == '' || $_SESSION['user'] == null) {
应该用isset比较正确。

把SESSION储存,不需要使用Random Number.
回复

使用道具 举报

 楼主| 发表于 16-6-2008 02:27 PM | 显示全部楼层
原帖由 keroro小军曹 于 14-6-2008 10:50 AM 发表

substr(('user'.$enc_str), 4,8);


我只是方便确认而已!
我的LOGIC是这样的:
当用户流览是就先SET SESSION=USER*****
这个SESSION是在用户登入户口之前的SHOPPINGCART,
当用户登入后这个SESSION将被LOGIN的SESSIOM取代!

不好意思我是个新手请大家不要见怪!

请问 isset 和ENDSET 是什么呢?
回复

使用道具 举报

发表于 17-6-2008 11:55 AM | 显示全部楼层
原帖由 明明明 于 16-6-2008 02:27 PM 发表

我只是方便确认而已!
我的LOGIC是这样的:
当用户流览是就先SET SESSION=USER*****
这个SESSION是在用户登入户口之前的SHOPPINGCART,
当用户登入后这个SESSION将被LOGIN的SESSIOM取代!

不好意思我是个新手请 ...


哦。。其实一个没Login的浏览者是不需要做session的啊。。
你可以先把用户购买的全部东西写在session, 然后用户login后做Payment.
我可以给的建议就像以下 :

例子 :

A 是一个还没login的用户,
A 他在你的网购里购买了2样东西, 你先把他两样货品的代号或ID 放进 SESSION 里 (我比喻session['product'] 是我存货品的session, 货品的ID是 1 和 2)

现在 session['product'] = "1 , 2“;

当要显示用户的购物产品,你可以将 session['product']里的id splitexplode 出来,然后再从你的database找回产品资料
(这样做就可以就算一个没login的用户也可以先做网购然后最后才login做payment.)

最后一个步骤是
如果用户是还没 login 的,你可以给一个警告并且不给进入payment process。
当用户login了,就做总结的 payment process 吧。。



你是说 ISSET 和 UNSET 吧?

ISSET 是可以让你检查你的 variable 是否有资料在里面的
UNSET 就是把variable里面的资料都清除 <就像 UNSET(session['product'] ) > 这样session['product']里的资料都会清除掉,当用户完成购买以后记得unset seesion哦。。因为用户回到首页时还会看见购物车里有刚才购买的产品的,除非用户购买后直接关掉浏览器而已。

我也算是一个新手而已,慢慢吸取经验吧。。所以加油咯。。

建议你每次都可以用纸和笔画出process flow,当你看见整个流程就会比较容易做了。。
回复

使用道具 举报

 楼主| 发表于 18-6-2008 11:13 AM | 显示全部楼层
那么这样必须做ARRAY才可以吗?
回复

使用道具 举报

Follow Us
发表于 18-6-2008 10:45 PM | 显示全部楼层
原帖由 明明明 于 18-6-2008 11:13 AM 发表
那么这样必须做ARRAY才可以吗?


对。。当将session里的资料分出来时,全部做成array...
回复

使用道具 举报

 楼主| 发表于 19-6-2008 01:34 PM | 显示全部楼层
$products_id = $_GET['product'];   

    if(!empty($_SESSION['sessionCart'])){
            
            echo "session exist";
    }
    else {

        echo "session don not exist, create session";
        $Cart[]= array("products_id"=>"1", "products_name"=>"1", "order_quantity"=>"1","order_quantity"=>"1");
        $_SESSION['sessionCart'] = $Cart;
    }

请问SESSION可以这样写吗?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 19-6-2008 01:35 PM | 显示全部楼层
请问ARRAY 是要写在GLOBAL还是CART 的PAGES里呢?
回复

使用道具 举报

发表于 19-6-2008 03:23 PM | 显示全部楼层
原帖由 明明明 于 19-6-2008 01:35 PM 发表
请问ARRAY 是要写在GLOBAL还是CART 的PAGES里呢?


这要depend你要怎样的设计了,如果是我做是会将 array 放在 function 里,然后做存为独立的php文件,
如果下次每一页都要显示cart 里的物品,我只要include 独立的php文件再call回function就行了。
回复

使用道具 举报

 楼主| 发表于 19-6-2008 05:47 PM | 显示全部楼层

回复 10# keroro小军曹 的帖子

多谢你的解答!

我想请问我这样写的LOGIC 对吗?

<?php
        $products_id = $_GET['product'];       
        if(!empty($_SESSION['sessionCart'])){
                        echo "session exist";
        }
        else {
                echo "session don not exist, create session array";
                // create session array
                $_SESSION['sessionCart'] = array("products_id"=>"", "products_name"=>"", "order_quantity"=>"","order_price"=>"",);
        }
?>
<h2>My Shopping Cart</h2>
<?php
// If no product selected
if ($products_id == "" ){
        echo "i m not from product infor pages";
        // check session array here
        }
else {
        echo "i m from product infor pages!";
        $GetProduct = "SELECT * FROM products WHERE products_id='$products_id'";
        $ResultProduct = mysql_query($GetProduct) or die("Error retrieving data");
        while ($record = mysql_fetch_array($ResultProduct)) {
                $products_id = $record["products_id"];
                $products_name = $record["products_name"];
                $products_quantity = $record["products_quantity"];
                $products_price = $record["products_price"];
                echo "<br>";
                echo $products_name;
                // check session array here
        }
}
?>
回复

使用道具 举报

 楼主| 发表于 20-6-2008 09:46 AM | 显示全部楼层
还有想请问,要如何把ARRAY 里的VALUE分解出来呢?

比如说:
foreach($_SESSION['Cart'] as $key=>$value)

得到的DATA是 :   

AAA,  BBB,  CCC,  DDD
EEE, FFF, GGG, HHH

那么我要怎么分开呢?

1.  AAA | BBB | CCC
2.  EEE | FFF | GGG

因为我是想把ARRAY 的DATA 放进一个TABLE里!
回复

使用道具 举报

发表于 21-6-2008 03:41 PM | 显示全部楼层
serialize 整个array lor 然后放进table
回复

使用道具 举报

发表于 22-6-2008 01:55 AM | 显示全部楼层
原帖由 明明明 于 20-6-2008 09:46 AM 发表
还有想请问,要如何把ARRAY 里的VALUE分解出来呢?

比如说:
foreach($_SESSION['Cart'] as $key=>$value)

得到的DATA是 :   

AAA,  BBB,  CCC,  DDD
EEE, FFF, GGG, HHH

那么我要怎么分开呢?

1.  A ...


你可以用explode 这个function
例子:
$_SESSION['Cart']  = “AAA,  BBB,  CCC,  DDD,EEE, FFF, GGG, HHH”;

你可以用explode来分解出来

$cart = explode("," , $_SESSION['Cart']); //分解session有","逗号的资料
$count_cart  =   count($cart)  //计算有多少个逗号,例子的session里有7个都好。。所以 $count_cart = 7

for($i=0;$i<$count_cart;$i++)
{
    echo $cart[$i]."<br>";
}

这样用loop for就能分解完所有session里的资料.
回复

使用道具 举报

发表于 22-6-2008 02:03 AM | 显示全部楼层
原帖由 明明明 于 19-6-2008 05:47 PM 发表
多谢你的解答!

我想请问我这样写的LOGIC 对吗?


My Shopping Cart


一样用explode的function把资料分解出来。。
然后用loop for count 出 array的资料
再用array的资料在database query出来。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-12-2025 10:32 AM , Processed in 0.153730 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表