加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用$_GET和$_POST

发布时间:2020-12-13 22:11:59 所属栏目:PHP教程 来源:网络整理
导读:也许我从一开始就做错了,如果是这样的话,我也会这样做…… 我有一个菜单项,作为URL的一部分传递事件ID#.在我的特定情况下,它将用户带到该事件的信息页面.然后有一个按钮,让他们注册参加活动.点击它们并注册参加活动并返回到相同的信息页面,现在它们已经注册
也许我从一开始就做错了,如果是这样的话,我也会这样做……

我有一个菜单项,作为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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读