За последние 24 часа нас посетили 17335 программистов и 1721 робот. Сейчас ищут 1554 программиста ...

Вопрос по Сессиям

Тема в разделе "Вопросы от блондинок", создана пользователем Игорь_Vasinsky, 18 янв 2009.

  1. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Если довольно резко высказался, прошу прошения. Накипело.
     
  2. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    оригинально ! и справедливо. я бы ещё добавил что форум это ещё и место где тебе постоянно тыкают ссылками. значит помогать не будите.
     
  3. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Вот мне в голову лезла идея как всегда сумашедшая:

    Решил сделать так, если пользователь имеет куки с моего сайта (живут которые 3 дня - 259200 секунд) пришёл на сайт пока куки живы - то на странице приветствия (а он именно туды и попадёт), кроме приветствия по имени ему будет показаано сколько ему осталось (до смерти куки).

    Скорее всего алгоритм будет такой:

    После передачи переменных с формы ренистрации также и передаём и время регистрации - и запишеться в куки.

    время жизни куки мы знаем
    время регистрации мы знаем
    видим мы и время прихода пользователя на страницу приветствия

    $time_reg - время регистрации пользователя
    $coocie_live - время жизни куки
    $present_time - время появления юзера на странице приветствия

    Нужно как то найти разницу $time_minus=$present_time - $time_reg

    сравнить

    if ($time_minus > $cookie_live){отправить юзера опять региться}
    else

    $user_live = $time_minus - $cookie_live - показать в формате часы минуты секунды




    Причём если учесть что время - это время и дата и нужно всё это перевести в цифры чтобы проводить арифмитические операции, а потом показать остаток (часы минуты секунды)



    От сюда вывод. заниматся этим не нужно -т.к. люди в белых халатах всегда на чеку!
     
  4. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    тоже гениальная фраза!

     
  5. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    В своё оправдание скажу вот к этому я пришёл сам (http://php.ru/manual -разумеется домашняя страница в браузере)

    Есть 3 страницы

    dostup.php - форма с регистрацией и ввода пароля с смс (пароль валиден 3 дня)

    access.php - приветствия юзера (после успешной регистрации и проверки валидности пароля)

    secret_place.php - страница куда может зайти тольго зарегинный пользователь (и то только след 3 дня)


    Работа

    В dostup.php

    PHP:
    1. <?php
    2. if (!isset($_COOKIE['mycook_ip']))  //если куки отсутствуют
    3. {
    4. выводим форму регистрации
    5. }
    6. else    //если куки обнаружены
    7. {
    8. //отправляем узнанного юзера на страницу приветствия
    9. }
    10. session_start();  //считаю необходимым как для узнанного юзера (передовать переменные) так и незнакомца
    11.  
    12. //если переменная пуста (переменаяя преобретает значение при регистрации) - ни чё не делаем
    13. if (empty($name)){echo"";}  
    14.  
    15. // если значение переменной присвоено (а значит прошла регистрация т.к. форма post/php_self)
    16. // открываем сессию и регистрируем данные переданные через форму
    17. else{
    18. $sms=$_POST['key'];
    19. $username=$_POST['name'];
    20. $ip=$_SERVER['REMOTE_ADDR'];
    21. session_register("username");
    22.  
    23. //и сразу отправляем на страницу приветствия
    24. echo "
    25. <script language=javascript>
    26. location.href='access.php';
    27. </script>
    28.  
    29. ";
    30. ?>

    access.php

    PHP:
    1. <?php
    2. setcookie('mycook',$username,time()+259200); //запоминаем имя юзера (выдергивая их из сессии)
    3. setcookie('mycook_ip',$ip,time()+259200); //запоминаем ip юзера (выдергивая их из сессии) - пригодится
    4. ?>
    хотел сделать это на dostup.php - header отправлялись пучками - пришлось сделать так

    и теперь secret_place.php

    PHP:
    1. if (!isset($_COOKIE['mycook_ip'])) // взял эти (можно и mycook) - проверили куки
    2. {
    3. // не пустили юзера и отправим регистрироваться
    4. }
    5. else
    6. {
    7. // покажем страницу целиком
    8. }
    по моему всё описал.

    Сессии использовал для узнования зарегенного юзера (чтоб не выводить для него снова форму регистрации)
    Cookie - для того чтобы помнить его 3 дня

    Если юзер отключил куки - он казёл, так как стока сил вложил в этот код.

    Скрипт работает.

    Ну а теперь можно ваше мнение послушать, я адекватно воспринимаю критики и похвалу.
     
  6. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Ссылку кинуть? ;)
     
  7. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    .....ну давай...что ж ты рыжий чёли...
     
  8. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
  9. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    так побегал немного глазками. Ты про что хотел сказать ? Про уезвимость ? А мне ро барабану эти дыры.
     
  10. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Ну что ж, тогда хвалю!
     
  11. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Принято.
     
  12. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Игорь_Vasinsky
    Делаю вам предупреждение. Второго предупреждения не будет, будет бан.
     
  13. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Xt заслужил?
     
  14. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Всмысле за что?
     
  15. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Орать не надо.
     
  16. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    эмоции... но справедливо. лан - усёк на будущее.
     
  17. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    А где это - Обнинск ?
     
  18. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
  19. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Hight
    Google Maps forever =)
    105 км от Москвы, 1 ч 55 минут на машине =)
     
  20. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    По киевскому шоссе за час доезжаю =)
     
  21. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Теперь буду знать. Просто я первый раз слышу это название. Да и в школе тройка всегда была.
     
  22. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Господа.... Вот и проблемка

    Вроде всё хорошо - но (раньше меня это не беспокоило) если у пользователя отключены куку - то это не хорошо.
    Я нашёл как проверить

    PHP:
    1. <?php
    2.  
    3. if(!$cookie){
    4.  
    5.    // посылаем заголовок переадресации на страницу,
    6.  
    7.    // с которой будет предпринята попытка установить cookie
    8.  
    9.    header("Location: $PHP_SELF?cookie=1");
    10.  
    11.    // устанавливаем cookie с именем "test"
    12.  
    13.    setcookie("test","1");
    14.  
    15.  }
    16.  
    17.  else
    18.  
    19.  {
    20.  
    21.    if(!$test)
    22.  
    23.    {
    24.  
    25.      echo("Для корректной работы приложения необходимо включить cookies");
    26.  
    27.    }
    28.  
    29.    else
    30.  
    31.    {
    32.  
    33.      // cookie включены,  тихо про себя радуемся !
    34.    
    35.    }
    36.  
    37.  }
    38.  
    39. ?>

    И вот - для проверки cookie - этот код посылает header - вот это то и плохо т.к. мне нужно чтобы стартовала сессия.

    И как быть ? Проверить то нужно.
     
  23. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    как вариант: использовать Java script , тем более что проблем с передачей переменных не будет, но java script nj; может быть отключён - а мы не ищем простых путей!
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Зачем пытаться ставить куки, если они не работают? :-D
    А чтобы стартовала сессия, надо session_start ставить перед header'ом.