Felix Опубликовано 29 Октября 2004 Жалоба Поделиться Опубликовано 29 Октября 2004 Нужен скрипт авторизации пользователя на странице.Вкратце для чего нужен...и с чем должен совместиться и работать при этом:Имеется поле, в котором юзер пишет всякую инфу и пароль, после нажатия отправки, форма обрабатывается через скрипт, который заносит в mysql введенный пароль varchar'om (md5 влом делать) ) Добавляется примерно так...$password = $HTTP_GET_VARS["password"]; $sql = "INSERT INTO $dtable (id,password) "; $sql .= "VALUES (' ','$password')";Вообщем в mysql получается varchar со значением пароля...От скрипта, который я страстно хочу получить требуется:При нажатии на ссылку, ну к примеру login.html появляется форма с полем "введите ID" и "введите пароль", ну и после ввода и submit чтобы скрипт проверял совпадение id и пароля, хранимого в базе и соответственно пускал юзера дальше или не пускал...сам я что-то косячу, вроде просто, а я толком php не изучал Никто такого простого не видел чуда? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 29 Октября 2004 Жалоба Поделиться Опубликовано 29 Октября 2004 md5 влом делатьнасмешил $hash = md5($pass); чего тут в лом-то? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 29 Октября 2004 Жалоба Поделиться Опубликовано 29 Октября 2004 после ввода и submit чтобы скрипт проверял совпадение id и пароля, хранимого в базе и соответственно пускал юзера дальше или не пускал... Пишу образно. Главное, понять идею. Скрыпт: получаем введенный ID ($login) получаем введенный Pass ($pass) делаем запрос в бд ($DB['login'] и $DB['pass']) дальше, пишем прим. следующее: if($login == $DB['login'] && $pass == $DB['pass']){ редирект, туда, куда надо. } else { выводим ошибку или проводим другие действия } Надеюсь понятно объяснил Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Еve Спасибо, все работает Добавлено в [mergetime]1099100957[/mergetime] Вот только в одну сторону )) При вводе правильного id и пароля не пускает ) вообщем вто чего я горе-напрограммил форма ввода id и пароля<html> <head> <title>Авторизация...</title> </head> <body bgcolor="#FFFFFF"> <form name="auth" action="auth.php" > <table cellspacing="2" cellpadding="2" border="0"> <tr> <td>ID ресурса</td> <td> <input type="text" name="id"></td> </tr> <tr> <td>Пароль</td> <td><input type="text" name="password"></td> </tr> </table> <input type="submit" name="submit" value="Ок"> </form> </body> </html> сам скрипт авторизации <?php require_once ('ini.php'); mysql_connect ("$host", "$user_db", "$pass_db"); mysql_select_db("$dbase"); $id = $HTTP_GET_VARS["id"]; $password = $HTTP_GET_VARS["password"]; $sql = "SELECT * FROM $dtable (id,password) "; $sql .= "VALUES ('','$password')"; // проверка на введенный id и пароль if($id == $dtable['$id'] && $password == $dtable['$password']) { echo "Все ок, редирект"; print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"2; URL=edit.php\">"; } else { echo "Неправильный ID или пароль ресурса."; print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4; URL=index.php\">"; } ?> ну и ini.php <?php $host = "localhost"; $user_db = "root"; $pass_db = ""; $dbase = "resources"; $dtable = "resources"; ?> а вот дамп таблицы откуда мне надо выбрать данные для проверки # phpMyAdmin SQL Dump # version 2.5.3 # [URL=http://www.phpmyadmin.net]http://www.phpmyadmin.net[/URL] # # Хост: localhost # Время создания: Окт 30 2004 г., 05:51 # Версия сервера: 3.23.53 # Версия PHP: 4.3.6 # # БД : `resources` # # -------------------------------------------------------- # # Структура таблицы `resources` # CREATE TABLE `resources` ( `id` int(10) NOT NULL auto_increment, `type` varchar(10) NOT NULL default '', `name` varchar(32) NOT NULL default '', `description` varchar(50) NOT NULL default '', `ip` varchar(32) NOT NULL default '', `dns` varchar(32) NOT NULL default '', `lan` varchar(15) NOT NULL default '', `time` varchar(15) NOT NULL default '', `icq` varchar(15) NOT NULL default '', `ipdetect` varchar(20) NOT NULL default '', `password` varchar(30) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=20; # # Дамп данных таблицы `resources` # INSERT INTO `resources` VALUES (1, ''); INSERT INTO `resources` VALUES (2, ''); INSERT INTO `resources` VALUES (3, ''); INSERT INTO `resources` VALUES (4, ''); INSERT INTO `resources` VALUES (5, ''); INSERT INTO `resources` VALUES (6, ''); INSERT INTO `resources` VALUES (7, ''); INSERT INTO `resources` VALUES (8, ''); INSERT INTO `resources` VALUES (9, '123'); INSERT INTO `resources` VALUES (10, '75373'); INSERT INTO `resources` VALUES (11, '75373'); INSERT INTO `resources` VALUES (12, '7547'); INSERT INTO `resources` VALUES (13, '7547'); INSERT INTO `resources` VALUES (14, '2213'); INSERT INTO `resources` VALUES (15, 'fffujyoi'); INSERT INTO `resources` VALUES (16, '3'); INSERT INTO `resources` VALUES (17, 'лрпвл'); INSERT INTO `resources` VALUES (18, 'лрпвл'); INSERT INTO `resources` VALUES (19, '111'); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 Вот тут кажись ошибка закралась:if($id == $dtable['$id'] && $password == $dtable['$password']) {Исправь на:if($id == $dtable['id'] && $password == $dtable['password']) { Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Все равно что-то не фыркает. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 <form name="auth" action="auth.php" >заменить на:<form name="auth" action="auth.php" method="post"> $id = $HTTP_GET_VARS["id"]; $password = $HTTP_GET_VARS["password"];заменить на:$id = $_POST["id"]; $password = $_POST["password"];мы же не хотим , чтобы пасс светился в адресной строке? а это что за тихий ужас? $sql = "SELECT * FROM $dtable (id,password) "; $sql .= "VALUES ('','$password')";заменить на:$sql = "SELECT id, password FROM $dtable WHERE password='$password'"; идем дальше, а где собственно выполнение запроса сиквела? добавляем:$dtable = mysql_query($sql); if($id == $dtable['$id'] && $password == $dtable['$password']) {заменить на: if(($id == $dtable['id']) && ($password == $dtable['password'])) { вроде все Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Все поменял, почему-то не хочет принимать данные, отправляет в break Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 в какой break?приведите скрин, распечатку Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Cepera Мне вот это надо было привести? Это ошибка при неправильном вводе id и пароля - я такую же наблюдаю, набирая правильные id и пароли echo "Неправильный ID или пароль ресурса.";Ясно понятно, что это echo я вижу постоянно Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 тогда приведите полученный скрипт кстати, лучше б все в одном файле, а не в трех Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Ну привык я к include'ам Сама форма<html> <head> <title>Авторизация...</title> </head> <body bgcolor="#FFFFFF"> <form name="auth" action="auth.php" method="POST"> <table cellspacing="2" cellpadding="2" border="0"> <tr> <td>ID ресурса</td> <td> <input type="text" name="id"></td> </tr> <tr> <td>Пароль</td> <td><input type="text" name="password"></td> </tr> </table> <input type="submit" name="submit" value="Ок"> </form> </body> </html> Сам скрипт, дамп базы класть не буду, он выше есть. <?php // Проверка пароля и id перед редактированием... require_once ('ini.php'); // Соединяемся с базой mysql_connect ("$host", "$user_db", "$pass_db"); mysql_select_db("$dbase"); $id = $_POST["id"]; $password = $_POST["password"]; $sql = "SELECT id, password FROM $dtable WHERE password='$password'"; $dtable = mysql_query($sql); // проверка на введенный id и пароль if(($id == $dtable['id']) && ($password == $dtable['password'])) { //редирект. echo "Все ок, редирект"; print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"2; URL=edit.php\">"; } else { echo "Неправильный ID или пароль ресурса."; print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4; URL=index.php\">"; } ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 ну что ж, поэтапно... проверки ставим и упрощаемmysql_connect ("$host", "$user_db", "$pass_db"); mysql_select_db("$dbase");меняем на:mysql_connect ($host, $user_db, $pass_db) or die("Could not connect to a server."); mysql_select_db($dbase) or die("Could not select a db."); если все ок - бредем дальше $sql = "SELECT id, password FROM $dtable WHERE password='$password'";$dtable = mysql_query($sql);меняем на (и сразу нашлась ошибка):$result = mysql_query("SELECT id, password FROM $dtable WHERE password='$password'") or die("Could not execute a query.");if ($dtable = mysql_fetch_row($result)) header("Location: файл_куда_есть_доступ");else echo "Get away "; все Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Вот блин я бот Вот что получаем.Warning: Cannot modify header information - headers already sent by (output started at z:\home\10.14.132.3\www\res\ini.php:13) in z:\home\10.14.132.3\www\res\auth.php on line 15 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 а что есть 13 строка? Добавлено в [mergetime]1099124778[/mergetime] лучше сразу опять целым листингом, мало ли что еще появится Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 (изменено) <?php // Проверка пароля и id перед редактированием... require_once ('ini.php'); // Соединяемся с базой mysql_connect ($host, $user_db, $pass_db) or die("Could not connect to a server."); mysql_select_db($dbase) or die("Could not select a db."); $id = $_POST["id"]; $password = $_POST["password"]; // проверка на введенный id и пароль $result = mysql_query("SELECT id, password FROM $dtable WHERE password='$password'") or die("Could not execute a query."); if ($dtable = mysql_fetch_row($result)) { header("Location: edit.php"); } else { echo "Get away "; } ?> Изменено 30 Октября 2004 пользователем Felix Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 а ini.php что-то пишет на странице??? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Нет, просто ошибка, написанная 2мя постами выше. В ini.php только настройки выбора бд. Вообщем он тоже тут лежит выше где-то. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 кстати, свою ошибку увидел SELECT id, password FROM $dtable WHERE password='$password'заменить наSELECT id FROM $dtable WHERE password='$password' AND id='$id' модифицировал старый запрос, а проверку id не повесил... Добавлено в [mergetime]1099125717[/mergetime] проверьте <?php $host = "localhost"; $user_db = "root"; $pass_db = ""; $dbase = "resources"; $dtable = "resources"; mysql_connect ($host, $user_db, $pass_db) or die("Could not connect to a server."); mysql_select_db($dbase) or die("Could not select a db."); $id = $_POST["id"]; $password = $_POST["password"]; $result = mysql_query("SELECT id ROM $dtable WHERE password='$password' AND id='$id'") or die("Could not execute a query."); if ($dt = mysql_fetch_row($result)) echo "OK"; else echo "Failed"; ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Сначала не работало, но после того как поменял SELECT id ROM $dtable на SELECT id FROM $dtable все заработало, спасибо Зы темку не закрывайте друг меня бота такого еще на что-нибудь пробьет, все-таки проект как-никак Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 ну там опечатка была правильно поменяли Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 30 Октября 2004 Автор Жалоба Поделиться Опубликовано 30 Октября 2004 Спасибо конечно, но, думаю я Вас еще помучаю Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 31 Октября 2004 Автор Жалоба Поделиться Опубликовано 31 Октября 2004 (изменено) Так, а как проверку сделать чтобы просто так без логина в edit.php никто не заходил, не пройдя auth.php? +) Желательно без редиректа, таблица banned уже есть...# Структура таблицы `banned` # CREATE TABLE `banned` ( `id` int(10) NOT NULL auto_increment, `ipaddr` varchar(32) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=18; # # Дамп данных таблицы `banned` # INSERT INTO `banned` VALUES (1, '1.2.3.4'); INSERT INTO `banned` VALUES (2, '12.13.1.14'); INSERT INTO `banned` VALUES (3, '2.3.4.32'); Да, и если есть простенький скрипт на проверку ip перед заходом без всяких групп и тд с юзанием mysql - подкиньте ссылочку, а то из меня яндексер как и sql-программист пока только нарисовал в одну сторону - в сторону "не войдешь" <?php $ipaddr = $REMOTE_ADDR; require_once('ini.php'); mysql_connect ($host, $user_db, $pass_db) or die("Невозможно соединиться с mysql сервером."); mysql_select_db($dbase) or die("Невозможно выбрать БД."); $result = mysql_query("SELECT ipaddr FROM $dtable2 WHERE ipaddr='$ipaddr'") or die("Невозможно выполнить запрос."); if ($dt2 = mysql_fetch_row($result)) { echo "4325432532"; print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php\">"; } else { echo "Попытка доступа записана в логах."; print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4; URL=\">";} ?> Изменено 31 Октября 2004 пользователем Felix Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 31 Октября 2004 Жалоба Поделиться Опубликовано 31 Октября 2004 после того как поменял SELECT id ROM $dtable на SELECT id FROM $dtableоригинально. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Felix Опубликовано 3 Ноября 2004 Автор Жалоба Поделиться Опубликовано 3 Ноября 2004 Song Да я тоже долго угарал Вообщем ап Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.