2017-06-23 33 views
-4

我想制作一个用户验证脚本。在这里,如果用户想要注册时,他/她必须填写登记表并点击“注册”“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); 
?> 
+0

关于使用'mysql()'传入的注释... 您应该使用'mysqli()'或'PDO'。另外,验证你的输入。 – TripleDeal

+5

您正在使用[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

+2

请仔细研究你的缩排,这段代码几乎是不可读的。 – deceze

回答

0

您有1个额外的大括号接近您的else声明。

这是你的代码的清理版本:

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)){ 
     $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); 

我没有测试它也不想这样做,因为你真的需要为使用mysqli()PDO(),你绝对应该验证用户输入。

+0

@Quentin感谢您的信息。这是我第一次为此做一个数据库和搜索和检索工具。另外我的主要问题是查询独立运行,但在脚本中,如果用户名不存在,它应该通过-ELSE添加信息。但这并没有发生。 (第一次使用Stackoverflow) –

+0

感谢您的信息。这是我第一次为此做一个数据库和搜索和检索工具。另外我的主要问题是查询独立运行,但在脚本中,如果用户名不存在,它应该通过-ELSE添加信息。但这并没有发生。 PS。第一次使用stackoverflow –

+0

@deceze我第一次使用stackoverflow。我的代码已经缩进了,但是在复制并保留每行之前的“4个空格”时,它已经混乱了。 –

0

我猜你编写查询的方式也是错误的。您正在使用字符串变量,因此请按照以下格式编写查询。

$sql = "SELECT userName FROM userdetails WHERE userName='".$usrnm."'"; 

$sql2 = "INSERT INTO userdetails (userName, Password,mailID, firstName, lastName) VALUES('".$usrnm."','".$pwd."','".$email."','".$firstName."','".$lastName."')"; 

并且还在else语句后使用了额外的右括号。请删除。

+0

嗨Chandan, 我的查询单独工作,但附近的第二个查询(INSERT)应该运行的ELSE,什么都没有发生,也没有说这些信息是加法器,也没有被添加到数据库中。 –

+0

你可以在问题中分享你的模式,以便我可以模拟我机器上的代码吗? –

+0

嗨,感谢您的帮助,我很抱歉我试图搜索上传文件的选项。所以我已经分享了我的CSV数据,希望对您没有太大的帮助。 让我知道我是否可以附加文件。 \t阿米特amit123 \t \t [email protected]阿米特\t L1 \t Shrini shrini123 \t \t [email protected] shrini \t L2 \t大卫david123 \t \t [email protected]大卫\t L3 \t乔joe123 \t \t [email protected]乔\t L4 \t戴恩dane123 \t [email protected] \t \t戴恩L5 \t泰勒taylor123 \t \t [email protected]泰勒\t L6 –

相关问题