【发布时间】:2013-06-17 16:55:34
【问题描述】:
输入形式如
<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'];
【问题讨论】:
-
输出用户数据时请使用
htmlspecialchars防止XSS。 -
阅读
$_REQUEST的文档。 php.net/manual/en/reserved.variables.request.php -
@Marcel Korpel
htmlspecialchars用在' -
不在
value='<?php echo $_POST['date_month'].$_GET['date_month']?>'中,不在date_month=$post_date_month中(你应该在其中urlencode参数)并且不要在@和我的名字之间放置空格以便正确地给我打电话。 -
@Crontab 但是当
$_GET['blah']包含foo,$_POST['blah']包含bar,$_REQUEST['blah']将包含什么?是foo、bar、foobar还是barfoo?
标签: php post get pagination