【问题标题】:PHP - GET METHOD - Reading posted URL variables valuesPHP - 获取方法 - 读取发布的 URL 变量值
【发布时间】:2020-07-24 22:31:33
【问题描述】:

我有两个文件,第一个是一个表单 (signup.php),它将用户插入的字段(名字、姓氏、用户名、电子邮件..等)发布到另一个包含错误处理程序 (Signup.chk. php) 使用 post 方法。如果输入出现错误,我希望 signup.chk.php 使用 GET 方法将用户插入的所有字段发送回 signup.php 文件,以重新显示带有错误和用户输入的表单。

我期待一个如下所示的 URL:

localhost/signup?signup=error&firstname=Joe&lastname=Doe&user=Jdoe1&email=Jdoe@abc.com

如果用户没有插入特殊字符作为输入,它可以正常工作。

如果用户插入 $ 或 & 作为输入的一部分,它将弄乱另一页上的 _GET 函数。

对 URL 值进行编码/解码以防止 XSS 并允许 signup.inc 文件正确接收 url 值并再次在表单字段中正确显示它的最佳方法是什么(即使包含 $&% ..等)

【问题讨论】:

  • 不使用查询参数,而是将用户输入存储到会话变量中,然后在您的signup.php 上检索它。结帐these关于 W3Schools 课程的简单教程。

标签: php url getmethod


【解决方案1】:

要做你想做的事,你可以使用 urlencode() 和 urldecode()。

// To form the URL
$url = "localhost/signup?signup=error&firstname=" . urlencode($firstname);
// To get the value from the URL and decode it.
$firstname = urldecode(isset($_GET['firstname']) ? $_GET['firstname'] : "");

但是,存在一个安全问题,用户可能会在 url 上添加一些代码来攻击您的网站,因此您需要采取一些措施来避免它,例如限制输入长度或避免不必要的特定字符。

【讨论】:

  • 感谢 Derek 提供的 urlcode/encode 建议,这真的很有帮助。然而,当我正在经历 PHP 的学习过程时,我意识到我不需要使用 GET 在注册表单中发布用户信息。 POST 将更好地服务于我的目的。
猜你喜欢
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2018-10-25
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多