Php 如何显示密码或登录名是否为';不正确
您好,我目前正在开发一个登录系统,但我有点困在php应该检查并说表单没有填写,或者输入的值不正确的地方。它显示“De gebruikersnaam是niet ingevuld!”但它没有验证数据库中是否存在该用户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
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!”,但没有提交任何数据,我不确定它来自何处。这是因为不存在何时调用此函数的条件。因此,现在将在提交后调用此函数表格。现在试试啊,是的,当然,愚蠢的我-。-。感谢所有的帮助,它现在似乎按照我希望的方式工作。你是最好的!