我想讓用戶在表單中輸入兩個變量Name和Password。我想在輸入值中禁用任何XSS或腳本插入。我在形式方法如下代碼:在執行php之前在服務器上執行輸入消毒
<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 ?>
但是它是空的。任何想法如何解決它?
你從用戶得到了你既不輸出值,不把它們存儲到數據庫中。這段代碼似乎對用戶輸入做的唯一有意義的事情是比較'$ _POST ['passwd']'和'test123'字符串;緊隨其後,用戶將被重定向到'index.php'或'wrong.php'。所以,問題是:爲什麼你需要清理一些即將被扔掉的東西? – raina77ow
作爲一個旁註,[session_register()](http://php.net/manual/en/function.session-register.php)'自PHP 5.3.0開始已經被拒絕,從PHP 5.4.0開始已被刪除。 。換句話說,它的用法不被推薦。 – raina77ow
一個網站感染了代碼插入,所以我很安全,然後後悔。它是否在做消毒工作? – Interfaith