За последние 24 часа нас посетили 17795 программистов и 1606 роботов. Сейчас ищут 1887 программистов ...

Личный кабинет. Проблемы реализации.

Тема в разделе "PHP и базы данных", создана пользователем DjSunday, 27 ноя 2008.

  1. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Привет Всем!!!
    Я создаю сайт через Dreamweaver MX.
    Хочу сделать личный кабинет для пользователей по принципу:
    Пользователь вводит login и password - далее в зависимости от введённых значений открывается страница с данными соответствующими этому пользователю. Т.е. есть БД Mysql с таблицами Users и Usinfo, в Users- логин и пароль, а в
    Usinfo- тотже логин и инфа о пользователе. Получается что человек вводит значения и его логин сравнивается с логином из другой таблицы и отображается соответствующая ему инфа.
    Вопрос заключается в том, как передать от страницы с формой входа на сайт значение поля login, на страницу где происходит отображение иноформации о пользователе, чтобы произвести выборку?
    :shock: Фу, кажись всё.. Или может быть кто-нибудь знает способ полегче? :)
     
  2. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    PHP:
    1. <?php
    2.   echo $_POST['login'];
    3. ?>
    4.  
    5. <form action="" method="post">
    6. <input type="text" name="login">
    7. </form>
    уверяю, это не первый вопрос, и еще посыпятся валом...
     
  3. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    PHP:
    1. <form action="<?php echo $loginFormAction; ?>" method="post" name="formlogin" id="formlogin">
    2.     <input name="textlogin" type="text" id="textlogin">
    -У меня есть такой код.
    Значит мне теперь нужно создать на странице куда будет переходить пользователь какое-то сравнение по полю login из формы, и полю username из таблицы Usinfo ? я правельно понимаю?
    Вот что мне выдал Dreamweaver в коде:
    PHP:
    1. <?php
    2. $colname_usinfo = "1";
    3. if (isset($_GET['login'])) {
    4.   $colname_usinfo = (get_magic_quotes_gpc()) ? $_GET['login'] : addslashes($_GET['login']);
    5. }
    6. mysql_select_db($database_shool, $shool);
    7. $query_usinfo = sprintf("SELECT * FROM usinfo WHERE username = '%s'", $colname_usinfo);
    8. $usinfo = mysql_query($query_usinfo, $shool) or die(mysql_error());
    9. $row_usinfo = mysql_fetch_assoc($usinfo);
    10. $totalRows_usinfo = mysql_num_rows($usinfo);
    11.  
    12. mysql_select_db($database_shool, $shool);
    13. $query_users = "SELECT * FROM users";
    14. $users = mysql_query($query_users, $shool) or die(mysql_error());
    15. $row_users = mysql_fetch_assoc($users);
    16. $totalRows_users = mysql_num_rows($users);
    17. ?>
    -это хоть близко к истине? :(

    Да, видимо гемороя действительно больше! :wink:
     
  4. kostyl

    kostyl Guest

    Интересный Dreamweaver - такое выдает!!! Какая версия говоришь?

    Короче ты можешь сделать так:
    1. Создаешь скрипт, который если не пришли данные от пользователя выдает форму ввода логина и пароля, а если пришли проверяет их совпадение со значениями в базе данных и если это правильные логин и пароль скрипт выдает инфу о пользователе из другой таблицы. Если значения не совпали скрипт выдает опять же форму входа.
    2. В певрой и второй таблице добавляешь поле типа int с названием id и выставляешь для него auto increment. Такое же поле только без auto increment вставляешь во вторую таблицу и удаляешь из нее поле логина, а все остальное оставляешь. По этим значиниям эти две таблицы будут связаны. Но можно и как ты предложил, потому что в основном логины у пользоателей уникальны, от сюда и не только от сюда пункт три.
    3. Обычно я делаю так. Сделай скрипт регистрации, тоесть добаления нового пользователя, чтобы ты мог его добавить с помощью ХТМЛ формы. А потом все остальное. Вот сделаешь его и возможно многие вопросы отпадут. Но думаю еще больше появиться. ГЫ.
     
  5. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Спасибо большое! Но дело в том, что я это всё сделал :) И проблемма в том что не знаю как построить запрос из формы входа, которая находится на другой странице. Я понимаю что данные передаются методом Post, но как их поймать?
     
  6. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    <form action = "другая_страница.php" >
     
  7. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    наверное, ты имеешь ввиду - как бегать по другим страницам, чтобы оставалась "залогинность юзера". Для этого существует механизм сессий.

    http://www.google.com/search?ie=UTF-8&h ... 0%B8%D0%B8
     
  8. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Вот что нужно:

    Login.php
    Логин: Вася
    Пароль: qwerty
    Войти
    =>
    Lk.php
    Привет Вася! Вот инфа о тебе: Ля-ля-ля...

    Login.php
    Логин: Петя
    Пароль: supermen
    Войти
    =>
    Lk.php
    Привет Петя! Вот инфа о тебе: Жу-жу-жу...

    И т.д.

    Думаю теперь понятно :D ?!
     
  9. kostyl

    kostyl Guest

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

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Русским по серому тебе пишут: в login.php ты рисуешь html-форму, action которой "lk.php".
    В этом lk.php ты считываешь $_POST['login']
    PHP:
    1. echo "привет ".$_POST['login']."! Вот инфа о тебе: Ля-ля-ля...";
    Думаю теперь понятно :lol: ?!

    А теперь объясни, какое отношение эта байда имеет к базам данных и почему ты писал именно в эту тему, а не в "новичков"?
     
  11. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    DjSunday
    Аватару на фото смените или удалите.
     
  12. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Эта "байда" имеет отношение к БД, как php к MySQL
    Вся инфа берётся из БД (логин,пароль,данные о юзере).
     
  13. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Значится так...
    Создал форму на странице входа:
    HTML:
    1. <form action="lk.php" method="post">
    2. <input type="text" name="login">
    3. <input type="submit" name="Submit" value="Submit">
    4. </form>
    Далее на странице куда попадает пользователь (lk.php):
    PHP:
    1.  
    2. //отображается введённый логин пользователя
    3. <?php
    4.    echo $_POST['login'];
    5.  ?>
    6. //Если логин пользователя есть в БД, то отображается ещё и информация об этом пользователе
    7. <?php
    8. $colname_information = "1";
    9. if (isset($_POST['login'])) {
    10.   $colname_information = (get_magic_quotes_gpc()) ? $_POST['login'] : addslashes($_POST['login']);
    11. }
    12. mysql_select_db($database_shool, $shool);
    13. $query_information = sprintf("SELECT usinfo.usinform FROM usinfo WHERE username = '%s'", $colname_information);
    14. $information = mysql_query($query_information, $shool) or die(mysql_error());
    15. $row_information = mysql_fetch_assoc($information);
    16. $totalRows_information = mysql_num_rows($information);
    17. ?>
    Это всё замечательно, но только нет ограничения доступа по логину и паролю. Зайти может любой
     
  14. ATI

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

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Эта проблема как выше сказано, легко решается по средствам сессий.
    для примера:
    PHP:
    1.  
    2.      //Проверяем форму
    3. if (isset($_POST['login']) && isset($_POST['password']))
    4. {
    5.     $login = mysql_real_escape_string($_POST['login']);
    6.     $password = md5($_POST['password']);
    7.  
    8.     // допрашиваем БД
    9.  
    10.     $query = "SELECT `id`
    11.            FROM `users`
    12.            WHERE `login`='{$login}' AND `password`='{$password}'
    13.            LIMIT 1";
    14.     $sql = mysql_query($query) or die(mysql_error());
    15.  
    16.     // если такой юзверь есть
    17.        if (mysql_num_rows($sql) == 1)
    18.        {
    19.     // метим в сессии к примеру по его id
    20.  
    21.         $row = mysql_fetch_assoc($sql);
    22.         $_SESSION['user_id'] = $row['id'];
    23.  
    24.         else
    25.         { echo"мы таких незнаем"; }
    26.  
    П.С. Редактируй под себя.
     
  15. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Спасибо за совет, буду подгонять!
     
  16. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Ну вот что у меня вышло:
    PHP:
    1.       //Подключаемся к БД
    2. require_once('../Connections/shool.php');
    3.  
    4.       //Проверяем форму
    5.  if (isset($_POST['login']) && isset($_POST['pass']))
    6.  {
    7.      $login = mysql_real_escape_string($_POST['login']);
    8.      $pass = mysql_real_escape_string($_POST['pass']);
    9.  
    10.      // допрашиваем БД  
    11.      $query = "SELECT `id`
    12.             FROM `users`
    13.             WHERE `login`='{$login}' AND `pass`='{$pass}'
    14.             LIMIT 1";
    15.      $sql = mysql_query($query) or die(mysql_error());
    16.  
    17.      // если такой юзверь есть    
    18.    if (mysql_num_rows($sql) == 1)
    19.        {
    20.  
    21.      // метим в сессии к примеру по его id  
    22.          $row = mysql_fetch_assoc($sql);
    23.          $_SESSION['user_id'] = $row['id'];
    24.  
    25.     //Выбираем из БД нужную информацию
    26.         $col_info = "1";
    27. if (isset($_SESSION['user_id'])) {
    28.   $col_info = (get_magic_quotes_gpc()) ? $_SESSION['user_id'] : addslashes($_SESSION['user_id']);
    29. }
    30. mysql_select_db($database_shool, $shool);
    31. $query_info = sprintf("SELECT usinfo.usinform FROM usinfo WHERE usinfo.id=%s", $col_info);
    32. $info = mysql_query($query_info, $shool) or die(mysql_error());
    33. $row_info = mysql_fetch_assoc($info);
    34. $totalRows_info = mysql_num_rows($info);
    35.  
    36.  
    37.     // Выводим её на экран
    38.         echo $row_info['usinform'];
    39.  
    40.    //Если имя пользователя и пароль не совпадают- делаем откат
    41.   } else
    42.          { echo"мы таких незнаем"; }
    43. }
    44.  
    Есть ещё вопрос: строку $pass = md5($_POST['pass']); заменил на $pass = mysql_real_escape_string($_POST['pass']);
    Это смертельно ?
     
  17. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    А, так вот что это за сессии ! ПОнятно!
     
  18. ATI

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

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Это не безопасно, пороли должны храниться в БД в хешированом виде.
     
  19. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Эх, вот дожил до выкладки этого кода на веб-сервер, да появилась ошибка..
    После того как в форме логина и пароля ввели данные и нажали "Войти" страница вот с этим самым кодом выдаёт: No database selected Причём на локальной машине всё работает и работают все другие скрипты обращающиеся к БД на веб-сервере. :?
     
  20. ATI

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

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1.  
    2.  //Подключаемся к БД
    3.  require_once('../Connections/shool.php');
    4.  
    Правь под свой веб-сервер. В общем настрой подключение к БД, а точнее выборку базы.
     
  21. DjSunday

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

    С нами с:
    27 ноя 2008
    Сообщения:
    20
    Симпатии:
    0
    Кажись разобрался..
    Всё работает если сделать так:
    PHP:
    1.  //Подключаемся к БД
    2.   require_once('../Connections/shool.php');
    3.   [color=red]mysql_select_db($database_shool, $shool);[/color]
    4. и т.д.