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>

结果.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 回答