2013-03-14 2 views
-1

Это код! PHP не получает данные пользователя из базы данных, когда данные уже находятся в базе данных! Помогите мне, я застрял. Когда я ввожу данные в login.php, он перенаправляет меня на login.php? Invalid = 1 и показывает, что ошибка некорректной информации или срок действия сессии истек! Несмотря на то, что информация такая же!PHP не получает данные пользователя из базы данных, когда данные уже находятся в базе данных

<?php 
    session_start(); 
    include_once("include\config.php"); 
    $login = $_POST["textfield1"]; 
    $pwd = $_POST["textfield2"]; 
    $recordset = mysql_query("select * from users"); 
    while($record = mysql_fetch_array($recordset)){ 
    if($login == $record["ulogin"] && $pwd == $record["upassword"]) { 
     $_SESSION["ulogin"] = $record["ulogin"]; 
     $_SESSION["uid"] = $record["uid"]; 
     if($record["utype"] == 1){ 
       $_SESSION["utype"] = $record["utype"]; 
       header("Location:admin.php?uid=".$record["uid"]); 
       exit; 
     }else{ 
       header("Location:home.php"); 
       exit; 
      } 
     } 
    } 
    header("Location:login.php?invalid=1"); 
?> 
+1

Вы, похоже, сохраняете пароли в текстовом виде. Пожалуйста, не делайте этого. Также обратите внимание, что функции 'mysql_' устарели и больше не должны использоваться. Вместо этого используйте PDO или MySQLi. – Arjan

ответ

1

Я изменил От:

include_once("include\config.php"); 

To:

include_once("include/config.php"); 

И

От:

><?php 
session_start(); 

To:

<?php 
    session_start(); 

И

От:

$recordset = mysql_query("select * from users"); 

To:

$recordset = mysql_query("select * from users WHERE username = "'.$login.'" AND password = "'.$pwd.'"); 

Пожалуйста, замените код с этим кодом и попробовать. Надеюсь, что это поможет вам.

<?php 
session_start(); 
include_once("include/config.php"); 
$login = $_POST["textfield1"]; 
$pwd = $_POST["textfield2"]; 
$recordset = mysql_query("select * from users WHERE username = "'.$login.'" AND password = "'.$pwd.'""); 
while($record = mysql_fetch_array($recordset)){ 
if($login == $record["ulogin"] && $pwd == $record["upassword"]) { 

$_SESSION["ulogin"] = $record["ulogin"]; 
$_SESSION["uid"] = $record["uid"]; 
     if($record["utype"] == 1){ 
     $_SESSION["utype"] = $record["utype"]; 
     header("Location:admin.php?uid=".$record["uid"]); 
     exit; 
     }else{ 
    header("Location:home.php"); 
    exit; 
    } 
} 
} 

     header("Location:login.php?invalid=1"); 
    ?> 
+1

объясните, что вы изменили. –

+0

Да, вы должны объяснить изменение, которое вы сделали. –

+0

Я сделал это. Извините за мою ошибку и спасибо за предложение – Hardik

0

Изменение include_once("include\config.php"); в include_once("include/config.php");

0

Включите ваш config.php файл, как это:

include_once("include/config.php"); 

Это не может быть так:

include_once("include\config.php"); 
0

Использование ниже Query

select * from users WHERE username = "'.$login.'" AND password = "'.$pwd.'" 

, тогда вам не нужно снова и снова зацикливать все записи.

И, пожалуйста, убедитесь, что таблица базы данных имеет запись.

0

Существует проблема с включением файла конфигурации базы данных.

Repalce

include_once("include\config.php"); 

С

include_once("include/config.php"); 
0
  1. Вы не должны использовать библиотеку mysql_ - это осуждается.Пожалуйста, конвертировать в любой mysqli_ или PDO
  2. include_once("include\config.php"); должен быть include_once("include/config.php");
  3. select * from users Запрос может возвращать Хью количество записей. Лучше запрос будет что-то вроде:

    mysql_query;

  4. ("* Выберите из пользователей, где ulogin =«"«И "upassword = '$ PWD.. "'" Mysql_real_escape ($ Логин).'.)

Это должно возвращать либо строку или ни одной строки на всех. Сохранить сканирования в целом USers таблица

1
<?php 
    session_start(); 
    // http://stackoverflow.com/questions/15408037/php-not-getting-user-data-from-database-when-data-is-already-in-database 
    include_once("include/config.php"); 
    $login = $_POST["textfield1"]; 
    $pwd = $_POST["textfield2"]; 
    $recordset = mysql_query("select * from users WHERE ulogin = "'.$login.'" AND upassword = "'.$pwd.'"" "); 
    $num_row_user =mysql_num_rows($recordset); 
    if($num_row_user>0) 
    { 
     while($record = mysql_fetch_array($recordset)) 
     { 
     if($record["utype"] == 1) 
     { 
      $_SESSION["ulogin"] = $record["ulogin"]; 
      $_SESSION["uid"] = $record["uid"]; 
      $_SESSION["utype"] = $record["utype"]; 
      header("Location:admin.php?uid=".$record["uid"]); 
      exit; 
     } 
     else 
     { 
      header("Location:home.php"); 
      exit; 
     } 
     } 
    } 
    else 
    { 
     if (mysql_errno()) 
     { 
      header("Location:login.php?invalid=1&message=QueryError"); 
     } 
     else 
     { 
      header("Location:login.php?invalid=1&message=invalid username and password"); 
     } 

    } 
  1. Вы должны проверить путь к файлу в конфигурационном файле «Include \ конфигурации» изменен to 'include \ config'.
  2. и вам нужно проверить свои подключения к db в include/config.
  3. нет места перед session_start()
  4. и изменить свой стиль кодирования, потому что он возникает при более высокой производительности . и используйте следующий стиль кодирования для уменьшения проблемы с производительностью .
Смежные вопросы