2

输入形式如

<form action="<?php echo (htmlspecialchars($_SERVER["PHP_SELF"] .'?page=1')) ?>" method="post">

<input type='text' name='date_month' value='<?php echo $_POST['date_month'].$_GET['date_month']?>'>

</form>

然后接收输入

$post_date_month = $_POST['date_month'].$_GET['date_month'];

基于输入从mysql中选择/获取过滤数据

由于可能有很多行数据,因此创建了分页。像这样

for ($page_i = 1; $page_i <= $total_pages; $page_i++) {
echo "<a href='__filter_mysql_data.php?page=$page_i&date_month=$post_date_month&date_year=$post_date_year'>| $page_i |</a> ";
}

笔记!如果在 url 中我不使用&date_month=$post_date_month,那么当用户单击页码时$page_i,脚本将显示来自 mysql 的所有数据(不基于$post_date_month;不仅是用户选择的月份,而且是所有月份,因为页面重新加载后$_POST['date_month']“消失”)。

现在这对我来说是唯一可行的解​​决方案(找到了几个分页类的例子,但这些例子对我来说非常复杂,所以无法在合理的时间内根据我的需要进行修改)。所以决定创造一些简单的东西。

该脚本根据需要运行,只是这$post_date_month = $_POST['date_month'].$_GET['date_month'];看起来有点“疯狂”。所以问题是:代码是否可以接受(可以在脚本中使用)?使用相同的查询(单击),用户可以设置/传递 $_POST 或 $_GET ,而不能同时传递两者。

更新

基于 Ø Hanky Panky Ø 建议(不幸被删除)更改

$post_date_month = $_POST['date_month'].$_GET['date_month'];

$post_date_month = $_REQUEST['date_month'];

4

2 回答 2

1

代码有点奇怪,但我认为可以接受。只注意不要将未转义的 $_POST 和 $_GET 变量传递给查询,因为它可以是 Sql 注入的向量。

于 2013-06-17T17:00:18.527 回答
1

您可以像这样构建表单,但是当您使用 提交它时POST,该特定变量将完全存储在$_POST['date_month'].

在您的情况下,当您提交表单时,您只会找到 in 中的page变量GET(假设 in 中没有查询字符串$_SERVER["PHP_SELF"])。

所以你只需要使用:

$post_date_month = $_POST['date_month'];

但是,如果您希望用户仅以一种方式(postget)提供月份,您最好使用类似(为清楚起见写出来):

if (isset($_POST['date_month']))
{
  $post_date_month = $_POST['date_month'];
}
elseif (isset($_GET['date_month']))
{
  $post_date_month = $_GET['date_month'];
}
else
{
  // no month given, so for example:
  $post_date_month = '';
}
于 2013-06-17T17:07:43.800 回答