0

高度なパラメーター化されたクエリがあり、ユーザーがパラメーターを設定すると、それに応じてクエリが構築されます。フォームのアクションを結果ページに向け、そのページで を使用して値をフェッチします$_POST

これらの値は正しく取得できますが、ページを更新した瞬間に の値が失われます$_POST。これに使用する必要があり$_SESSIONますか?あまり多くのセッションが必要ないため、ユーザーがセッションを使用したらすべてを設定解除する必要がありましたが、どうすればよいですか?

<form action="result.php?script_id=3&sub_script_id=1">
<label for="search_for">Search For</label>
<select id="search_for" name="contact_first_name">
<?php
    while($throw_names = mysqli_fetch_array($fetch_advance_param_values)) {
?>
    <option value="<?php echo $throw_names['contact_first_name']; ?>"><?php echo $throw_names['contact_first_name']; ?></option>
<?php
    }
?>
</select>
<br />
</form>

results.php

<?php
$fetch_results = mysqli_query($running_db, 
"SELECT rec_num, record_locked, contact_first_name, contact_last_name,
contact_mobile_no, contact_office_no FROM tbl_contacts WHERE 
contact_first_name = '{$_POST['contact_first_name']}' 
AND group_id_entry={$_SESSION['user_group_id']} 
ORDER BY $sort_column_name $sort_order $limit_records");
?>

心配しないでください。今は$_POST['contact_first_name']クエリで直接使用しています。これはテスト目的のためだけです。後で使用しますmysqli_real_escape_string()

4

2 に答える 2

1

セッションまたは GET パラメータの使用を懸念している理由がわかりません。とにかく、検索フォームは通常 GET で実装されます。

しかし、別のオプションがあります: 検索自体をデータベースに保存します (実際には POST フォームが理にかなっています):

  1. 検索フォームが送信される
  2. 検索クエリをsearchesテーブルの新しい行として保存する
  3. のようなものにリダイレクトします/searches/?id=1234
  4. そのページで、searchesテーブルから検索クエリを再構築して実行します

一見すると、このソリューションは少しやり過ぎに見えますが、検索結果をキャッシュしたり、ユーザーにお気に入りの検索を保存したりするなどの新しい可能性を提供します。したがって、このアプローチが理にかなっているシナリオがあります。

于 2013-02-27T09:36:06.440 に答える
0

投稿が送信される最初のページ:

setcookie('searchquery','I want cookies');

2ページ目

if(isset($_COOKIE['searchquery']))
    {
    $search = mysqli_real_escape_string($link,$_COOKIE['searchquery']);
    }
于 2013-02-27T09:25:43.903 に答える