我還是個新手,想要學習php。我有一個表單,每次運行它我都會收到一個錯誤消息,顯示變量未設置時應該是。我肯定錯過了一些東西。請解釋爲什麼變量$ _POST ['login_button']在我第一次運行頁面時沒有設置?當我第一次打開頁面時沒有設置
代碼可以發現如下:提前
<?php
require 'connect.inc.php';
if (isset($_POST['login_button']) && isset($_POST['username']) && isset($_POST['password'])){
$login_button = $_POST['login_button'];
$username = $_POST['username'] ;
$password = $_POST['password'];
$password_hash = md5($_POST['password']);
if(!empty($username)&&!empty($password)){
$sql = "SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND '".$password_hash."'";
if($sql_run = mysql_query($sql)){
$query_num_rows = mysql_num_rows($sql_run);
}
if($query_num_rows==0){
echo'User name and password are incorrect';
}
else if($query_num_rows==1)
{
echo 'Username and password are correct';
}
}
else
{
echo 'Please fill in user name and password';
}
}
else
{
echo'Fields are not set';
}
?>
<form class="home_logon_area" action="test.php" method="POST">
Username:
<input type="text" name="username" />
Password:
<input type="password" type="password" name="password"/>
<input type="submit" name="login_button">
</form>
感謝,
約瑟夫
如果表單沒有提交,它迴應正確,你應該填寫someting。至少代碼是這樣的。把'if(!isset($ _ POST ['login_button'])){...'放在正確的行。但我擔心你不能。 – djot
第一次運行代碼時,我收到消息說'沒有設置字段(我的php代碼的最後一行),但是我想刪除它並將變量設置在第一位。 – joebegborg07
**通過構建帶有外部變量的SQL語句,您可以全面開放SQL注入攻擊。**此外,任何帶有單引號的輸入數據,如名稱「O'Malley」,都會炸燬您的SQL查詢。請了解使用參數化查詢(最好是使用PDO模塊)來保護您的Web應用程序。 http://bobby-tables.com/php有例子讓你開始,並且[這個問題](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php)有很多例子的細節。 –