За последние 24 часа нас посетили 17510 программистов и 1281 робот. Сейчас ищут 1468 программистов ...

PHP не выполняет 2-ой запрос к базе.

Тема в разделе "PHP и базы данных", создана пользователем xCRABx, 17 мар 2011.

  1. xCRABx

    xCRABx Активный пользователь

    С нами с:
    17 мар 2011
    Сообщения:
    10
    Симпатии:
    0
    Цель страницы в том чтобы определить пользователя, возможны 3 варианта:
    1) Имя и пароль не совпадают.
    2)Имя совпадает с паролем, но пользователь не зарегисрировал персонажа.
    3)Пользовательможет войти в игру.

    PHP:
    1. <?php
    2.  
    3.  
    4.  
    5.  
    6. include "conf.php";
    7.  
    8.  
    9.  
    10. $email = htmlspecialchars($_POST['email']);
    11.  
    12. $passHash = md5(htmlspecialchars($_POST['pass']));
    13.  
    14.  
    15.  
    16. $data = mysql_connect($base_name, $base_user, $base_pass);
    17.  
    18. if(!$data){
    19.  
    20.      echo "<BR>";
    21.  
    22.      echo mysql_error();
    23.  
    24.      die();
    25.  
    26. }
    27.  
    28.  
    29. mysql_select_db($db_name);
    30.  
    31. $query = mysql_query("SELECT * FROM users WHERE email='".$email."' AND pass='".$passHash."'");
    32.  
    33. $row = mysql_fetch_array($query);
    34.  
    35. $num = mysql_num_rows($query);
    36.  
    37.  
    38. if ($num > 0){
    39.  
    40. $_SESSION['user'] = $email;
    41.  
    42. $_SESSION['ip'] = $row['ip'];
    43.  
    44. $_SESSION['name'] = $row['name'];
    45.  
    46. mysql_query("UPDATE users SET online='1' WHERE email='".$email."'");
    47.  
    48. mysql_select_db($db_name);
    49. $query1 = mysql_query("SELECT * FROM users WHERE email='".$email."' AND name='1246875568'");
    50.  
    51. $row1 = mysql_fetch_array($query1);
    52.  
    53. $num1 = mysql_num_rows($query1);
    54.  
    55. if(4 > 1)
    56. {
    57. echo "<script>location.href='hreg.php';</script>";
    58. }
    59. else
    60. {
    61.  
    62.  
    63. echo "<script>location.href='game.php';</script>";
    64.  
    65.  
    66. } else {
    67.  
    68. echo "<script>location.href='index.php';</script>";
    69.  
    70. }
    71.  
    72. ?>
    Без этого код работает:
    PHP:
    1. mysql_select_db($db_name);
    2. $query1 = mysql_query("SELECT * FROM users WHERE email='".$email."' AND name='1246875568'");
    3.  
    4. $row1 = mysql_fetch_array($query1);
    5.  
    6. $num1 = mysql_num_rows($query1);
    7.  
    8. if(4 > 1)
    9. {
    10. echo "<script>location.href='hreg.php';</script>";
    11. }
    12. else
    13. {....}
    Значит ошибка в этой части, но где?
    Пояснения: 4>1 поставлено только для теста, а имя по умолчанию 1246875568 потому, что я слышал, что MySql в таблицах NULL не находит.
    Пожалуйста помогите найти ошибку, почему он не работает?
     
  2. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    Не особо понятно, но напрашивается следующий алгоритм:
    1. Запрос к базе на email и пароль зарегистрированного пользователя
    -если такого нет, перейти на регистрацию пользователя
    2. Если такой пользователь есть
    -проверить поле с именем персонажа в базе и если оно пустое перенаправить на форму регистрации персонажа
    3. Пользователь может войти в игру

    PHP:
    1.  
    2. $query = mysql_query("SELECT * FROM users WHERE email='email'");
    3. if(!mysql_num_rows($query)) {
    4.     // перенаправить на регистрацию;
    5.     exit;
    6. }
    7. $user = mysql_fetch_assoc($query);
    8. if(empty($user['name'])) {
    9.     // вывести или подключить файл с формой регистрации персонажа
    10. }
    11. // записать в сессию данные пользователя и перенаправить на главную страницу приложения
    12.  
     
  3. xCRABx

    xCRABx Активный пользователь

    С нами с:
    17 мар 2011
    Сообщения:
    10
    Симпатии:
    0
    Не знаю, как всё получилось, но это работает:
    PHP:
    1.  
    2. mysql_select_db($db_name);
    3.  
    4. $query = mysql_query("SELECT * FROM users WHERE email='".$email."' AND pass='".$passHash."'");
    5.  
    6. $row = mysql_fetch_array($query);
    7.  
    8. $num = mysql_num_rows($query);
    9.  
    10.  
    11.  
    12.  
    13.  
    14. $query1 = mysql_query("SELECT * FROM users WHERE email='".$email."' AND name=''");
    15.  
    16. $row1 = mysql_fetch_array($query1);
    17.  
    18. $num1 = mysql_num_rows($query1);
    19.  
    20. if($num1 > 0){
    21.  
    22. $_SESSION['user'] = $email;
    23.  
    24. $_SESSION['ip'] = $row['ip'];
    25.  
    26. $_SESSION['name'] = $row['name'];
    27.  
    28. mysql_query("UPDATE users SET online='1' WHERE email='".$email."'");
    29.  
    30. echo "<script>location.href='hreg.php';</script>";
    31.  
    32. }
    33.  
    34.  
    35.  
    36. if ($num > 0){
    37.  
    38. $_SESSION['user'] = $email;
    39.  
    40. $_SESSION['ip'] = $row['ip'];
    41.  
    42. $_SESSION['name'] = $row['name'];
    43.  
    44. mysql_query("UPDATE users SET online='1' WHERE email='".$email."'");
    45.  
    46. echo "<script>location.href='game.php';</script>";
    47.  
    48.  
    49.  
    50. } else {
    51.  
    52. echo "<script>location.href='index.php';</script>";
    53.  
    54. }
    55.  
    Да, алгоритм вы поняли правильно.
     
  4. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    Я не суперзнаток РНР, но думаю, что так будет компактнее:
    PHP:
    1.  
    2. <?php
    3. require_once 'db.php' // вынести в этот файл параметры соединения с БД
    4. $query = mysql_query("SELECT * FROM users WHERE email='$email' AND password='$pass'");
    5. if(!mysql_num_rows($query)) {
    6.      // перенаправить на регистрацию;
    7.      exit;
    8.  }
    9. $user = mysql_fetch_assoc($query);
    10. $_SESSION['email'] = $user['email'];
    11. $_SESISON['ip'] = $user['ip'];
    12.  if(empty($user['nickname'])) {
    13.      // вывести или подключить файл с формой регистрации персонажа
    14.  }
    15. $_SESSION['nickname'] = $user['nickname'];
    16. echo "<script>location.href='game.php';</script>";
    17. ?>
    18.  
     
  5. xCRABx

    xCRABx Активный пользователь

    С нами с:
    17 мар 2011
    Сообщения:
    10
    Симпатии:
    0
    Да, вы совершенно правы, так будет компактнее, просто я с PHP впервые встречаюсь и функций практически не знаю.