Помощник
|
Вопрос по регистрации/авторизации и группы пользователя. Интересный вопрос =) |
MAKAR_hb
|
Сообщение
#1
|
||
|
|
||
|
|||
Mulder_hb |
3.2.2011, 11:25;
Ответить: Mulder_hb
Сообщение
#2
|
|
Но в тоже время прошу расказывать чем проще тем лучше, просто в php я пока не силён Как это знакомо. Очередной адепт Попова? Просмотрели 2-3 урока этого дилетанта и уже возомнили себя гуру? Выбросите его уроки в мусоропровод, купите настоящие книги по пхп. Через год упорного изучения можете приступать к написанию своей цмс. ЗЫ. Код, который вы привели, лучше никому не показывать, а писать для себя. Через год, будете сами над собой смеяться от того бреда, который написали. |
|
|
MAKAR_hb
|
Сообщение
#3
|
|
а что не так я написал? я попросил помощи, только и всего. и походу дела кроме вас себя гуру никто не считает.
|
|
|
MAKAR_hb
|
Сообщение
#4
|
|
Если вы считаете это бредом то хотябы говорили почему, а если это высказывание вы написали ради набивание поста то лес там ==>
|
|
|
Apay |
3.2.2011, 12:20;
Ответить: Apay
Сообщение
#5
|
|
код читать не стал, это долго и нудно, кратко вам скажу так: введите у каждого пользователя статус (в базе тоже), и при каждой генерации страницы в соответствии с этим статусом генерируйте свое для каждого пользователя.
|
|
|
DoctorX |
3.2.2011, 14:16;
Ответить: DoctorX
Сообщение
#6
|
|
Перед этим получаем из бд групп пользователя.
[PHP] if(session_start()) { $_SESSION['user'] = $_POST['login']; $_SESSION['password'] = $_POST['pass']; // Тут присваиваем группу из бд в сессиию // Осуществляем автоматический переход на // страницу index.php чтобы убедиться, что // посетитель "вошёл" echo "<HTML><HEAD> <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> </HEAD><body>"; } [/PHP] В нужном месте сравниваем группу из сессии с разрешённой группой и выводи или не выводим контент. -------------------- |
|
|
LifeUP |
3.2.2011, 14:41;
Ответить: LifeUP
Сообщение
#7
|
|
Набросал вам небольшой примерчик:
Регистрация: [PHP] <h3>Регистрация</h3> <form action="" method="post"> Login: <input name="login" type="text" maxlength="54" /><br /> Password: <input name="password" type="text" maxlength="45" /><br /> <input name="submit" type="submit" value="Войти" /> </form> <?php $info = ''; if (isset ($_POST['submit'])) { $login = isset ($_POST['login']) ? trim ($_POST['login']) : ''; $password = isset ($_POST['password']) ? trim ($_POST['password']) : ''; if (strlen ($login) < 4 || strlen ($login) > 54) { $info = 'Логин не может быть меньше 4 и больше 54 символов'; } elseif (strlen ($password) < 4 || strlen ($password) > 45) { $info = 'Пароль не может быть меньше 4 и больше 45 символов'; } if (empty ($info)) { // Шифруем в md5 пароль $password = md5 ($password); // Заносим данные в БД if (mysql_query ("INSERT INTO `users` (login, password, user_group) VALUES ('" . mysql_real_escape_string ($login) . "', '" . $password . "', '1')")) { $info = 'Регистрация прошла успешно'; } else { $info = 'Ошибка записи в БД'; } } } echo $info; [/PHP] Авторизация: [PHP] <h3>Авторизация</h3> <form action="" method="post"> Login: <input name="login" type="text" maxlength="54" /><br /> Password: <input name="password" type="text" maxlength="45" /><br /> <input name="submit" type="submit" value="Войти" /> </form> <?php $info = ''; $member_id = array (); // Тут будут храниться данные о пользователе if (isset ($_POST['submit'])) { $login = isset ($_POST['login']) ? trim ($_POST['login']) : ''; $password = isset ($_POST['password']) ? trim ($_POST['password']) : ''; if (strlen ($login) < 4 || strlen ($login) > 54) { $info = 'Логин не может быть меньше 4 и больше 54 символов'; } elseif (strlen ($password) < 4 || strlen ($password) > 45) { $info = 'Пароль не может быть меньше 4 и больше 45 символов'; } if (empty ($info)) { // Шифруем в md5 пароль $password = md5 ($password); // Проверяю есть ли такой юзер $member_id = mysql_fetch_assoc (mysql_query ("SELECT * FROM `users` WHERE login = '" . mysql_real_escape_string ($login) . "' AND password = '" . $password . "' LIMIT 1")); if ($member_id['login']) { $_SESSION['user_id'] = $member_id['user_id']; $_SESSION['user_password'] = md5 ($member_id['password']); header ('Location: /'); exit (); } else { $info = 'Такой пользователь не найден'; } } } echo $info; [/PHP] Проверка авторизации юзера: [PHP] // Проверка авторизирован ли юзер session_start (); if (isset ($_SESSION['user_id']) && $_SESSION['user_id'] > 0) { $user_id = (int)$_SESSION['user_id']; $password = $_SESSION['user_password']; $member_id = mysql_fetch_assoc (mysql_query ("SELECT * FROM `users` WHERE user_id = '" . $user_id . "' LIMIT 1")); if (md5 ($member_id['password']) == $password) { $_SESSION['user_id'] = $member_id['user_id']; $_SESSION['user_password'] = md5 ($member_id['password']); } else { // Пользователь не найден, удаляю сесии unset ($_SESSION['user_id'], $_SESSION['user_password']); header ('Location: /'); exit (); } } [/PHP] Пример прав доступа она же группа пользователей: [PHP] // Странциа проверки группы пользователя и его прав доступа $res = mysql_query ("SELECT * FROM `user_group`"); $user_group = array (); while ($row = mysql_fetch_assoc ($res)) { $user_group[$row['id']] = $row; } // Проверяю есть ли у юзера доступ к данной странице if ($user_group[$member_id['user_group']]['allow_page']) { echo 'Тут какойто контент'; } else { echo 'Ваша группа неможет просматривать данную страницу'; } [/PHP] sql users CREATE TABLE `users` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(54) NOT NULL, `password` varchar(35) NOT NULL, `user_group` int(11) NOT NULL, PRIMARY KEY (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; user_group CREATE TABLE `user_group` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, `allow_page` enum('0','1') DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `user_group` VALUES ('1', 'Пользователь', '1'); INSERT INTO `user_group` VALUES ('2', 'Гость', '0'); P.S писал не проверив. P.S.S Коннект к БД сами напишите |
|
|
Mulder_hb |
3.2.2011, 18:40;
Ответить: Mulder_hb
Сообщение
#8
|
|
Если вы считаете это бредом то хотябы говорили почему 1. [PHP]if (isset($_GET['id'])) {$id = $_GET['id']; } if (!isset($id)) {$id = 1;} [/PHP] Классический Попов. Тут возможны два варианта: 1. У вас полная каша в голове, раз пишите столь бессмысленный код. 2. Бездумный копипаст. Абы скопипастить код, а понять, зачем он тут не для нас. Конструкция if-else и тернарный оператор не для адептов Попова. Они ими брезгуют. [PHP]$id = isset($_GET['id']) ? intval($_GET['id']) : 1;[/PHP] 2. Какие-то дикие и невнятные проверки входных данных. Проверка введенного мыла вызывает хохот. В довесок добиваем код еще и повторяющимися проверками. Если ник не может содержать меньше трех букв, то зачем отдельно проверять на пустоту и на длину? Проверяйте сразу на длину. 3. [PHP]$result = "SELECT nick FROM register WHERE nick LIKE '$nick' OR nick LIKE '$eng_nick' OR nick LIKE '$rus_nick'"; $myrow = mysql_query($result);[/PHP] Получается, если в системе зареген пользователь "andre", я уже не смогу зарегить ник "andrey". Сам условие запроса вида "сам не знаю, что пишу". Ответьте, чему равны переменные $nick и $eng_nick в случае ника "andrey". Применение mysql_num_rows вообще ресурсоемко. Откройте для себя мануал по мускулу. 4. Некая подозрительно выборочное экранирование данных перед вставкой в бд. Почему были защищены только ник и пасс? Думаете остальные данные не опасны? Опять на лицо полное непонимание процесса и каша в голове. Это я еще по поверхности прошел. Жести в вашем коде напорядок больше. Не тратьте зря время. Начните изучать пхп, а не читать попсу. |
|
|
alexdrob |
3.2.2011, 20:22;
Ответить: alexdrob
Сообщение
#9
|
|
|
|
|
LifeUP |
3.2.2011, 21:26;
Ответить: LifeUP
Сообщение
#10
|
|
Можно так) [PHP]if (!empty($_SESSION['user_id']))[/PHP] Я думаю нет смысла каждый раз в бд запрос делать и проверять авторизован ли юзер. Так же можно и группу в сессии хранить. можно и так. Про авторизация не согласен, если какието данные меняются то юзер их не увидит, не есть гуд. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Стану редактором для вашей группы ВК редактор вконтакте |
3 | robot_yaga2 | 1233 | 18.2.2024, 18:15 автор: robot_yaga2 |
|
Куплю группы ВК - только через гаранта | 1 | robot_yaga2 | 880 | 30.5.2023, 16:51 автор: GlazAlmaz |
|
Инвайтер Телеграм в группы, бот Рассыльщик по личкам, Накрутчик подписчиков и просмотров в Каналах Продаю софт для живого продвижение в Telegram |
20 | mp3promo | 14086 | 10.4.2023, 18:26 автор: OnArbitrazh |
|
Нужен человек для ведения группы ВК и ТГ-канала | 1 | Kiloan_Frost | 1271 | 4.4.2023, 3:17 автор: marialitarova |
|
Ищу партнёров или исполнителей для создания телеграмм группы | 1 | clothing | 1555 | 13.10.2022, 16:17 автор: try100 |
Текстовая версия | Сейчас: 24.4.2024, 14:49 |