ユーザーがフォームに Name と Password の 2 つの変数を入力できるようにしたいと考えています。入力値への XSS またはスクリプトの挿入を無効にしたい。フォームメソッドに次のコードがあります。
<form name="form1" method="post" action="checkpw.php">
Your Name:
<table>
<tr><td><input class="text" name="name" onBlur="capitalize(this);" maxlength=12 type="text" /></td></tr>
</table>
Password:
<table>
<tr><td><input class="text" name="passwd" maxlength=8 type="password" /></td></tr>
<tr><td align="center"><br/>
<input class="text" type="submit" name="submitbt" value="Login" />
</td></tr>
</table>
および次の checkpw.php:
<?php
// Clean up the input values
$post = filter_input_array(INPUT_POST, array(
'name' => FILTER_SANITIZE_STRING,
'pw' => FILTER_SANITIZE_STRING,
));
if (is_null($post) || in_array(null, $post)) {
header("location:login.php");
return; // missing fields (or failed filter)
}
// pw is the password sent from the form
$pw=$_POST['passwd'];
$name=$_POST['name'];
if($pw == 'testpass'){
header("location:index.php");
} else {
header("location:wrong.php");
}
?>
これは、フォームがサーバーに送信され、入力値がサニタイズされた後にのみ実行されることを保証する安全な方法ですか?
また、index.php ファイルに渡したい $name 値。次のように index.php にコードを挿入します。
<?php echo $name ?>
しかし、それは空です。それを解決する方法はありますか?