2017-07-13 24 views
-2

私はform.phpと呼ばれるフォームページを持っていて、それが提出されるとstep.phpに行きます。PHPでの直接アクセスの制限

ユーザーがstep.phpに直接行く場合、error.phpに移動する必要があります。

私はコードを試してみましたが、ユーザが `form.php」

私が試したコードからリダイレクトされたとき、それはまた、error.phpに行く: -

<?php 
    if ($_SERVER['REQUEST_METHOD']=='GET' && realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) { 
header('HTTP/1.0 403 Forbidden', TRUE, 403); 
    die(header('location: error.php')); 

} 
?> 
+2

は、提出フォームに関する情報を格納するために$ _SESSIONやクッキーを使用することができますか? –

+0

あなたはコードを助けることができます.. ..? – ShriSun

+0

'' GET'ではない '' POST'やあなたのフォームをどのように提出していますか? –

答えて

0

あなたはに関する情報を格納するためにセッションを使用することができますフォーム提出form.phpの上に置き

session_start(); 
$_SESSION['was_on_form'] = 1; 

、およびstep.php

の上

session_start(); 
if (empty($_SESSION['was_on_form'])) { 
    // show error or make redirect 
} 

しかし、通常それは問題ではありませんが、そのユーザの訪問ステップform.phpの前に.php。 step.phpでは、$ _POSTフォームデータを検証し、データが有効であれば処理を続行します。

+0

は私の編集はコーディングの正しい方法です – ShriSun

+0

@ShriSunあなたの質問に答えを編集しないでください。答えにはPHPの開始タグと終了タグは必要ありません。 –

0

ソリューション1

form.php

step.php

<?php 

if(isset($_POST['btn_submit'])) 
{ 
    // button submitted 
} 
else{ 
    // button not submitted 
} 

?> 

ソリューション2

をstep.phpするために提出するボタンの名前を取得一意の値とstでform.php上にセッションを作成する隠された値として鉱石

form.php

step.php

<?php 
session_start(); 
if(isset($_POST['btn_submit']) AND isset($_POST['_token'])) 
{ 
    // check token if valid 

    if($_POST['_token'] == $_SESSION['inputToken']) 
    { 
     // submitted from the form 
    } 
    else{ 
     // form was not submitted 

     header("location:form.php?msg=1"); 
    } 

} 
else{ 
    // button not submitted 
    header("location:form.php?msg=2"); 
} 

?> 
+0

私は** solution2 **を使用しましたが、私は 'step.php'に直接行くことができます – ShriSun

+0

私は解決した解決策2を持っています答えが動作すれば –

+0

私は試しましたが、今度は' step.php'には行きません** **フォームが記入され、ボタンが提出されたときにも表示されません – ShriSun

関連する問題