2014-01-31 5 views
-1

hye .. им новичок в php/mysql. вы можете мне помочь, я получаю «неправильное имя пользователя или пароль» все время. здесь мой login.phpphp login page не работает

<code> 
    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
     <tr> 
      <form method="post" action="checklogin.php"> 
       <td> 
        <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
         <tr> 
          <td colspan="3"> 
           <strong>Member Login </strong> 
          </td> 
         </tr> 
         <tr> 
          <td width="78">Username</td> 
          <td width="6">:</td> 
          <td width="294"> 
           <input name="username" type="text" id="username"/> 
          </td> 
         </tr> 
         <tr> 
          <td>Password</td> 
          <td>:</td> 
          <td> 
           <input name="password" type="password" id="password"/> 
          </td> 
         </tr> 
         <tr> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td> 
           <input type="submit" name="Submit" value="Login"/> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </form> 
     </tr> 
    </table> 
</code> 

и вот мой checklogin.php

$username=$_POST['username']; 
$password=$_POST['password']; 
$username=stripslashes($username); 
$password=stripslashes($password); 
$username=mysql_real_escape_string($username); 
$password=mysql_real_escape_string($password); 
$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) { 
    session_register("username"); 
    session_register("password"); 
    header("location:login_success.php"); 
} 
else { 
    echo"Wrong Username or Password"; 
} 

я не имею никаких проблем с подключением к базе данных, но я не могу видеть, где находится ошибка. Помоги мне, пожалуйста.

+5

Этот код устарел и уже в течение многих лет. 1. mysql_ * устарел. 2. session_register() устарел. 3. strip_slashes не требуется, потому что magic_quotes устарел. –

+3

И 4. Отступ был введен давно – Bojangles

+0

@Bojangles Возможно, это будет просто форматирование SO. –

ответ

1

Взглядами your comment относительно следующих сообщений об ошибке:

Внимание: mysqli_query() ожидает, что по крайней мере 2 параметра, 1 приведены в C: \ XAMPP \ HTDOCS \ экса \ checklogin.php на линии 18

Предупреждение: mysqli_num_rows() ожидает параметр 1, чтобы быть mysqli_result, нуль приведены в C: \ XAMPP \ HTDOCS \ экса \ checklogin.php на линии 20

Вы, кажется, смешивания mysqli_* и mysql_* (ваш файл checklogin.php содержит mysql_*, а ваши сообщения об ошибках основаны на mysqli_*, а также хранение паролей в текстовом формате; это чрезвычайно опасно, и вам следует рассмотреть возможность использования другого метода, например, функции PHP password().

Я собрал несколько версий для вас, но есть несколько вещей, которые стоят за то, что они устарели.

Например, session_register()

Эта функция была ОТРУШЕНА с PHP 5.3.0 и удалена с PHP 5.4.0

Поэтому вам, возможно, придется изменить:

session_register("username"); 
session_register("password"); 

к:

$_SESSION['username'] = 'username'; 
$_SESSION['password'] = 'password'; 

или:

$_SESSION['username'] = '$username'; 
$_SESSION['password'] = '$password'; 

Однако, я не совсем уверен, о том, как вы используете session_register("username"); и session_register("password"); в другом файл или нет.

mysql_ версия

Предполагая следующее:

и я изменил $result=mysql_query($sql); на $result=mysql_query($sql,$con); передать DB соединение $result

<?php 
session_start(); 
$db = mysql_connect("host","username", "password"); 

$db_selected = mysql_select_db('database_name', $db); 
if (!$db_selected) { 
    die ('Can\'t use foo : ' . mysql_error()); 
} 

mysql_real_escape_string($_POST['username']); 
mysql_real_escape_string($_POST['password']); 

$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'"; 

if (mysql_query($sql, $con)) { 
    echo ("Database query successful"); 
}else { 
    die ("Database query failed: " .mysql_error()); 
} 

$result=mysql_query($sql,$con); 
$count=mysql_num_rows($result); 
if($count==1) { 
    $_SESSION['username'] = '$username'; 
    $_SESSION['password'] = '$password'; 
    header("location:login_success.php"); 
} 
else { 
    echo "Wrong Username or Password"; 
} 

MySQLi_ версия

<?php 
session_start(); 
$con=mysqli_connect("host","username", "password", "database_name"); 

if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); } 

$username = mysqli_real_escape_string($con,$_POST['username']); 
$password = mysqli_real_escape_string($con,$_POST['password']); 

$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'"; 

$result = mysqli_query($con,$sql) or die(mysqli_error($con)); 

$count=mysqli_num_rows($result); 
if($count==1) { 
    $_SESSION['username'] = '$username'; 
    $_SESSION['password'] = '$password'; 
    header("location:login_success.php"); 
} 
else { 
    echo "Wrong Username or Password"; 
} 

login_success.php

<?php 
session_start(); 
if(!isset($_SESSION['username'])){ 
header("location:login.php"); 
} 
?> 

<html> 
<body> 
Login Successful 
</body> 
</html> 
+0

спасибо, но я попытался, но все еще получил ошибку. Я также редактирую свой пост с полным кодом. надеюсь, вы можете мне помочь. – newbie

+0

Добро пожаловать. Можете ли вы сказать мне, какую ошибку вы получаете? @ user3259186 –

+0

это ошибка: Предупреждение: stripslashes() ожидает точно 1 параметр, 2 задан в C: \ xampp \ htdocs \ exa \ checklogin.php в строке 15 Предупреждение: mysqli_real_escape_string() ожидает ровно 2 параметра, 1 задано в C: \ xampp \ htdocs \ exa \ checklogin.php в строке 15 Предупреждение: stripslashes() ожидает точно 1 параметр, 2 заданный в C: \ xampp \ htdocs \ exa \ checklogin.php в строке 16 Предупреждение: mysqli_real_escape_string() ожидает ровно 2 параметра, 1 заданных в C: \ xampp \ htdocs \ exa \ checklogin.php в строке 16 Неверное имя пользователя или пароль – newbie

0

Сделайте error_reporting(E_ALL); и ini_set('display_errors','on'); в первой строке вашего файла, чтобы php начал говорить.

У вас есть таблица с именем user_id или это опечатка?

$sql="SELECT user, pass FROM user_id WHERE user='$username' and pass='$password'"; 
$result=mysql_query($sql); 

В любом случае, как правило, в программировании никогда не принимайте вывод функции. Всегда проверяйте возвращаемое значение $result, прежде чем что-либо другое:

if(!$result) die(mysql_error()); 

Теперь вы будете знать, есть ли сама ошибка SQL. И тогда вы сможете решить свою проблему. Остальная часть кода прекрасна в течение первого дня в php. Вы можете узнать другие 1..4 пункта завтра после того, как вы сегодня.

+0

user_id - это мое имя таблицы. спасибо за «error_reporting (E_ALL); и ini_set ('display_errors', 'on'); ' советы, теперь я вижу проблему. но я все еще пытаюсь это исправить. моя страница входа еще не работает. – newbie

+0

какая проблема? – thevikas

+0

Предупреждение: mysqli_query() ожидает не менее двух параметров, указанных в C: \ xampp \ htdocs \ exa \ checklogin.php в строке 18 Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, null указан в C: \ xampp \ htdocs \ exa \ checklogin.php в строке 20 – newbie