1

您好,我目前正在使用登录系统,但我有点卡在 php 应该检查并说表单没有填写或输入的值不正确的点上。它表明“De gebruikersnaam is 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
    {
    }
    ?>

感谢任何会帮助这个初学者的人,我对 PHP 完全陌生,希望能得到任何帮助!

4

5 回答 5

0

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

elseif  ($checklogin->gebruikersnaam !== $username)

$checklogin不会包含gebruikersnaam我不认为的值,这是您的查询结果变量。

于 2013-10-07T11:34:40.653 回答
0

这里

 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>';
}
}
}
?>
于 2013-10-07T12:03:09.487 回答
0

尝试这个...

 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; 

                                }

我认为这会有所帮助。

于 2013-10-07T11:37:34.417 回答
0

检查是否输入了用户名和密码是您应该使用 javaScript(或 jQuery)执行的操作。

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

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

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

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

于 2013-10-07T11:54:03.240 回答
0

试试这个代码
我刚改mysql_num_rowsmysql_affeted_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>';
                                }
                            }

    }
于 2013-10-07T11:42:41.817 回答