我在stackoverflow上搜索了有关未经修饰的变量,我找不到任何可以解决我问题的东西。
这是我的PHP代码:
if(isset($_POST['login'])){
$username =mysql_real_escape_string( $_POST['naam']);
$password =md5( $_POST['wacht']);
$check_user = "select * from users where gebruikersnaam='$gebruikersnaam' AND wachtwoord='$wachtwoord'";
$run =mysql_query($check_user);
if(mysql_num_rows($run)>0){
$_SESSION['naam']=$gebruikersnaam;
echo "<script>window.open('welkom.php','_self')</script>";
}
这是我的HTML代码:
<div id=content>
<form method='POST' action='login.php'>
Gebruikersnaam:<br>
<input type='text' name='naam' />
<br>
<br>
Wachtwoord:<br>
<input type='password' name='wacht' />
<br>
<br>
<input type='submit' name='login' value='Inloggen' />
</form>
<br>
Niet geregistreerd? <a href='registratie.php'>Klik hier.</a>
</div>
我看不出我的问题在哪里,它说我在这一行上有一个未定义的变量:$check_user = "select * from users where gebruikersnaam='$gebruikersnaam' AND wachtwoord='$wachtwoord'";
我使用的名字来自我的数据库,所以我不会错误地使用这些名称。
你能帮助我吗?这将是一个真正的节省时间,因为我找不到问题。答案 0 :(得分:2)
我认为这只是一个错误,您创建了2个名为$username
和$password
的变量,但您没有在查询中使用它们,查询使用$gebruikersnaam
和{{1} },当然还没有定义。
所以将查询修改为此
$wachtwoord
附加说明:
请不要使用
if(isset($_POST['login'])){ $username =mysql_real_escape_string( $_POST['naam']); $password =md5( $_POST['wacht']); $check_user = "SELECT * FROM users WHERE gebruikersnaam='$username' AND wachtwoord='$password'"; $run =mysql_query($check_user); if(mysql_num_rows($run)>0){ $_SESSION['naam']=$gebruikersnaam; echo "<script>window.open('welkom.php','_self')</script>"; }
数据库扩展,不推荐使用(在PHP7中永远不会使用) 特别是如果您只是学习PHP,请花时间学习mysql_
或PDO
数据库扩展, and here is some help to decide which to use
答案 1 :(得分:0)
在分配之前,不检查是否设置了以下变量。
$_POST['naam']
$_POST['wacht']
与$_POST['login']
一样,您可以在分配前使用isset
检查它们是否存在。
if (isset($_POST['naam'] && isset($_POST['wacht']) {
// Do something...
}
除了查询中的这个,您使用的变量$gebruikersnaam
和$wachtwoord
在其他地方似乎没有引用?因此,经过一些谷歌翻译,我猜测你打算使用这段代码:
$username =mysql_real_escape_string( $_POST['naam']);
$password =md5( $_POST['wacht']);
如下:
$gebruikersnaam = mysql_real_escape_string($_POST['naam']);
$wachtwoord = md5($_POST['wacht']);
希望这有点帮助,但是,我会建议阅读http://www.phptherightway.com/并熟悉PHP的一些最佳实践。
在您的代码中,我会尝试重构它并使用password_hash()
和mysqli_*
,因为MD5()
不安全且mysql_
扩展名已在最新版本中删除PHP并在此之前弃用。