2010-12-17 3 views
2

私はPHPで本当のnoobです、だからここに行きます。フォームが送信されなかった場合、コードの実行を停止するにはどうすればよいですか?

私は、ファイルに格納する何のためにその中にフォームを使用してファイルを編集するためのスクリプトを持っていますが、私はページに移動するたびに、スクリプトを実行し、私はそれを置く前に、ファイルを消去します。

また、私が行ったページだけでなく、他のページにも提出する方法を教えてください。

<?php 

$ourFileName = $_GET['page']; 
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file"); 
$stringData = $_POST['stuff']; 
fwrite($ourFileHandle, $stringData); 
fclose($ourFileHandle); 

?> 

<form action="edit.php?page=index.html" method="post"> 
<textarea name="stuff" rows="10" cols="50" wrap="virtual" maxlength="300"></textarea> 
<input name="submit" type="submit" value="Submit"> 
</form> 

答えて

0

それが働いたif (isset $_POST['stuff']) {...}

2

2番目の引数にはa+ flagが必要です。

読み書き用にオープンします。ファイルポインタをファイルの最後に置きます。ファイルが存在しない場合は、作成してください。

また、ファイルを開くためのGETのparamを使用するとdirectory traversal attacksあなたは、脆弱性のすべての種類にオープンなままにし、今度はPHPを行うことができ、悪意のあるユーザーが何かをやらせることができた(既存のPHPファイルへの書き込み)。

また、これらの変数は、それらにアクセスする(したがって、ファイルを開くと、不書き込み)前に設定されていることを確認しなければなりません。

if (isset($_GET['page']) AND isset($_POST['stuff'])) { ... } 

新しいページを指すようにform年代action属性を変更、他のページに提出します。

+0

内のコードを管理するファイルを入れますが、スタックオーバーフローが、私はあなたに正しい答えを与えることができる前に、私は6分待っています。その間、GETにはまだ作業中にこれらのクエリがないのですか?私は何とかそこのPHPから変数を取得すると思っていた。私はあなたがvunerabilitiesについて何を言ったのか理解しています。パスワード保護された大規模なスクリプトの一部にすぎません。 – IceCat

+0

@IceCat 'まだ働いている間、GETにはこれらのクエリがないのですか?'あなたはそれについて詳述してもらえますか? – alex

+0

IceCat

関連する問題