我想制作一个用户验证脚本。在这里,如果用户想要注册时,他/她必须填写登记表并点击“注册”“if”正在工作或“其他”正在工作
PHP
<?php
$usrnm=$_POST["userName"];
$email=$_POST["mailID"];
$pwd=$_POST["Password"];
$firstName=$_POST["firstName"];
$lastName=$_POST["lastName"];
$confpwd=$_POST["ConfirmPassword"];
if ($pwd == $confpwd)
{
if (!$con = @mysql_connect("localhost", "root","","login"))
{
echo "connection unsuccessful\n";
}
if (!$selectdb = mysql_select_db("login",$con))
{
echo "database selection unsuccessful\n";
}
$sql = "SELECT userName FROM userdetails WHERE userName='$usrnm'";
$sql2 = "INSERT INTO userdetails (userName, Password,mailID, firstName,
lastName) VALUES ('$usrnm','$pwd','$email','$firstName','$lastName')";
$retval = mysql_query($sql, $con);
while($row = mysql_fetch_row($retval))
{
如果字段数大于0,这意味着用户名已经存在于数据库中,并且ELSE将信息添加到数据库中。我的问题是,ELSE条件不起作用,IF正在工作。我甚至尝试过使用ISSET,但仍然没有运气。
$fields=mysql_num_fields($retval);
if ($fields>0)
{echo "Username already exists";}
else
{$retval2 = mysql_query($sql2, $con);
echo "Information added";
}
}
}
}
else
{
echo "Opps...";
}
mysql_close($con);
?>
关于使用'mysql()'传入的注释... 您应该使用'mysqli()'或'PDO'。另外,验证你的输入。 – TripleDeal
您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068),并应使用[现代替换](http://php.net/manual/en /mysqlinfo.api.choosing.php),并且容易受到[SQL注入攻击](http://bobby-tables.com/)**的影响,即一个现代化的API可以更容易[保护](http:///stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)。您正在使用[不适合的哈希算法](http://php.net/manual/en/faq.passwords.php),并且[应该更好地保护](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)密码。 – Quentin
请仔细研究你的缩排,这段代码几乎是不可读的。 – deceze