0

私はeコマースのウェブサイトを作りたいのですが、ユーザーにアイテムの購入を強制するのではなく、好きなときにいつでも購入できます。

CodeIgniterのセッションクラスを使用してこれを行うことはできますか?ユーザーセッション(つまり、ショッピングカートアイテム)を長期間(おそらく6か月または1年)維持することができますか?セッションに関するCIのユーザーガイドを読みましたが、構成ファイルでsession_expire_on_close変数をfalseに指定することで、セッションが期限切れにならないように設定できると書かれています。これにより、ユーザーが閉じた後もセッションが実行され続けると思います。ブラウザ。

ユーザーがサイトにアクセスしたり、バスケットに何かを追加したりするたびに、セッションを開始できます。その後、彼らが去って戻ってくることを決定したとき、私はデータベースのセッションテーブルから彼らのショッピングカート情報を検証し、それを彼らに返すことができます。

また、user_data列のユーザーガイドに例として示されているci_sessionsテーブルにショッピングカートアイテムを保存する必要があるかどうかも知りたいですか?それで十分でしょうか?

私が正しい方向に向かっているかどうかを知りたいだけです。ありがとうございました

4

2 に答える 2

4

簡単な答え:はい、あなたは正しい道を進んでいます。

私がそれをどのように行うか(これのいくつかは明白かもしれません):

  1. sessionライブラリをに追加して、config/autoload.php自動的に起動するようにします。

  2. 必要に応じて、「セッション変数」セクションを設定しconfig/config.phpます- sess_expiration = some long timesess_expire_on_close = falseなどuse_database = true

  3. 簡単にするために、セッションには製品IDのみを保存してください。以下はadd_to_cart例としての基本的な機能です。

    public function add_to_cart($product_id) {
    
    // Whenever a user adds an item to their cart, pull out any they already have in there
    
    $cart_products = $this->session->userdata('cart_products');
    
    // Add the new item
    
    $cart_products[] = $product_id;
    
    // And put it back into the session
    
    $this->session->set_userdata('cart_products', $cart_products);
    
    }
    
  4. セッションからproduct_idsを使用して、データベースから詳細(製品名など)を引き出し、画面に表示します。

CIは独自のsession_idを保持するため、このアプローチでは、ユーザーがサイトに再度アクセスするたびにセッションが自動的に再入力されるため、ci_sessionsテーブルを手動でクエリしたり、標準のPHPセッションを使用したりする必要はありません。

上記はテストされていませんが、それが役立つことを願っています。何か明確にする必要がある場合は叫んでください。

于 2013-02-05T12:51:56.447 に答える
0

CodeIgniterは、 PHPセッションに干渉しない独自のセッション(これを参照)を利用します。

したがって、通常のPHPセッションを使用できます

session_start();

これにより、既存のセッションが作成または再開されます。このIDはCookieに保存されます(通常はPHPSESSID)。次に、CodeIgniterのセッションの代わりにそのセッションを使用します

$_SESSION['MyData'] = 12345;

たぶん、あなたはあなたのCodeIgniter設定で、cookie名がconfig.phpで衝突しないことをチェックすることができますsess_cookie_name

于 2013-02-05T11:38:41.367 に答える