-3

当用户提交任何表单时,$_GET['variable_name']网页会发送一个 a,并会给出一个如下所示的 URL: www.mywebsite.com/index.php?variable_name_here='yes'.

然而,人们只需将 URL 写入www.mywebsite.com/index.php?variable_name='yes'网站的地址栏,即可访问这部分脚本,而无需实际提交表单!

这是个问题!它破坏了与该表单提交相关的脚本的特定部分!这是因为与表单相关的脚本部分$_GET['variable_name']无法获取表单应发送的变量,因为它从未提交!

当人们通过将 URL 发送回来操作 URL 时,如何阻止他们访问脚本的特定部分www.mywebsite.com/index.php

PS:这是用户通过表单提交的数据,然后处理(不涉及 SQL 或任何类似软件)

4

2 回答 2

0

如果您担心人们在没有登录或没有正确参数的情况下进入您的站点,您应该首先检查是否存在正确的 $_GET 变量,使用isset(). 如果您期望的所有参数都存在,则允许它们通过,否则用于header('Location: /index.php');强制重定向。

于 2013-08-16T23:06:47.020 回答
-2

要从您重定向www.mywebsite.com/index.php?variable_name='yes'到您需要在打开 HTML 标头之前www.mywebsite.com/index.php包含以下代码!如果您将其放置在 中,此解决方案将适用于整个网站中的任何 $_GET 变量,无需更改代码。includes("filename_here")

//if there are any $_GET variable(s) set (doesn't matter what the name of the variables are)
if (! empty($_GET))
{
    //if there is no record of the previous page viewed on the server
    if(! isset($_SERVER['HTTP_REFERER']))
    {
        //get requested URL by the user
        $redir = $_SERVER['PHP_SELF'];

        //split parts of the URL by the ?
        $redir = explode('?', $redir);

        //redirect to the URL before the first ? (this removes all $_GET variables)
        header("Location: $redir[0]");
    }
}
于 2013-08-16T22:59:47.100 回答