За последние 24 часа нас посетили 32987 программистов и 1756 роботов. Сейчас ищут 839 программистов ...

Нужна помощь по личному кабинету на PHP

Тема в разделе "PHP для новичков", создана пользователем drey19061984, 22 фев 2016.

  1. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    Добрый вечер, подскажите, нужна помощь по личному кабинету на PHP
    1. вариант вопроса - лич.каб сделан на ПХП, делаю проверку сессии так
    Код (PHP):
    1. <?php
    2.     // Проверяем, пусты ли переменные логина и id пользователя
    3.     if (empty($_SESSION['login']) or empty($_SESSION['id']))
    4.     {
    5.     // Если пусты, то мы не выводим ссылку а выводим
    6.     echo "Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка  доступна только зарегистрированным пользователям</a>";
    7.     }
    8.     else
    9.     {
    10.     // Если не пусты, то мы выводим ссылку + какой то контент
    11.     echo "Вы вошли на сайт, как ".$_SESSION['login']."<br><a  href='ккккккккккккк'>Эта ссылка доступна только  зарегистрированным пользователям</a>";
    12.     }
    13.     ?>
    личный кабинет нужен чтобы показывать дополнительный контент на странице (для зарегистрировавшихся больший, для не зарегистрировавшихся - меньший)
    регистрируются пользователи сами, т.е. им приходит письмо они по ссылке переходят и активируются,
    вопрос вот в чем могу ли я ограничить их права для просмотра доп.контента, добавив в вот эту строку проверки сессии еще одну переменную например
    Код (PHP):
    1.     if (empty($_SESSION['login']) or empty($_SESSION['id']) or empty($_SESSION['НОВАЯ ПЕРЕМЕННАЯ'])) 
    т.е. НОВУЮ ПЕРЕМЕННУЮ я забиваю сам в БД (чтоб она была не пустой при проверке) - как бы для одобрения человека администратором , чтобы он зарегился но новый контент стал доступен только после того как я заполню доп.переменную (доп.поле в БД) - типа я его одобрю как зарегистрировавшегося пользователя одобренного модератором
    2. вариант вопроса - либо как сделать личный кабинет чтоб я мог сам выставлять права пользователя для просмотра ВИП-контента)))

    объясняю по русски) - есть сайт на странице которого инфа Имя:Андрей, Фамилия:Иванов - это доступно всем,
    + например контент который должен быть доступен только директорам после регистрации и самое ВАЖНОЕ одобрения модератором - (вопрос как сделать одобрение модератором) - Телефон: +7000-000-00-00, EMAIL: 000@mail.ru
    как лучше сделать такой личный кабинет - как я написал в 1 варианте? или есть еще какие-то способы?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    drey19061984, в чём проблема? Вы можете написать код так, чтоб пользователь мог войти на сайт, только прислав фотографию своей задницы с написанным на ней логином, и после вашего одобрения. Вы же сами описали, как делается. Создаётся флаг в базе "задница одобрена", и проверяется установка сего флага
     
  3. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    то есть вот это ?я прав?
    Код (PHP):
    1. if (empty($_SESSION['login']) or empty($_SESSION['id']) or empty($_SESSION['НОВАЯ ПЕРЕМЕННАЯ'])) 
    ???????????????? я просто хотел чтоб мне сказали так я думаю или нет...
     
  4. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Код (PHP):
    1. if ($_SESSION['login'] ?? $_SESSION['id'] ?? $_SESSION['НОВАЯ ПЕРЕМЕННАЯ'])  
    Так же можна ?
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    В сессии она будет жить только после того, как пользователь войдёт. А между его входами где будет храниться эта инфа?
    . А при авторизации или проверяете сразу, или пишите в сессию, ради бога
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    можешь конечно. только было бы логично оформить проверки в функции с говорящими названиями и оперировать ими. пусть это будет "черный ящик", про который ты знаешь как его использовать, но не хочешь знать как он устроен внутри.

    isGuest(), isLoggedIn(), isConfirmedUser(), isAdmin() — так ведь красивее и удобнее в будущих модификациях, правда?
     
  7. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    всмысле как то так?
    Код (PHP):
    1. <?php
    2. function_isGuest () {
    3. if (empty($_SESSION['login']) or empty($_SESSION['id']))
    4.     {
    5.     // Если пусты, то мы не выводим контент а выводим
    6.     echo "Вы вошли на сайт, как гость<br><p>Этот контент доступен только зарегистрированным пользователям</p>";
    7.     }
    8. }
    9. else {
    10. function_isLoggedIn () {
    11. {
    12.     // Если не пусты, то мы выводим какой то контент
    13.     echo "Вы вошли на сайт, как ".$_SESSION['login']."<br><p>Этот контент доступен зарегистрированным пользователям</p>";
    14.     }
    15. }
    16. }
    17. isGuest();
    18. isLoggedIn()
    19. ?>
    так?
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    Брр..... Вы хоть бы книжечку, что-ли или мануальчик почитали... Не позорились бы, публикуя этот бред страшенный....

    Код (PHP):
    1. function isGuest() 
    2. {
    3.     return empty($_SESSION['login']) or empty($_SESSION['id']);
    4. }
    5.  
    6. if (isGuest()) {
    7.    die("Данный раздел не доступен гостям");
    8. }
    А вообще, рано вам ещё авторизацию делать, вам надо делать программки типа "вывести простые числа" и т.п.
     
  9. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    ахаха как обычно все отправляют в школу за учебники))))))))))))))
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну тебе смешно, ага. но ты видимо настолько туп что не можешь уловить очевидную вещь. нехер браться за сложные вещи если не умеешь делать простые. а ты берешься. проект явно не по твоему уровню. а уровень ты не хочешь поднять. тебе надо проект сделать. ну и рви жопу дальше. нам-то с тебя лишь поржать и в остальном ты погоды не делаешь.
     
  11. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    супер но в итоге я все равно ж сделаю))))я тебя чем то лично обидел?:-DDDDDDDDDDDDDD
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну сделаешь и сделаешь. лет через сто, наверное, при таком подходе к делу, но сделаешь. в тебя тут все верят. меня ты ничем не обидел. ты б лучше за учебники взялся, чем пытался меня цеплять.
     
  13. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    ну тоже самое мне говорили когда надо было сделать форму поиска по БД по любому полю, так что это меня не пугает)))
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ты вообще понимаешь что тебе говорят-то?
     
  15. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    ура ура получилось), и ста лет не прошло)
    файл входа в личный кабинет, добавил
    Код (PHP):
    1. if (isset($_POST['confirm'])){ 
    и переменную $confirm = '1';

    Код (PHP):
    1. <?php
    2. if (isset($_POST['login'])){
    3.     $login = $_POST['login']; 
    4.     if ($login == '') {
    5.         unset($login);
    6.         exit ("Введите пожалуйста логин!");
    7.     } 
    8. }
    9. if (isset($_POST['password'])){
    10.     $password = $_POST['password']; 
    11.     if ($password == '') {
    12.         unset($password);
    13.         exit ("Введите пароль");
    14.     }
    15. }
    16. if (isset($_POST['confirm'])){
    17.     $confirm = 'confirm'; 
    18.     if ($confirm == '') {
    19.         unset($confirm);
    20.         exit ("...");
    21.     }
    22. }
    23. $login = stripslashes($login);
    24. $login = htmlspecialchars($login);
    25. $password = stripslashes($password);
    26. $password = htmlspecialchars($password);
    27. $login = trim($login);
    28. $password = trim($password);
    29. $confirm = '1';
    30. $query = ("SELECT id FROM DIRECTOR WHERE login='$login' AND password='$password' AND confirm='$confirm'");
    31. $user = mysql_query($query) or die(mysql_error());
    32. $id_user = mysql_fetch_array($user);
    33. if (empty($id_user['id'])){
    34.     exit ("Извините, введённый вами логин или пароль неверный, либо Ваш аккаунт еще не активирован администратором.");
    35. }
    36. else {
    37.     $_SESSION['password']=$password; 
    38.     $_SESSION['login']=$login; 
    39.     $_SESSION['id']=$id_user['id'];
    40.     $_SESSION['confirm']=$confirm['confirm'];
    41. }
    42.  
    43. echo "<meta http-equiv='Refresh' content='0; URL=../php_primer/index.php'>";
    44. ?>
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    Пароль в открытом виде, обработка данных перед запросом неверная, назначение $_POST["confirm"] - вообще не понятно зачем оно надо. Нафига в сессии пароль - тоже не понятно. редирект метой зачем-то, когда можно заголовком...
     
  17. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    Пароль в открытом виде - ну будет
    Код (PHP):
    1. $password = md5($password); 
    ,
    обработка данных перед запросом неверная - в чем именно и как надо?
    назначение $_POST["confirm"] - вообще не понятно зачем оно надо - это да, косяк, убрал
    Нафига в сессии пароль - тоже не понятно. - ну да и без него работает)))))))))))))))))
    редирект метой зачем-то, когда можно заголовком... - не понял

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  18. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    Перед подстановкой в запрос единственное, что надо сделать, это mysql_escape_string. Для md5 пароля можно это не делать Да, и расширение mysql устарело, об этом и в доках написано, и здесь. Начиная с 5.4 php на него ругается грязным матом, в 7 - его вообще послали нафиг. Редирект делается
    Код (PHP):
    1. header("Location: url");
    2.  
    Добавлено спустя 32 секунды:
    Через мету - это если перед редиректом требуется на какое-то время показать некий контент
     
  19. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    смысла лишено
     
  21. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    удобство...