2014-10-11 2 views
0

im занят этим в течение нескольких часов, чтобы решить проблему, но она не работает. Моя логика должна работать, но нет, это последнее место, где я задавал бы свой вопрос, и я делаю это прямо сейчас, надеюсь, что кто-нибудь сможет мне помочь. Я пытаюсь проверить значения $ _POST в базе данных MySql с помощью MySqli и проверять правильность подсчета. После этого я проверяю, совпадает ли пароль с указанным. Я использовал этот способ, чтобы определить, дал ли пользователь неверное имя пользователя или пароль и покажет им ошибку. Мое знание на данный момент заключается в том, что скрипт входа не читает никакого значения, которое входит в $ _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.'); 
} 
} 
?> 

Надеется, что вы могли бы помочь мне. Спасибо заранее!

  • А.
+1

Вы пропустили первый аргумент 'mysqli_real_escape_string'. Первым аргументом должен быть '$ link', и вы должны вызвать его после вызова' mysqli_connect() '. – Barmar

+0

@Barmar Спасибо за это, я только что добавил это вручную, но даже когда я не установил никакой mysqli_real_escape_string, он не сработает. –

+0

так что происходит, когда вы публикуете форму? вам нужно 'session_start()' кстати – meda

ответ

0

Поскольку вы получили 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']);, которые побеждают всю цель хэширования.

Надеется, что это помогает

0

попробовать это ....

<?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>"; 

     } 

?> 
Смежные вопросы