检查用户是否在php中

时间:2015-11-30 03:34:44

标签: php mysql

我正在尝试使用表单前端检查数据库中是否存在用户。 如果用户不在那里,则不添加到数据库中。

添加用户时代码无效,即使用户存在,也会添加用户。

这是我的代码:

<?php
$connection = mysql_connect("localhost", "dbuser", "dbpasswd"); // Establishing Connection with Server
$db = mysql_select_db("ldap", $connection); // Selecting Database from Server
if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
$netid = $_POST['netid'];
$univid = $_POST['univid'];
if($netid !=''||$univid !=''){
//Insert Query of SQL
$query = mysql_query("SELECT FROM user ( UserName, temppass WHERE UserName=$netid");

if(mysql_num_rows($sql)>=1)

{
    echo"NetID $netid already exists";
   }
 else
    {
   //insert query goes here
   $query = mysql_query("insert into user( UserName, temppass ) values ('$netid', '$univid')");
    }

echo "<br/><br/><span>User Registered successfully...!!</span>";
}
else{
echo "<p>Registration Failed <br/> Some Fields are Blank....!!</p>";
}
}
mysql_close($connection); // Closing Connection with Server
?>

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

$query = mysql_query("SELECT COUNT(UserName) as total FROM user;"); 

然后

$result = mysql_fetch_assoc($query);

用户数将在$ result ['total']中。另外,mysql_ *方法不如准备好的语句(google it)。

答案 1 :(得分:0)

您的select查询有很多错误。

SELECT FROM user ( UserName, temppass WHERE UserName=$netid

第一个问题你没有选择任何东西。第二个问题我不知道( UserName, temppass是什么,也许你想要选择的列?第三个问题是Username可能是一个字符串,而不是整数,因此该值应该在引号中。一旦你引用它,虽然你会打开SQL注射。

以下是您当前查询的有效版本。

SELECT UserName, temppass FROM user WHERE UserName='$netid'

这是关于mysql的selecthttp://dev.mysql.com/doc/refman/5.7/en/select.html

的文档

以下是有关SQL注入的一些链接:
How can I prevent SQL injection in PHP? {
{3}}

您也不应该使用现已弃用且不安全的mysql_函数。 http://php.net/manual/en/security.database.sql-injection.php

其他问题:

if(mysql_num_rows($sql)>=1)

$sql未定义。

我不知道$_POST['netid']是什么,但听起来像是id,而不是用户名。

您不应以纯文本格式存储密码。

您应该启用错误报告和/或监控错误日志。