-3

ユーザーがフォームを$_GET['variable_name']送信すると、Web ページから が送信され、次のような URL が 表示されますwww.mywebsite.com/index.php?variable_name_here='yes'

ただしwww.mywebsite.com/index.php?variable_name='yes'、実際にフォームを送信しなくても、Web サイトのアドレス バーに URL を書き込むだけで、スクリプトのこの部分にアクセスできます。

これは問題です!そのフォーム送信にリンクされているスクリプトの特定の部分が壊れています! これは$_GET['variable_name']、フォームが送信されないため、フォームによって送信されるべき変数を取得できないスクリプトの部分に関連するためです。

URL を に送り返して URL を操作しているユーザーが、スクリプトの特定の部分にアクセスできないようにするにはどうすればよいwww.mywebsite.com/index.phpですか?

PS : これは、ユーザーがフォームから送信したデータを処理するためのものです (SQL や同様のソフトウェアは関係ありません)。

4

2 に答える 2

-2

www.mywebsite.com/index.php?variable_name='yes'からにリダイレクトするには、HTML ヘッダーを開く前にwww.mywebsite.com/index.php、次のコードを含める必要があります。このソリューションは、コードを変更する必要なく、Web サイト全体の任意の $_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 に答える