0

これは単純かもしれませんが、私は気が狂います。とにかく、PHP セッションを作成しました。

<?php
session_start();
$_SESSION['sort'] = 'product_name';
$_SESSION['type'] = 'DESC';
$_SESSION['limit'] = '5';

$sort = $_SESSION['sort'];
$type = $_SESSION['type'];
$limit = $_SESSION['limit'];

$query = mysql_query("SELECT * FROM table_name ORDER BY $sort $type LIMIT $offset, $limit");//This query is working...

セッション変数を変更する条件ステートメントを作成しました。

<a href="?action=orderList&sort=product_price&type=ASC">Sort Items from Lowest to Highest</a>

商品リスト制限のループ プロセスも作成しました。

for($i=10; $i<100; $i+=10){
   blah blah.../// Anyway, this is working already... Just give you a hint.
}

現在の「Sort of Items」が「product_name」に設定され、「Type」が DESCENDING(DESC) に設定され、LIMIT が 5 であるとします。

ユーザーが上記のリンクをクリックしてアイテムをソートまたは制限するときに、登録されているセッションの値を変更したいと考えています。

だから私がしたことは:

if($_GET['action']=='orderList'){
    ///I've extracted the values of provided link
    $_SESSION['sort'] = $_GET['sort'];
    $_SESSION['type'] = $_GET['type'];
    $_SESSION['limit'] = $_GET['limit'];
    ///PUT THEME INTO VARIABLES
    $sort = $_SESSION['sort'];
    $type = $_SESSION['type'];
    $limit = $_SESSION['limit'];
}

現在、セッションは「?action=orderList」が存在する場合にのみ機能し、別のページに移動した後、セッション変数は元の値 (sort=product_name、type=DESC、および limit=5) に戻ります。セッションの値を強制的に変更する方法や別の PHP コードはありますか?

編集済み:

ユーザーがセッションのさまざまな新しい変数を含む「リンク」をクリックすると、リンクによって提供される新しい変数によってセッションが上書きされることに注意してください。ユーザーが (ナビゲーションなど) をクリックしても、セッションは破棄されません。

4

1 に答える 1

1

わかりましたので、実際にはアクション ステートメントをまったく見る必要はありません。a が存在するかどうかを確認できます。存在する場合は、が渡され$_GETたと想定します。$_GET

ここで行っているのは、変数が渡されているかどうかを確認することです。渡されている$_GET場合は、セッション変数を置き換えます。そうではなく、セッション変数が空の場合、セッション変数をデフォルトにリセットします。セッション変数が空でない場合は、それをそのままにして、クリーニングのために var にプルします (念のため)。

<?php
    session_start();

        if(!empty($_GET['sort'])){
        $sort = $_GET['sort'];
        $_SESSION['sort'] = $sort;
        } elseif(empty($_SESSION['sort'])) {
        $sort = 'product_name';
        $_SESSION['sort'] = $sort;  
        } else {
        $sort = $_SESSION['sort'];  
        }

        if(!empty($_GET['type'])){
        $type = $_GET['type'];  
        $_SESSION['type'] = $type;
        } elseif(empty($_SESSION['type'])) {
        $type ='DESC';
        $_SESSION['type'] = $type;  
        } else {
        $type = $_SESSION['type'];  
        }

        if(!empty($_GET['limit'])){
        $limit = $_GET['limit'];    
        $_SESSION['limit'] = $limit;
        } elseif(empty($_SESSION['limit'])) {
        $limit = '5';
        $_SESSION['limit'] = $limit;    
        } else {
        $limit = $_SESSION['limit'];    
        }


    //in the event someone slips in a ; delete from * where 1=1
    $sort = mysql_real_escape_string(preg_replace('!;\*=!','',$sort));
    $type = mysql_real_escape_string(preg_replace('!;\*!=','',$type));
    $limit = mysql_real_escape_string(preg_replace('!;\*=!','',$limit));

/*Set $offset in here somewhere */


$query = mysql_query("SELECT * FROM table_name ORDER BY $sort $type LIMIT $offset, $limit");
?>
于 2013-04-30T05:37:02.790 に答える