Привет Всем!!! Я создаю сайт через Dreamweaver MX. Хочу сделать личный кабинет для пользователей по принципу: Пользователь вводит login и password - далее в зависимости от введённых значений открывается страница с данными соответствующими этому пользователю. Т.е. есть БД Mysql с таблицами Users и Usinfo, в Users- логин и пароль, а в Usinfo- тотже логин и инфа о пользователе. Получается что человек вводит значения и его логин сравнивается с логином из другой таблицы и отображается соответствующая ему инфа. Вопрос заключается в том, как передать от страницы с формой входа на сайт значение поля login, на страницу где происходит отображение иноформации о пользователе, чтобы произвести выборку? :shock: Фу, кажись всё.. Или может быть кто-нибудь знает способ полегче?
PHP: <?php echo $_POST['login']; ?> <form action="" method="post"> <input type="text" name="login"> </form> уверяю, это не первый вопрос, и еще посыпятся валом...
PHP: <form action="<?php echo $loginFormAction; ?>" method="post" name="formlogin" id="formlogin"> <input name="textlogin" type="text" id="textlogin"> -У меня есть такой код. Значит мне теперь нужно создать на странице куда будет переходить пользователь какое-то сравнение по полю login из формы, и полю username из таблицы Usinfo ? я правельно понимаю? Вот что мне выдал Dreamweaver в коде: PHP: <?php $colname_usinfo = "1"; if (isset($_GET['login'])) { $colname_usinfo = (get_magic_quotes_gpc()) ? $_GET['login'] : addslashes($_GET['login']); } mysql_select_db($database_shool, $shool); $query_usinfo = sprintf("SELECT * FROM usinfo WHERE username = '%s'", $colname_usinfo); $usinfo = mysql_query($query_usinfo, $shool) or die(mysql_error()); $row_usinfo = mysql_fetch_assoc($usinfo); $totalRows_usinfo = mysql_num_rows($usinfo); mysql_select_db($database_shool, $shool); $query_users = "SELECT * FROM users"; $users = mysql_query($query_users, $shool) or die(mysql_error()); $row_users = mysql_fetch_assoc($users); $totalRows_users = mysql_num_rows($users); ?> -это хоть близко к истине? Да, видимо гемороя действительно больше! :wink:
Интересный Dreamweaver - такое выдает!!! Какая версия говоришь? Короче ты можешь сделать так: 1. Создаешь скрипт, который если не пришли данные от пользователя выдает форму ввода логина и пароля, а если пришли проверяет их совпадение со значениями в базе данных и если это правильные логин и пароль скрипт выдает инфу о пользователе из другой таблицы. Если значения не совпали скрипт выдает опять же форму входа. 2. В певрой и второй таблице добавляешь поле типа int с названием id и выставляешь для него auto increment. Такое же поле только без auto increment вставляешь во вторую таблицу и удаляешь из нее поле логина, а все остальное оставляешь. По этим значиниям эти две таблицы будут связаны. Но можно и как ты предложил, потому что в основном логины у пользоателей уникальны, от сюда и не только от сюда пункт три. 3. Обычно я делаю так. Сделай скрипт регистрации, тоесть добаления нового пользователя, чтобы ты мог его добавить с помощью ХТМЛ формы. А потом все остальное. Вот сделаешь его и возможно многие вопросы отпадут. Но думаю еще больше появиться. ГЫ.
Спасибо большое! Но дело в том, что я это всё сделал И проблемма в том что не знаю как построить запрос из формы входа, которая находится на другой странице. Я понимаю что данные передаются методом Post, но как их поймать?
наверное, ты имеешь ввиду - как бегать по другим страницам, чтобы оставалась "залогинность юзера". Для этого существует механизм сессий. http://www.google.com/search?ie=UTF-8&h ... 0%B8%D0%B8
Вот что нужно: Login.php Логин: Вася Пароль: qwerty Войти => Lk.php Привет Вася! Вот инфа о тебе: Ля-ля-ля... Login.php Логин: Петя Пароль: supermen Войти => Lk.php Привет Петя! Вот инфа о тебе: Жу-жу-жу... И т.д. Думаю теперь понятно ?!
Ты можешь сделать все либо в дном скрипте либо в двух, тогда надо будет из первого переходить во второй, сохраняя либо в сессии либо в куках информацию о том, кто вошел.
Русским по серому тебе пишут: в login.php ты рисуешь html-форму, action которой "lk.php". В этом lk.php ты считываешь $_POST['login'] PHP: echo "привет ".$_POST['login']."! Вот инфа о тебе: Ля-ля-ля..."; Думаю теперь понятно :lol: ?! А теперь объясни, какое отношение эта байда имеет к базам данных и почему ты писал именно в эту тему, а не в "новичков"?
Эта "байда" имеет отношение к БД, как php к MySQL Вся инфа берётся из БД (логин,пароль,данные о юзере).
Значится так... Создал форму на странице входа: HTML: <form action="lk.php" method="post"> <input type="text" name="login"> <input type="submit" name="Submit" value="Submit"> </form> Далее на странице куда попадает пользователь (lk.php): PHP: //отображается введённый логин пользователя <?php echo $_POST['login']; ?> //Если логин пользователя есть в БД, то отображается ещё и информация об этом пользователе <?php $colname_information = "1"; if (isset($_POST['login'])) { $colname_information = (get_magic_quotes_gpc()) ? $_POST['login'] : addslashes($_POST['login']); } mysql_select_db($database_shool, $shool); $query_information = sprintf("SELECT usinfo.usinform FROM usinfo WHERE username = '%s'", $colname_information); $information = mysql_query($query_information, $shool) or die(mysql_error()); $row_information = mysql_fetch_assoc($information); $totalRows_information = mysql_num_rows($information); ?> Это всё замечательно, но только нет ограничения доступа по логину и паролю. Зайти может любой
Эта проблема как выше сказано, легко решается по средствам сессий. для примера: PHP: //Проверяем форму if (isset($_POST['login']) && isset($_POST['password'])) { $login = mysql_real_escape_string($_POST['login']); $password = md5($_POST['password']); // допрашиваем БД $query = "SELECT `id` FROM `users` WHERE `login`='{$login}' AND `password`='{$password}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); // если такой юзверь есть if (mysql_num_rows($sql) == 1) { // метим в сессии к примеру по его id $row = mysql_fetch_assoc($sql); $_SESSION['user_id'] = $row['id']; else { echo"мы таких незнаем"; } П.С. Редактируй под себя.
Ну вот что у меня вышло: PHP: //Подключаемся к БД require_once('../Connections/shool.php'); //Проверяем форму if (isset($_POST['login']) && isset($_POST['pass'])) { $login = mysql_real_escape_string($_POST['login']); $pass = mysql_real_escape_string($_POST['pass']); // допрашиваем БД $query = "SELECT `id` FROM `users` WHERE `login`='{$login}' AND `pass`='{$pass}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); // если такой юзверь есть if (mysql_num_rows($sql) == 1) { // метим в сессии к примеру по его id $row = mysql_fetch_assoc($sql); $_SESSION['user_id'] = $row['id']; //Выбираем из БД нужную информацию $col_info = "1"; if (isset($_SESSION['user_id'])) { $col_info = (get_magic_quotes_gpc()) ? $_SESSION['user_id'] : addslashes($_SESSION['user_id']); } mysql_select_db($database_shool, $shool); $query_info = sprintf("SELECT usinfo.usinform FROM usinfo WHERE usinfo.id=%s", $col_info); $info = mysql_query($query_info, $shool) or die(mysql_error()); $row_info = mysql_fetch_assoc($info); $totalRows_info = mysql_num_rows($info); mysql_free_result($info); // Выводим её на экран echo $row_info['usinform']; //Если имя пользователя и пароль не совпадают- делаем откат } else { echo"мы таких незнаем"; } } Есть ещё вопрос: строку $pass = md5($_POST['pass']); заменил на $pass = mysql_real_escape_string($_POST['pass']); Это смертельно ?
Эх, вот дожил до выкладки этого кода на веб-сервер, да появилась ошибка.. После того как в форме логина и пароля ввели данные и нажали "Войти" страница вот с этим самым кодом выдаёт: No database selected Причём на локальной машине всё работает и работают все другие скрипты обращающиеся к БД на веб-сервере. :?
PHP: //Подключаемся к БД require_once('../Connections/shool.php'); Правь под свой веб-сервер. В общем настрой подключение к БД, а точнее выборку базы.
Кажись разобрался.. Всё работает если сделать так: PHP: //Подключаемся к БД require_once('../Connections/shool.php'); [color=red]mysql_select_db($database_shool, $shool);[/color] и т.д.