1

誰かがこの問題について私を助けてくれることを願っています..ユーザーに必要なカテゴリを選択するためのフォームがあります。このフォームのチェック ボックスを使用して、カテゴリを選択できるようにします。彼らがカテゴリを選択した時点で、選択したカテゴリを SESSION に保存し、その後、カテゴリ ページが次のページにリダイレクトされます。

その工程はこんな感じ…

if ( $totalCategory >= 1 && $totalCategory <= 10 ) {

    $_SESSION['category'] = $_POST['category']; 

    $url = BASE_URI . 'select_subject.php'; // Define the URL:      
            header("Location: $url");
            exit(); // Quit the script. 
}

私の問題は、ページが次のページ (select_subject.php) にリダイレクトされるときに、ユーザーが選択したカテゴリを変更するためにブラウザの戻るボタンを使用して再度カテゴリ ページに戻る必要がある場合があることです。しかし、それが発生すると、再びカテゴリページに移動することはなく、ブラウザは次のようなエラーを表示します...

ドキュメントの有効期限が切れました。このドキュメントは利用できなくなりました。

注:しかし、ページのリロードボタンをクリックすると、ページが正しく表示されます。

この場合、これを回避するために誰かの助けが必要であり、以前に選択したカテゴリを適切に表示して、カテゴリページを再度表示する必要があります..

更新コード:

<?php

if ( isset($_GET['submitted_category'])) {

    if ( isset ( $_GET['category']) && is_array( $_GET['category'])) {

        $_SESSION['selectedcatcount'] = count( $_GET['category']);
        $totalCategory = count( $_GET['category']);

        if ( $totalCategory >= 1 && $totalCategory <= 10 ) {

            $_SESSION['category'] = $_GET['category'];              
            $url = BASE_URI . 'select_subject.php'; // Define the URL:      
                    header("Location: $url");
                    exit(); // Quit the script.         
        } else {        
            echo '<div class="error">
                    <img src="images/error.png" />
                    <p style="margin:2px 0 0;">Please select atleast 1, not more than 10 categories.</p>
                  </div>';          }           
    } else {                
        echo '<div class="error">
                <img src="images/error.png" />
                <p style="margin:2px 0 0;">This can not be empty. Please select atleast one category.</p>
              </div>';  
    }
}   

$q = 'SELECT * FROM category ORDER BY category_id';
$r = mysqli_query( $dbc, $q);

$c = 0;
$i = 0;

echo '<form action="" method="get" accept-charset="utf-8">';
echo '<table><tr>'; 

    while($row = mysqli_fetch_array( $r, MYSQLI_ASSOC  )){

        // if remainder is zero after 2 iterations (for 2 columns) and when $c > 0, end row and start a new row:  
        if( ($c % 2) == 0 && $c != 0){
            echo "</tr><tr>";
        }
        echo '<td width="50%">
                <input type="checkbox" name="category[]"  value="' . $row['category_id'] . '" />' . $row['category_name'] . 
             '</td>';
    $c++; 

    } // while..
        // in case you need to fill a last empty cell:
        if ( ( $i % 2 ) != 0 ){
        // str_repeat() will be handy when you want more than 2 columns
          echo str_repeat( "<td>&nbsp;</td>", ( 2 - ( $i % 2 ) ) );
        }
    echo "</tr></table>";
?>
                        </div>                  
                        <div class="continue">
                            <p>Please click 'Continue' button to proceed to next step</p>
                            <input type="submit" value="Continue" class="continue-btn" />
                            <input type="hidden"   name="submitted_category"   value="TRUE" />
                        </div>
                        </form> 

誰かが私を助けてくれることを願っています..ありがとう..

4

2 に答える 2

1

$_GET メソッドを使用する場合、この問題に直面することはありません。フォーム メソッドを get に変更して試してみてください。

于 2013-01-19T15:36:33.403 に答える
1

このコードを使用してください....

if ( $totalCategory >= 1 && $totalCategory <= 10 ) {

    //Replace the following line 
    $_SESSION['category'] = $_POST['category']; 

    //with the line below
    $_SESSION['category'] = $_GET['category'];

    $url = BASE_URI . 'select_subject.php'; // Define the URL:   e fio

        header("Location: $url");
        exit(); // Quit the script. 
}

コードを共有していただきありがとうございますが、どのエラーがトリガーされているかを教えていただくのを忘れていました。それをよく見てみましょう。入力が正しいことを宣言しましたか

 <input type="checkbox" name="category[]" value="....">
 <input type="checkbox" name="category[]" value="....">
 <input type="checkbox" name="category[]" value="....">

そしてもちろん提出

 <input type="submit" name="submitted_category" value="Submit Categories">

送信ボタンが押された後、リダイレクトする前に、URLは次のようになります。

 select-category.php?category[]=2&category[]=3&category[]=7..........

それでも多くは、発生しているエラーに依存します。

于 2013-01-19T18:27:24.130 に答える