【发布时间】:2014-12-06 07:22:08
【问题描述】:
我忙了几个小时来解决它,但它不起作用。我的逻辑必须有效,但不是,这是我提出问题的最后一个地方,我现在正在做,希望有人能帮助我。 我尝试使用 MySqli 检查 MySql 数据库中的 $_POST 值并检查计数是否正确。之后我检查密码是否与给定的密码相同。 我用过这种方式,所以我可以确定用户是否提供了无效的用户名或密码,并向他们显示有关它的错误。 我目前的知识是登录脚本不会读取 $_POST 中的任何值。 我可以使用一些很大的帮助。 代码如下:
HTML:
<form action="inc/login.php" method="post">
<label for="gr_username">Gamertag </label>
<input type="text" id="gr_username" name="gr_username" class="panel panel-default" placeholder="GT" style="width:120px;height:25px;"/>
<br>
<label for="gr_password">Password </label>
<input type="password" id="gr_password" name="gr_password" class="panel panel-default" placeholder="Password" style="width:120px;height:25px;"/>
<br><br>
<input type="submit" id="submit" class="btn btn-primary" value=" LOGIN "/>
</form>
PHP:
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
include_once('../../inc/db.php');
$link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$username = mysqli_real_escape_string($_POST['gr_username']);
$password0 = mysqli_real_escape_string($_POST['gr_password']);
$password = hash('whirlpool', $password0);
if(!$link)
{
header('Location: ../login.php?err=Servers not available at the moment! Please try again later. [ERRCODE: L01]');
}
$sql = "SELECT * FROM leaders WHERE username = '" . $username . "'";
$res = mysqli_query($link, $sql);
if(!$res)
{
header('Location: ../login.php?err=Servers not available at the moment! Please try again later. [ERRCODE: L03]');
}
else
{
$totalrows = mysqli_num_rows($res);
if ($totalrows > 0) {
while($row = mysqli_fetch_assoc($res))
{
if ($password == $row['password']) {
$_SESSION['gamertag'] = $row['username'];
$_SESSION['socialclub'] = $row['socialclub'];
$_SESSION['leaderid'] = $row['id'];
} else {
header('Location: ../login.php?err=Invalid Password! Try again.');
}
}
header('Location: ../index.php?grmsg=You are successfully logged into the Leader Panel!');
} else {
header('Location: ../login.php?err=Username not found! Try again.');
}
}
?>
希望你能帮助我。 提前致谢!
- 答.
【问题讨论】:
-
您缺少
mysqli_real_escape_string的第一个参数。第一个参数必须是$link,并且必须在调用mysqli_connect()之后再调用。 -
@Barmar 谢谢你,我刚刚手动添加了它,但即使我没有设置任何
mysqli_real_escape_string它也不起作用。 -
那么当您发布表单时会发生什么?顺便说一句,你需要
session_start() -
如果你只做
var_dump($_POST),你会看到什么? -
@meda ofcourse
session_start()感谢提醒我,它说用户名无效,它首先检查用户名,并且在回调我的“错误消息”时值为空。 :(
标签: php html forms post mysqli