【问题标题】:Form POST, not reading any value表单 POST,不读取任何值
【发布时间】: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


【解决方案1】:

既然你得到了Invalid Password! Try again.,这意味着至少找到了用户。

这证实了查询有效,但也意味着:

hash('whirlpool', $password0) != $row['password']

这是您需要调查不满足条件的原因。

如果我是你,我会这样做:

if ($password == $row['password']) {
    //works
} else { 
    //header('Location: .....');
    echo "Invalid Password! Try again";
    echo "password0 : ".$password0."<br>";
    echo "password  hashed : ".$password."<br>";
    echo "password from db : ".$row['password']."<br>";
}

  • 由于您使用了漩涡,请确保您的字段足够长
  • 确保将哈希值保存到数据库中,而不是普通密码(危险)

否则,您将不得不再次对 db 值进行哈希处理 hash('whirlpool', $row['password']);,这会破坏哈希的整个目的。

希望对你有帮助

【讨论】:

    【解决方案2】:

    试试这个....

      <?php
    session_start();
    include ('connect.php');
        $login_id = mysql_real_escape_string($_POST['login_id']);
        $password = mysql_real_escape_string(SHA1($_POST['password']));
    
    //your hash function here...
    
        include('connect.php');
    
        $chk = mysql_query("SELECT * FROM admin where name = '$login_id' AND password = '$password';");
        $count =  mysql_num_rows($chk);
    
        if($count=='1')
        {
    
            $_SESSION['name'] = $login_id;
    
        //to loggoed on page
            header("location:admin.php?id=1");
    
            }
            else {
            echo "<script>
        alert('Invalid Login...');
        window.location.href='index.php';
        </script>";
    
            }
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多