Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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_Login - Fatal编程技术网

Php 如何显示密码或登录名是否为';不正确

Php 如何显示密码或登录名是否为';不正确,php,mysql,login,Php,Mysql,Login,您好,我目前正在开发一个登录系统,但我有点困在php应该检查并说表单没有填写,或者输入的值不正确的地方。它显示“De gebruikersnaam是niet ingevuld!”但它没有验证数据库中是否存在该用户 <?php if(($_SESSION['sessieinlog']) && ($_SESSION['sessiewachtwoord'])) { header ("Location: overzicht.php"); } elseif(($_POST['

您好,我目前正在开发一个登录系统,但我有点困在php应该检查并说表单没有填写,或者输入的值不正确的地方。它显示“De gebruikersnaam是niet ingevuld!”但它没有验证数据库中是否存在该用户

<?php
if(($_SESSION['sessieinlog']) && ($_SESSION['sessiewachtwoord']))
{
    header ("Location: overzicht.php");
}
elseif(($_POST['gebruikersnaam']) && ($_POST['wachtwoord']))
{
    $username = mysql_real_escape_string($_POST['gebruikersnaam']);
    $password = md5(mysql_real_escape_string($_POST['wachtwoord']));
    $checklogin = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '".$username."' AND wachtwoord = '".$password."'");
    if(mysql_num_rows($checklogin) == 1)
    {
        $row = mysql_fetch_array($checklogin);
        $_SESSION['sessieinlog'] = $username;
        $_SESSION['sessiewachtwoord'] = 1;
        header ("Location: overzicht.php");
    }
    elseif(mysql_num_rows($checklogin) == 0)
    {
        //Gebruikersnaam
        if(empty($username)) 
        {
            print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>';
        }
        elseif  ($checklogin->gebruikersnaam !== $username)
        {
            print '<p class="form-error">De gebruikersnaam is niet bekend!</p>';            }
        else    
        { 
            $gebruikersnaamakkoord = true;
        }
        //Wachtwoord
        if ($gebruikersnaamakkoord == true)
        {  
            if (empty($inwachtwoord))
            {
            print '<p class="form-error">Het wachtwoord is niet ingevuld!</p>';
            }
            elseif ($checklogin->wachtwoord !== $password)
            {
            print '<p class="form-error">Het wachtwoord is niet correct!</p>';                  }
        }
        }
    }
    else
    {
    }
    ?>

我不确定您在这行上检查的是什么,您正在将您的查询(但不是任何值)与发布的用户名进行比较:

elseif  ($checklogin->gebruikersnaam !== $username)
$checklogin
不会包含值
gebruikersnaam
我不认为,这是您的查询结果变量。

试试这个

 if      (empty($username)) 
                                {
                                    print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>';

                                }

                        elseif  ($checklogin->gebruikersnaam !== $username)
                                {
                                    print '<p class="form-error">De gebruikersnaam is niet bekend!</p>';                            }

                        else    
                                { 
                                  echo mysql_error(); // $gebruikersnaamakkoord = true; 

                                }
if(空($username))
{
打印“

De gebruikersnaam是niet ingevuld!

”; } elseif($checklogin->gebruikersnaam!==$username) { 打印“

De gebruikersnaam是niet bekend!

”;} 其他的 { echo mysql_error();//$gebruikersnaamakkoord=true; }
我想这可能会有帮助。

试试这段代码
我刚刚将mysql\u num\u rows
更改为
mysql\u affeted\u rows
试试这个

     if(mysql_affected_rows())
    {
         $row = mysql_fetch_array($checklogin);

        $_SESSION['sessieinlog'] = $username;
        $_SESSION['sessiewachtwoord'] = 1;

        header ("Location: overzicht.php");
    }

    else
    {
          //Gebruikersnaam

                    if      (empty($username)) 
                            {
                                print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>';

                            }

                    elseif  ($checklogin->gebruikersnaam !== $username)
                            {
                                print '<p class="form-error">De gebruikersnaam is niet bekend!</p>';                            }

                    else    
                            { 
                                $gebruikersnaamakkoord = true;
                            }

        //Wachtwoord

                            if ($gebruikersnaamakkoord == true)
                            {  
                                if (empty($inwachtwoord))
                                {
                                    print '<p class="form-error">Het wachtwoord is niet ingevuld!</p>';
                                }

                                elseif ($checklogin->wachtwoord !== $password)
                                {
                                    print '<p class="form-error">Het wachtwoord is niet correct!</p>';
                                }
                            }

    }
if(mysql\u受影响的行())
{
$row=mysql\u fetch\u数组($checklogin);
$\会话['sessionInlog']=$username;
$\会话['sessionwachtwoord']=1;
标题(“位置:overzicht.php”);
}
其他的
{
//格布鲁伊克斯纳姆酒店
if(空($username))
{
打印“

De gebruikersnaam是niet ingevuld!

”; } elseif($checklogin->gebruikersnaam!==$username) { 打印“

De gebruikersnaam是niet bekend!

”;} 其他的 { $gebruikersnaamakkoord=true; } //瓦赫特伍德 如果($gebruikersnaamakkoord==true) { 如果(空($inwachtwoord)) { 打印“

wachtwoord是niet ingevuld!

”; } elseif($checklogin->wachtwoord!==$password) { 打印“

是否正确!

”; } } }
使用javaScript(或jQuery)应该检查是否输入了用户名和密码

要检查输入的值是否正确,必须连接到数据库

有不同的方法可以做到这一点。您可以在gebruiekrsnaam='username'中获取所有用户数据并手动检查密码,但这只是一种糟糕的做法

您可以启动2个查询,1个只选择用户名,1个选择用户名和密码

但第三个是我的偏好:只需同时检查用户名和密码。如果找不到任何结果,请告诉用户“用户名或密码不正确”。但是不要指定什么,这样脚本就不能开始猜测特定用户的密码。

此处

 else if(mysql_num_rows($checklogin) == 0){
// script from here will be called only if $checklogin is empty
// that means you can't call 
else if  ($checklogin->gebruikersnaam !== $username)
//here
}
好的,希望有帮助

<?php

if (($_SESSION['sessieinlog']) && ($_SESSION['sessiewachtwoord'])) {
header("Location: overzicht.php");
}
if(isset($_POST['submit'])){
if ((!empty($_POST['gebruikersnaam'])) && (!empty($_POST['wachtwoord']))) {
$username = mysql_real_escape_string($_POST['gebruikersnaam']);
$password = md5(mysql_real_escape_string($_POST['wachtwoord']));

 $checklogin = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '" .$username . "' AND wachtwoord = '" . $password . "'");
if (mysql_num_rows($checklogin) == 1) {
    $row = mysql_fetch_array($checklogin);
    $_SESSION['sessieinlog'] = $username;
    $_SESSION['sessiewachtwoord'] = 1;
    header("Location: overzicht.php");
    } else if (mysql_num_rows($checklogin) == 0) {
    //print username or password is incorrect
    // if you want to know which one is incorrect you ve to do two another query to know  which one is correct
}
} else {
if (empty($_POST['gebruikersnaam'])) {
    print '<p class="form-error">De gebruikersnaam is niet ingevuld!</p>';
} else {
    print '<p class="form-error">Het wachtwoord is niet ingevuld!</p>';
}
}
}
?>

只是一个旁注:您使用的是不推荐使用的
mysql
函数,我建议您使用
mysqli
PDO
。谢谢,我已经注意到了这一点,但由于我对这一点完全不熟悉,我认为使用旧函数会更容易,因为可以找到更多关于它们的信息。提示:1。使用if(isset($\u会话['uwVariable']检查会话是否存在。2.不要使用MD5。至少使用Sha1+Salt。或者如果你想完全正确地使用Bcrypt。感谢Duikboot的输入。我会记住这一点。现在我对MD5很满意,因为它只是一个练习项目。@DylanSmit:你还在学习,我接受它…那么为什么不学习当前的内容,就像不推荐的那样d扩展?当然,PDO和(特别是)
mysqli.*
不是那么容易掌握,但你最终还是要付出努力。不要浪费时间去学习什么是不推荐的…有很多关于PDO和mysqli的文档随时可用…请不要使用
md5
…好的,它不会在生产环境中使用,而是调用
hash('sha256',$someData.$someSalt)
不是更难,是吗?谢谢,这似乎很有效,但在页面的刷新或新窗口中显示“De gebruikersnaam is niet ingevuld!”,但没有提交任何数据,我不确定它来自何处。这是因为不存在何时调用此函数的条件。因此,现在将在提交后调用此函数表格。现在试试啊,是的,当然,愚蠢的我-。-。感谢所有的帮助,它现在似乎按照我希望的方式工作。你是最好的!