За последние 24 часа нас посетили 66949 программистов и 1640 роботов. Сейчас ищут 899 программистов ...

"Память сайта"

Тема в разделе "Прочие вопросы по PHP", создана пользователем mr.Gasparyan, 28 авг 2009.

  1. mr.Gasparyan

    mr.Gasparyan Активный пользователь

    С нами с:
    10 авг 2009
    Сообщения:
    36
    Симпатии:
    0
    Написал интересную на мой взгляд штуку.
    Смысыл таков:
    Пользователь заходи на сайт, переходит по разным страницам и выходит.
    Потом он заходит по адресу www.my_site.com и его ридиректит на страницу с которой он ушел в прошлый раз.

    Что скажите?

    PHP:
    1.  
    2. <?php
    3. class MemorySite{
    4.  
    5. #$time_limit - время жизни кука свидетильствующего о прошлом посещении, в сек.
    6. #$user_msg - сообщение которое будет выведено пользователю, после срабатывания
    7. #редиректа.
    8. #$stay - время в течении которого считается что пользователь на сайте, в сек.
    9.  
    10.     private $time_limit,
    11.             $stay;
    12.     public  $user_msg;
    13.  
    14. #задаем значение переменным и выполняем логику
    15.  
    16.     function __construct($time_limit=604800, $stay=600, $user_msg='NO MSG'){
    17.  
    18.         $this->time_limit = $time_limit;
    19.         $this->stay = $stay;
    20.         $this->user_msg = $user_msg;
    21.  
    22.         $this->redirect();
    23.     }
    24.  
    25. #Если существует история пребывания и не существует кука свидетельствующего о
    26. #присутсвии на сайте, то мы редиректим пользователя на прошлую страницуы
    27.  
    28.     private function redirect(){
    29.  
    30.         if( !isset($_COOKIE['MemorySite_onSite']) && isset($_COOKIE['MemorySite_history']) ){
    31.  
    32.             setcookie('MemorySite_onSite', '1', time()+$this->stay);
    33.             header('Location: '.$_COOKIE['MemorySite_history']);
    34.  
    35.         }else{
    36.  
    37.             setcookie('MemorySite_onSite', '1', time()+$this->stay);
    38.             setcookie('MemorySite_msg', $this->user_msg, time()+$this->time_limit);
    39.             setcookie('MemorySite_history', 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], time()+$this->time_limit);
    40.         }
    41.  
    42.     }
    43.  
    44. #Конец
    45. }
    46.  
    47. $MemorySite = new MemorySite();
    48. ?>
    49.  
     
  2. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Мне кажеться что пользователь если вернеться за сайт, то он врядли захочет смотреть, то что уже видел
     
  3. mr.Gasparyan

    mr.Gasparyan Активный пользователь

    С нами с:
    10 авг 2009
    Сообщения:
    36
    Симпатии:
    0
    Andrey5555
    Спорный момент, если это новостной сайт то эта система может подайти
     
  4. lanc777

    lanc777 Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    59
    Симпатии:
    0
    у меня таким образом сохраняются куки на jquery тока фишка в том что у меня запоминает расположение дивов на сайте а дивы настраиваются на свое усмотрение по ширине высоте положению на страницее )
     
  5. mr.Gasparyan

    mr.Gasparyan Активный пользователь

    С нами с:
    10 авг 2009
    Сообщения:
    36
    Симпатии:
    0
    lanc777
    мне кажется такие фишки очень приятны пользователям
     
  6. kostyl

    kostyl Guest

    Класс сильно не рассматривал, но могу сказать, что в одном проекте сейчас реализую кнопку отмены, которая возвращает пользователя к предыдущему шагу. Очень приятная вещь думаю будет, если запоминать предпоследний уникальный посещенный урл. В форме инпут со значением cancel и в начале работы приложения ловим его, если есть таковой - редирект на последний посещенный уникальный урл. Классная весчь!!
     
  7. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Есть такая ОС, занимающая большую часть десктопного рынка. Она тоже пытается думать за пользователя, но всегда вразрез с желаниями самого пользователя. Тут тоже самое. Это как практика перехода на главную страницу при 404 ошибке. Сидишь и думаешь, а что, собственно, произошло…

    Кнопка back?
     
  8. kostyl

    kostyl Guest

    не, с чего ты взял? Или ты имеешь в виду браузера кнопка? Браузера не катит во многих случаях. Например она может опять отправить пост...
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Идея интересная, но, на мой взгляд, при заходе на сайт пользователя должно направлять не на прошлую страницу, а на главную. Просто в правом углу должен быть вспылающий див, который будет предлагать перейти на ту страницу, с которой ушел в прошлый раз.


    Да, кстати. Гораздо большая вероятность, что пользователь хочет вернуться на страницу, с которой ушел, если он не закрыл браузер. То есть, я зашел на сайт через яндекс в какой-то раздел, потом закрыл страницу, но запомнил название сайта. Захожу на сайт и попадаю на ту страницу, которую искал в яндексе. Или же, случайно закрыл страницу и хочу вернуться. Если пользователь закрыл браузер, а потом снова зашел на сайт, то он явно хочет увидеть новости на сайте.
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    скачайте оперу
     
  11. kostyl

    kostyl Guest

    Mr.M.I.T.
    зачем нада же вебдванолить, чи чё?
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я оперу открываю только когда под нее отлаживаю, и то, плююсь при этом. То, что предлагает она - это полный кэш страницы. Потом еще обновлять не все файлы хочет.
     
  13. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Кстати, Оперой пользуюсь как основным браузером, но её кеш порой действует на нервы =)
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Kreker
    Apple
    надо ещё настроить уметь
     
  15. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Т.е. прочитал я последнюю интересную мне новость, захожу через день на новостной сайт (ясно дело - посмотреть новости), а меня на какую-то новость выбрасывает... потом оказывается, что еще на вчерашнюю, которую уже читал. А уж что ваша идея натворит, когда как любой нормальный человек на новостном сайте, открываешь 5-6 вкладок...
    Не, правда, думать об удобстве пользователя - это похвально. Но именно _думать_.
    На новостном сайте - это никому не нужно, даже в виде дива. На новостном сайте задача - подать _новые_ новости. Вот запоминайте дату последнего визита, подсвечивайте новое и т.д.
    А вот на сайте инет-магазина, к примеру, просмотренные товары можно запоминать. Но опять же - аккуратненько "вы смотрели" (см. яндекс.маркет к примеру)
    Набрав адрес сайта - человек должен попать на этот сайт, а не на какую-то неожиданную страницу.
     
  16. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    В браузере. кнопка. назад называется, да.
    Пост не будет отправляться, если на каждый пост делать header('Location: ...');

    В общем, не мучайте пользователей, все должно быть просто и очевидно. Тогда будет удобно.
    Ну или можно к каждому сайту писать мануал на 450 страниц и издавать по 10 книжек «vasyapupkin.ru: the definitive guide»
     
  17. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    mr.Gasparyan, у пользователя есть заебатая кнопка "Добавить в избранное"
    +1 к здравомыслию

    Хотя наверное прикольно создать велосипед, который запоминает куда ты повернул в прошлый раз, а на следующем перекрестке поварачивает самостоятельно в ту же сторону
     
  18. kostyl

    kostyl Guest

    Круто....(((( ИМХО это может быть не удобно, если надо возвращать результаты, и вообще нафига стартовать лишний процесс, когда можно вывести все что надо в текущем???
    Ну кто как хочет так и делает, спорить тут нечего.
     
  19. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Вещь специфическая и не стоит воображать её недостатки при реализации на вашем любимом сайте. Думайте шире - есть области, в которых, возможно, она действительно понадобиться.
    Вот к примеру - психологические тесты. Иногда результаты их интересны, но прохождение утомляет. Если прикрутить подобную "память" туда, то тест можно проходить несколько дней.
     
  20. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Понял ничего, ты про что? Неудобно может быть только что-то нестандартное, непривычное. Причем это не зависит от реального удобства. Встраивайтесь в текущий интерфейс пользователя — и к вам потянутся.

    В данном случае лучше спросить пользователя, не хочет ли он продолжить или сделать большую ссылку «продолжить». А вот кидать его с одного адреса на другой — только запутывать.

    Горе от ума, короче :)
     
  21. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Выше это и предлагал :)
     
  22. kostyl

    kostyl Guest

    я про: например, пользователь создает комментарий, и по каким либо причинам этот комментарий не создался, я возвращаю сообщение, что он не создался. Как я должен после редиректа узнать, что мне надо выдать сообщение, не производя дейстий кроме сохранения комментария?
    Плюс, когда я делаю редирект, я фактически для одной задачи стартую два процесса сервера. Мне, например, жалко. Я лучше сделаю не "команду", а "цепочку" и в одном процессе обработаю всё сразу и сохранение и вывод результата. Да, не удобоно если нажимать контр+р, да урл левый, но разве мало людей, которые хотят справляться одной лишь мышкой и с нормальной производительностью?
     
  23. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    kostyl
    Не умрет твой сервер от одного несчастного комментария :)
    А так, толпа костылей для поддержки другого костыля (я без всяких намеков на ник :) и непонятных проблем.
     
  24. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Редиректить только при успехе, при ошибке можно и пост оставить. Или вы вообще о чем? Какое-то растекание мысли, что я суть плохо уловил =)
     
  25. kostyl

    kostyl Guest

    MiksIr
    Нормально уловил. Это одно их решений.