Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查用户登录时的几种情况_Php_Mysql - Fatal编程技术网

Php 检查用户登录时的几种情况

Php 检查用户登录时的几种情况,php,mysql,Php,Mysql,我希望做到以下几点: 如果用户名或密码字段为空,请通知用户。如果用户名已经存在,请不要将其插入数据库并通知用户创建其他名称。如果用户名唯一且密码不为空,请将用户名返回给用户。 到目前为止,它总是返回“请输入其他用户名”。我相信问题与数据库查询有关,但我不确定。如果有人能看看我是否犯了错误,我非常感谢,谢谢 if ($userName or $userPassword = null) { echo "Please enter a user name and password or retur

我希望做到以下几点:

如果用户名或密码字段为空,请通知用户。如果用户名已经存在,请不要将其插入数据库并通知用户创建其他名称。如果用户名唯一且密码不为空,请将用户名返回给用户。 到目前为止,它总是返回“请输入其他用户名”。我相信问题与数据库查询有关,但我不确定。如果有人能看看我是否犯了错误,我非常感谢,谢谢

if ($userName or $userPassword = null)
{

  echo "Please enter a user name and password or return to the homepage.";

}

elseif (mysql_num_rows(mysql_query("SELECT count(userName) FROM logininfo WHERE userName = '$userName'")) ==1)

{

  echo "Please enter a different user name.";

}

elseif ($userName and $userPassword != null)

{

  echo "Your login name is: $userName";

}

您可能需要以下信息。不过非常基本

isset($_POST['username']) or die('username not given'); //#1
isset($_POST['password']) or die('password not given'); //#2

$escapedUsername = mysql_real_escape_string($_POST);
$result = mysql_fetch_array(mysql_query("SELECT count(userName) FROM logininfo WHERE     userName = '$escapedUsername'"))

if ($result){
    echo "Hello, $escapedUsername"; //#3
}else{
    echo "Invalid Password"; //#4
}
但我可以提出一些不同的建议吗。将要求您更改应用程序的某些部分

  • 将此文件作为某个login.php
  • 用于登录/密码重置/注册等
  • 有机会区分这些请求
  • 使用AJAX
  • 在这种情况下,更换如下部件:
    • #1:
      die(“{”结果“:”错误“,”描述“:”未给出用户名“}”)
    • #2:
      die('{“结果”:“错误”,“描述”:“未给出密码”})
    • #3:
      die(“{”结果“:“错误”,“描述“:“无效用户名/PWD”}”)
    • #4:
      die(“{”RESULT:“SUCCESS”,“DESC:“$escapedUsername”}”);//也可以在此处使用json_encode($result)。
这些只是我的建议。我假设mysql不会给您带来任何问题。:-)

应该是

if (($userName == null) or ($userPassword == null))
但是,我怀疑您实际上不想检查这些值是否为null。假设您是从输入字段填充这些变量,则空文本字段不为null;这是一个空字符串。你可以做
!empty($userName)
检查空文本字段

如果要在单个条件中检查两个变量,则必须分别写出每个检查-
($userName!=null)
不会按您期望的方式工作,它应该是
($userName!=null和$userPassword!=null)

此外,在检查变量是否等于某个值时,必须使用
=
运算符。否则,您会将变量赋值给该值,这绝不是您想要做的

if ($userName or $userPassword = null)
这将检查
$userName
是否为
true
(相当于
$userName==true
),并且您正在
$userPassword
分配
null
。您需要类似于
$userName=''的东西| |$userPassword==''

危险。在将值插入查询之前使用

另外,
mysql\u num\u rows
始终返回1行,因此此表达式始终
true
。您需要查看这一行的值

elseif ($userName and $userPassword != null)
如果这张支票是你想要的,那么第一张支票是多余的

使用类似以下内容:

function validateUser($username, $password) {
    if ($username == '' || $password == '') {
        return 'Please enter a user name and password or return to the homepage.';
    }

    $query = sprintf("SELECT COUNT(*) as `count` FROM `logininfo` WHERE `userName` = '%s'",
                     mysql_real_escape_string($username));
    $result = mysql_query($query);
    if (!$result) {
        trigger_error(mysql_error());
        return false;
    }
    $result = mysql_fetch_assoc($result);
    if ($result['count'] > 0) {
        return 'Please enter a different user name.';
    }

    return "Username: $username";
}

$result = validateUser($username, $password);
if (!$result) {
    // something went wrong, deal with it
} else {
    echo htmlentities($result);
}

请注意,这还远远不是理想的代码,但我希望您能理解。

只是一个说明-
$userName
是如何转义的?因为您在两种不同的上下文中使用它-SQL和(假设)HTML,这两种上下文都需要不同的转义。如果他是从普通登录表单发送这些内容,isset将始终返回true。一个空表单字段仍然会发送一个空字符串。我建议使用AJAX。这就是我这样做的原因。:-)<代码>$userName
可能已经为SQL转义。但是,如果像在字符串中那样插入它,那就没有意义了(参见OP的示例)。有些地方不太对劲:)@alex说实话,我怀疑它逃走了o) 这段代码的作用是检查以确保两个表单字段都不为空,它还可以检查数据库;但是,现在它不会报告有效且已添加到数据库中的用户名。我肯定我缺少了一些简单的东西。@paul,那是因为这里没有向数据库添加内容。祝一切顺利,你必须自己编写应用程序,这只是让你走上正轨的一个例子。
elseif ($userName and $userPassword != null)
function validateUser($username, $password) {
    if ($username == '' || $password == '') {
        return 'Please enter a user name and password or return to the homepage.';
    }

    $query = sprintf("SELECT COUNT(*) as `count` FROM `logininfo` WHERE `userName` = '%s'",
                     mysql_real_escape_string($username));
    $result = mysql_query($query);
    if (!$result) {
        trigger_error(mysql_error());
        return false;
    }
    $result = mysql_fetch_assoc($result);
    if ($result['count'] > 0) {
        return 'Please enter a different user name.';
    }

    return "Username: $username";
}

$result = validateUser($username, $password);
if (!$result) {
    // something went wrong, deal with it
} else {
    echo htmlentities($result);
}