Добрый вечер, подскажите, нужна помощь по личному кабинету на PHP 1. вариант вопроса - лич.каб сделан на ПХП, делаю проверку сессии так Код (PHP): <?php // Проверяем, пусты ли переменные логина и id пользователя if (empty($_SESSION['login']) or empty($_SESSION['id'])) { // Если пусты, то мы не выводим ссылку а выводим echo "Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка доступна только зарегистрированным пользователям</a>"; } else { // Если не пусты, то мы выводим ссылку + какой то контент echo "Вы вошли на сайт, как ".$_SESSION['login']."<br><a href='ккккккккккккк'>Эта ссылка доступна только зарегистрированным пользователям</a>"; } ?> личный кабинет нужен чтобы показывать дополнительный контент на странице (для зарегистрировавшихся больший, для не зарегистрировавшихся - меньший) регистрируются пользователи сами, т.е. им приходит письмо они по ссылке переходят и активируются, вопрос вот в чем могу ли я ограничить их права для просмотра доп.контента, добавив в вот эту строку проверки сессии еще одну переменную например Код (PHP): if (empty($_SESSION['login']) or empty($_SESSION['id']) or empty($_SESSION['НОВАЯ ПЕРЕМЕННАЯ'])) т.е. НОВУЮ ПЕРЕМЕННУЮ я забиваю сам в БД (чтоб она была не пустой при проверке) - как бы для одобрения человека администратором , чтобы он зарегился но новый контент стал доступен только после того как я заполню доп.переменную (доп.поле в БД) - типа я его одобрю как зарегистрировавшегося пользователя одобренного модератором 2. вариант вопроса - либо как сделать личный кабинет чтоб я мог сам выставлять права пользователя для просмотра ВИП-контента))) объясняю по русски) - есть сайт на странице которого инфа Имя:Андрей, Фамилия:Иванов - это доступно всем, + например контент который должен быть доступен только директорам после регистрации и самое ВАЖНОЕ одобрения модератором - (вопрос как сделать одобрение модератором) - Телефон: +7000-000-00-00, EMAIL: 000@mail.ru как лучше сделать такой личный кабинет - как я написал в 1 варианте? или есть еще какие-то способы?
drey19061984, в чём проблема? Вы можете написать код так, чтоб пользователь мог войти на сайт, только прислав фотографию своей задницы с написанным на ней логином, и после вашего одобрения. Вы же сами описали, как делается. Создаётся флаг в базе "задница одобрена", и проверяется установка сего флага
то есть вот это ?я прав? Код (PHP): if (empty($_SESSION['login']) or empty($_SESSION['id']) or empty($_SESSION['НОВАЯ ПЕРЕМЕННАЯ'])) ???????????????? я просто хотел чтоб мне сказали так я думаю или нет...
Код (PHP): if ($_SESSION['login'] ?? $_SESSION['id'] ?? $_SESSION['НОВАЯ ПЕРЕМЕННАЯ']) Так же можна ?
В сессии она будет жить только после того, как пользователь войдёт. А между его входами где будет храниться эта инфа? . А при авторизации или проверяете сразу, или пишите в сессию, ради бога
можешь конечно. только было бы логично оформить проверки в функции с говорящими названиями и оперировать ими. пусть это будет "черный ящик", про который ты знаешь как его использовать, но не хочешь знать как он устроен внутри. isGuest(), isLoggedIn(), isConfirmedUser(), isAdmin() — так ведь красивее и удобнее в будущих модификациях, правда?
всмысле как то так? Код (PHP): <?php function_isGuest () { if (empty($_SESSION['login']) or empty($_SESSION['id'])) { // Если пусты, то мы не выводим контент а выводим echo "Вы вошли на сайт, как гость<br><p>Этот контент доступен только зарегистрированным пользователям</p>"; } } else { function_isLoggedIn () { { // Если не пусты, то мы выводим какой то контент echo "Вы вошли на сайт, как ".$_SESSION['login']."<br><p>Этот контент доступен зарегистрированным пользователям</p>"; } } } isGuest(); isLoggedIn() ?> так?
Брр..... Вы хоть бы книжечку, что-ли или мануальчик почитали... Не позорились бы, публикуя этот бред страшенный.... Код (PHP): function isGuest() { return empty($_SESSION['login']) or empty($_SESSION['id']); } if (isGuest()) { die("Данный раздел не доступен гостям"); } А вообще, рано вам ещё авторизацию делать, вам надо делать программки типа "вывести простые числа" и т.п.
ну тебе смешно, ага. но ты видимо настолько туп что не можешь уловить очевидную вещь. нехер браться за сложные вещи если не умеешь делать простые. а ты берешься. проект явно не по твоему уровню. а уровень ты не хочешь поднять. тебе надо проект сделать. ну и рви жопу дальше. нам-то с тебя лишь поржать и в остальном ты погоды не делаешь.
ну сделаешь и сделаешь. лет через сто, наверное, при таком подходе к делу, но сделаешь. в тебя тут все верят. меня ты ничем не обидел. ты б лучше за учебники взялся, чем пытался меня цеплять.
ну тоже самое мне говорили когда надо было сделать форму поиска по БД по любому полю, так что это меня не пугает)))
ура ура получилось), и ста лет не прошло) файл входа в личный кабинет, добавил Код (PHP): if (isset($_POST['confirm'])){ и переменную $confirm = '1'; Код (PHP): <?php if (isset($_POST['login'])){ $login = $_POST['login']; if ($login == '') { unset($login); exit ("Введите пожалуйста логин!"); } } if (isset($_POST['password'])){ $password = $_POST['password']; if ($password == '') { unset($password); exit ("Введите пароль"); } } if (isset($_POST['confirm'])){ $confirm = 'confirm'; if ($confirm == '') { unset($confirm); exit ("..."); } } $login = stripslashes($login); $login = htmlspecialchars($login); $password = stripslashes($password); $password = htmlspecialchars($password); $login = trim($login); $password = trim($password); $confirm = '1'; $query = ("SELECT id FROM DIRECTOR WHERE login='$login' AND password='$password' AND confirm='$confirm'"); $user = mysql_query($query) or die(mysql_error()); $id_user = mysql_fetch_array($user); if (empty($id_user['id'])){ exit ("Извините, введённый вами логин или пароль неверный, либо Ваш аккаунт еще не активирован администратором."); } else { $_SESSION['password']=$password; $_SESSION['login']=$login; $_SESSION['id']=$id_user['id']; $_SESSION['confirm']=$confirm['confirm']; } echo "<meta http-equiv='Refresh' content='0; URL=../php_primer/index.php'>"; ?>
Пароль в открытом виде, обработка данных перед запросом неверная, назначение $_POST["confirm"] - вообще не понятно зачем оно надо. Нафига в сессии пароль - тоже не понятно. редирект метой зачем-то, когда можно заголовком...
Пароль в открытом виде - ну будет Код (PHP): $password = md5($password); , обработка данных перед запросом неверная - в чем именно и как надо? назначение $_POST["confirm"] - вообще не понятно зачем оно надо - это да, косяк, убрал Нафига в сессии пароль - тоже не понятно. - ну да и без него работает))))))))))))))))) редирект метой зачем-то, когда можно заголовком... - не понял Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Перед подстановкой в запрос единственное, что надо сделать, это mysql_escape_string. Для md5 пароля можно это не делать Да, и расширение mysql устарело, об этом и в доках написано, и здесь. Начиная с 5.4 php на него ругается грязным матом, в 7 - его вообще послали нафиг. Редирект делается Код (PHP): header("Location: url"); Добавлено спустя 32 секунды: Через мету - это если перед редиректом требуется на какое-то время показать некий контент