2012-06-11 20 views
5

これらの2つのメソッド(GETとPOST)でいくつかのデータを渡す必要があります。 私は、このメソッドを書くが、私はそれが安全かどうかわからない:このコードは安全なGETとPOSTを一緒に使用する方法はありますか?

<form method="post" action="profile.php?id=<?php echo $_SESSION['id']; ?>" enctype="multipart/form-data"> 
<input type="text" size="40" name="title" > 
<textarea name="description" rows="2" cols="30"></textarea> 
<input id="starit" name="submit" value="Create" type="submit" /> 
</form> 

<?php 
a= $_GET['id']; 
b= $_POST['title']; 
c= $_POST['description']; 
?> 

ですか?それとも他の方法がありますか?

+3

なぜフォームの非表示の入力フィールドにセッションIDを書き込むだけではないのですか?最終的に、ユーザは、ウェブサイトのソースをブラウズすると、自分のセッションIDを読み込むことができます。 – Corsair

+0

多分、彼はこれのようにこれを行う理由があります。 – Aelios

答えて

11

これはGETとPOSTを組み合わせたリクエストではありません。むしろ、クエリパラメータを持つPOSTリクエストです。

あなたが書いたことは正しい方法でしょう。

<form method="post" action="profile.php?id=<?php echo rawurlencode($_SESSION['id']); ?>"> 

そして、あなたはファイルをアップロードしていない場合、あなたが設定する必要はありません:あなたはあなたの出力をエスケープすることを確認して、ところで

if (isset($_GET['id'], $_POST['title'], $_POST['description']) { 
    // go ahead 
} 

:常にあなたが期待される分野を取得していることを確認してください<form>enctype

+0

ああ、 'isset'で複数の変数を使うことができますか? :D – ADTC

+0

@ADTCええ、trueを返しますすべてが設定されています –

1

これは良いです:

<form method="post" action="profile.php?id=<?php echo urlencode($_SESSION['id'])); ?>"> 
1

あなたがのparamsの同じ名前で、それは「リクエストオーダー」注文がGETし、その後によるPOSTでしょう、両方を使用してREQUESTの代わりに、GETやPOSTで取得することができますデフォルト。

http://php.net/request-order

それはphp.iniである

-1

フォーム条件 にmethod属性を記述し、入力中formmethod =」 "属性...例えば 追加しないでください:

<input type="submit" formmethod="get" name="inputGet" value="updateGet" > 
<input type="submit" formmethod="post" name="inputPost" value="updatePost" > 
+0

あなたは 'フォームメソッド'を意味するのですか? –

+0

はい、フォームタグでメソッドを使用しないでください –

関連する問題