Php 注意:未定义变量:[值]
我在stackoverflow上搜索了未定义变量,但找不到任何解决问题的方法 这是我的PHP代码:Php 注意:未定义变量:[值],php,html,database,login,web,Php,Html,Database,Login,Web,我在stackoverflow上搜索了未定义变量,但找不到任何解决问题的方法 这是我的PHP代码: if(isset($_POST['login'])){ $username =mysql_real_escape_string( $_POST['naam']); $password =md5( $_POST['wacht']); $check_user = "select * from users where gebruikersnaam='$gebruikersna
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>";
}
if(isset($\u POST['login'])){
$username=mysql\u real\u escape\u字符串($\u POST['naam']);
$password=md5($_POST['wacht']);
$check_user=“从用户中选择*,其中gebruikersnaam='$gebruikersnaam'和wachtwoord='$wachtwoord';
$run=mysql\u query($check\u user);
如果(mysql_num_rows($run)>0){
$\会话['naam']=$gebruikersnaam;
echo“window.open('welkom.php','u self');
}
这是我的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用户,其中gebruikersnaam='$gebruikersnaam'和wachtwoord='$wachtwoord'”;
我使用的名字来自我的数据库,所以我不会在名字上犯错误
你们能帮帮我吗?这会节省很多时间,因为我找不到问题所在。在分配变量之前,您不必检查是否设置了以下变量
$_POST['naam']
$_POST['wacht']
正如您使用$\u 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']);
希望这能有所帮助,尽管只是一个小插曲,我还是建议大家仔细阅读并熟悉一些PHP的最佳实践
在您的代码中,我会尝试重构它,并使用
password\u hash()
和mysqli.*
作为MD5()
不安全,最新版本的PHP中删除了mysql\uucode>扩展,在此之前已被弃用。我认为这只是一个输入错误,您创建了两个变量,分别名为$username
和$password
,但您在查询中没有使用它们,查询使用的是$gebruikersnaam
和$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>";
}
if(isset($\u POST['login'])){
$username=mysql\u real\u escape\u字符串($\u POST['naam']);
$password=md5($_POST['wacht']);
$check\u user=“选择*
来自用户
其中gebruikersnaam='$username'
和wachtwoord=“$password”;
$run=mysql\u query($check\u user);
如果(mysql_num_rows($run)>0){
$\会话['naam']=$gebruikersnaam;
echo“window.open('welkom.php','u self');
}
补充说明:
请不要使用mysql\uuz
数据库扩展,它已被弃用(在PHP7中永远消失)
特别是如果你只是在学习PHP,那么就花点精力学习PDO
或mysqli_u979;
数据库扩展,
不要因为按下“提交”按钮而假设设置了值。在所有$\u POST
项目上使用isset
。可能您没有定义$gebruikersnaam或$wachtwoord?@Script47我确实在所有POST项目上使用isset,请检查isset中的用户i。在使用isset
之前,您正在分配一个变量。请替换您的query by$check_user=“从用户中选择*,其中gebruikersnaam='$username'和wachtwoord='$password''
mmm好的,我可以在同一个地方用密码散列替换MD5吗?还有一点,手册将是一个很好的开始:我想给你更多的信息,但我现在没有时间,我可以简单地用mysli替换msql吗?不,我恐怕没有那么简单,我有现在我一直在阅读,这对我来说真的很复杂,我刚刚掌握了mysql的诀窍……问题是新的PHP7中不再存在mysql\u
扩展。因此,使用mysql\u
编写的任何代码都不会在该版本的PHP上运行。不幸的是,除了学习mysqli\u
或PDO
之后,再浪费更多的时间在mysql
扩展上