2013-06-06 5 views
1

Я создал код ниже для людей, чтобы войти в систему на сайте, но результаты продолжают говорить:Неправильное имя пользователя и пароль

неправильное имя пользователя или пароль

, и я не знаю, что это неправильно. В базе данных есть таблица «клиенты» с именами колонок «имена пользователей» и «пароли».

<?php 
$host = ""; // Host name 
$username = ""; // Mysql username 
$password = ""; // Mysql password 
$db_name = ""; // Database name 
$tbl_name = "clients"; // Table name 
$con = mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
mysql_select_db("$db_name") or die("cannot select DB"); 
$username = $_POST['myusername']; 
$password = $_POST['mypassword']; 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 
$sql = "SELECT `username` FROM `clients` WHERE `username`='$myusername' and   `password`='$mypassword'"; 
$result = mysql_query($sql) or die(mysql_error()); 

// Mysql_num_row is counting table row 

if ($result) { 
    $count = mysql_num_rows($result); 
} 
else { 
    $count = 0; 
} 

// If result matched $myusername and $mypassword, table row must be 1 row 

if ($count == 1) { 

    // Register $myusername, $mypassword and redirect to file "login_success.php" 

    session_register("myusername"); 
    session_register("mypassword"); 
    header("location:source/login_success.php"); 
} 
else { 
    echo "Wrong Username or Password"; 
} 

?> 
+5

Вы инициализацией '$ username', а затем с помощью' $ myusername', и тот же пароль. Вы всегда будете передавать два пустых поля в свой запрос и, следовательно, не получаете никаких результатов. – andrewsi

+0

[Включить отчет об ошибках в apache] (http://www.hiddenwebgenius.com/blog/web-development/basic-php-error-reporting-techniques/) – Jelmer

+0

Не используйте расширения 'mysql_' для нового кода , Вы можете понять почему. – Ethan

ответ

5

Проблема здесь:

$username = $_POST['myusername']; 
$password = $_POST['mypassword']; 

$myusername = stripslashes($myusername); // Using uninitialized '$myusername' 
$mypassword = stripslashes($mypassword); // Using uninitialized '$mypassword' 

$myusername и $mypassword являются неинициализированными при передаче stripslashes(), так что результат всегда будет пустым.

Чтобы устранить эту проблему, измените имена переменных, передаваемых stripslashes():

$myusername = stripslashes($username); 
$mypassword = stripslashes($password); 
+2

Это окончательно правильный ответ. – slash28cu

1

Изменить это:

$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 

к этому:

$myusername = stripslashes($username); 
$mypassword = stripslashes($password); 
-1

$ имя пользователя = $ _POST [ 'MyUserName'];

$ пароль = $ _POST ['mypassword'];

TRY ЭТО

$ MyUserName = $ _POST [ 'MyUserName'];

$ mypassword = $ _POST ['mypassword'];

0

Было бы неплохо не регистрировать пароль в сеансе. Лучшей практикой является установка сеанса с идентификатором пользователя (скажем, что в вашей таблице mysql у вас есть: id, username, password и т. Д.). Это лучший и безопасный способ сделать. А потом, на страницах, которые вы требуете, чтобы быть вошли в систему, вы просто сделать:

<?php 

session_start(); 
if(!isset($_SESSION['id']) { 
..... display error message and redirect user to login page.... 
} 
?> 
Смежные вопросы