php – 使用$_GET和$_POST
也许我从一开始就做错了,如果是这样的话,我也会这样做……
我有一个菜单项,作为URL的一部分传递事件ID#.在我的特定情况下,它将用户带到该事件的信息页面.然后有一个按钮,让他们注册参加活动.点击它们并注册参加活动并返回到相同的信息页面,现在它们已经注册并让他们看到一些额外的东西. 当他们第一次点击页面时,我使用$_GET来计算事件ID#,如果他们单击注册按钮作为隐藏输入字段,则会将其传递回页面.但这次我需要使用$_POST来计算事件ID#.所以我的查询中的代码有一个布尔部分,看起来像 SELECT stuff FROM ... WHERE eventID = ($_GET["ID"] ? $_GET["ID"] : $_POST["ID"]) 它有效,但感觉它可以做得更好…… 解决方法
>清理数据库输入.
mysql_real_escape_string() 是一种快速简便的方法(或者,如果ID始终是数字,则可以使用
intval() ).不要像
Bobby Tables那样倒下的学校.
>如果您不确定使用了哪种请求方法,请使用$_REQUEST超全局,它包含GET和POST变量(例如:$_REQUEST [‘ID’]).我通常不使用$_REQUEST,因为我想清楚我的数据来自哪里,但这是一个完美的使用方式. 正如Nick Presta所指出的,$_REQUEST还包含cookie变量,事实上,名称冲突的默认*优先顺序是$_COOKIE,$_POST,然后是$_GET.鉴于此,在将数据插入查询之前,您可以执行您现在正在执行的操作,也可以使用$_SERVER [‘REQUEST_METHOD’]代替: // You can use mysql_real_escape_string() instead if you want $id = ($_SERVER['REQUEST_METHOD'] == 'POST') ? intval($_POST['id']) : intval($_GET['id']); 此外,正如outis所指出的,请记住,您可以选择使用prepared statements而不仅仅是原始SQL查询. * – 正如Stewart在评论中提到的那样,通过variables_order配置指令的顺序是configurable. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |