ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Cookie

Cookie

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 28 августа 2008 г. 14:58, спустя 24 дня 23 часа 59 минут

    Для каждого браузера своя кука??
    Или я что то не правильно написал?

    И можно ли сделать что бы использовался только 1 кук?
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 28 августа 2008 г. 15:01, спустя 3 минуты 5 секунд

    кука то в броузере хранится - следовательно да
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22926 Репутация: N Группа: в ухо

    Spritz 28 августа 2008 г. 16:33, спустя 1 час 31 минуту 20 секунд


    Для каждого браузера своя кука??
    Или я что то не правильно написал?

    И можно ли сделать что бы использовался только 1 кук?


    6.3 Implementation Limits

    Practical user agent implementations have limits on the number and
    size of cookies that they can store. In general, user agents' cookie
    support should have no fixed limits. They should strive to store as
    many frequently-used cookies as possible. Furthermore, general-use
    user agents should provide each of the following minimum capabilities
    individually, although not necessarily simultaneously:

    * at least 300 cookies

    * at least 4096 bytes per cookie (as measured by the size of the
    characters that comprise the cookie non-terminal in the syntax
    description of the Set-Cookie header)

    * at least 20 cookies per unique host or domain name


    http://www.w3.org/Protocols/rfc2109/rfc2109
    http://www.faqs.org/rfcs/rfc2965.html
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 29 августа 2008 г. 3:09, спустя 10 часов 35 минут 56 секунд

    Там все на английском=(((
  • adw0rd

    Сообщения: 22926 Репутация: N Группа: в ухо

    Spritz 29 августа 2008 г. 3:56, спустя 47 минут 18 секунд

    Professor, RFC - это основной документ на который нужно опираться. Можешь поискать русскую версию, ведь номер есть у этих документов.


    Там все на английском=(((


    Жаль, что ты не на английском :) http://www.google.ru/translate_t
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 29 августа 2008 г. 4:41, спустя 45 минут 31 секунду

    Я ПОСЕЩАЛ http://translate.google.ru/translate?hl=ru&sl=en&u=http://www.w3.org/Protocols/rfc2109/rfc2109&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3Drfc2109%26complete%3D1%26hl%3Dru%26lr%3D%26newwindow%3D1%26sa%3DG%26pwst%3D1
    Там что то про печенье =))
    4.3.4 Отправка Печенье к Родной Server

    а Если чесно, то такой перевод полностью прочитать и вникнуть не возможно.
    Бегло просмотрев,выхватив понятные фразы, понял что там написано то что и везде.
    Что кука храница на компе пользователя в виде текстового файла. Что каждая создается отдельно каждым браузером не видел.
    Поэтому и решил,почему бы всем браузерам не брать 1 файл с таким то именем и оставленный с такого то сайта.
    Теперь понял что глупость спросил.
  • igrayka

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 23 ноября 2009 г. 11:27, спустя 451 день 7 часов 45 минут

    Уважаемый,adw0rd.

    Если есть возможность помоги пожалуйста, я делаю авторизацию для своей cms и мне кажется дело в куки.
    вот код, в результате чего после регистрации, я начинаю проходить авторизацию и меня не пускает

    Код авторизации


    <?php
    // Страница авторизации

    # Функция для генерации случайной строки
    function generateCode($length=6) {
       $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
       $code = "";
       $clen = strlen($chars) - 1;  
       while (strlen($code) < $length) {
               $code .= $chars[mt_rand(0,$clen)];  
       }
       return $code;
    }


    # Соединямся с БД
    include_once "connect_to_mysql.php";

    if(isset($_POST['submit']))
    {
       # Вытаскиваем из БД запись, у которой логин равняеться введенному
       $query = mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1");
       $data = mysql_fetch_assoc($query);
       
       # Сравниваем пароли
       if($data['user_password'] === md5(md5($_POST['password'])))
       {
           # Генерируем случайное число и шифруем его
           $hash = md5(generateCode(10));
               
           if([email protected]$_POST['not_attach_ip'])
           {
               # Если пользователя выбрал привязку к IP
               # Переводим IP в строку
               $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
           }
           
           # Записываем в БД новый хеш авторизации и IP
           mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
           
           # Ставим куки
           setcookie("id", $data['user_id'], time()+60*60*24*30);
           setcookie("hash", $hash, time()+60*60*24*30);
           
           # Переадресовываем браузер на страницу проверки нашего скрипта
           header("Location: check.php"); exit();
       }
       else
       {
           print "Вы ввели неправильный логин/пароль";
       }
    }
    ?>
    <form method="POST">
    Логин <input name="login" type="text"><br>
    Пароль <input name="password" type="password"><br>
    Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
    <input name="submit" type="submit" value="Войти">
    </form>

    Код проверки, который не пускает … пишет - не получилось

    <?php
    // connect to your MySQL database here
    include_once "connect_to_mysql.php";

    // Скрипт проверки

    # Соединямся с БД


    if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
    {  
       $query = mysql_query("SELECT *,INET_NTOA(user_ip) FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
       $userdata = mysql_fetch_assoc($query);

       if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
    or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))
       {
           setcookie("id", "", time() - 3600*24*30*12, "/");
           setcookie("hash", "", time() - 3600*24*30*12, "/");
           print "Хм, что-то не получилось";
       }
       else
       {
           print "Привет, ".$userdata['user_login'].". Всё работает!";
       }
    }
    else
    {
       print "Включите куки";
    }
    ?>


    глянь пожалуйста
  • md5

    Сообщения: 11953 Репутация: N Группа: в ухо

    Spritz 23 ноября 2009 г. 11:43, спустя 16 минут 38 секунд

    adw0rd, давай
    мы на тебя надеемся :)
    все умрут, а я изумруд
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 23 ноября 2009 г. 11:48, спустя 4 минуты 59 секунд

    adw0rd, потом я тебе еще скину пару своих тасков…
    глянешь пожалуйста ?
  • igrayka

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 23 ноября 2009 г. 12:04, спустя 15 минут 54 секунды

    )))))) Парни )) )) помогите, ну правда. только начал разбираться, хочется сделать безопасный логин, а не просто сравнил и погнали ((

    Спасибо =) я понимаю каэшн это стебно
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 23 ноября 2009 г. 12:06, спустя 2 минуты 15 секунд

    igrayka, я думал ты девачка…
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 23 ноября 2009 г. 12:07, спустя 11 секунд

    уважаемый igrayka, воспользуйтесь пожалуйста поиском по форуму(благо что он у нас есть и работает даже неплохо)
    вы не первый кто пытается решить подобную проблему, прочитайте внимательно статью автором которой является md5
    спасибо,
    удачи.
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 23 ноября 2009 г. 12:08, спустя 1 минуту 33 секунды

    <form method="POST">

    мне кажется ты на вторую страницу просто не переходишь…
  • LIFF

    Сообщения: 188 Репутация: N Группа: Адекваты

    Spritz 24 ноября 2009 г. 2:00, спустя 13 часов 51 минуту 59 секунд

    igrayka,

    Прочитай первый пост в этой теме, относительно пути установки куки. Может в этом твоя проблема.
  • adw0rd

    Сообщения: 22926 Репутация: N Группа: в ухо

    Spritz 25 ноября 2009 г. 3:30, спустя 1 день 1 час 29 минут


       $query = mysql_query("SELECT *,INET_NTOA(user_ip) FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
       $userdata = mysql_fetch_assoc($query);

       if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
    or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))


    в SQL запросе есть конструкция "INET_NTOA(user_ip)", ее надо заменить на "INET_NTOA(user_ip) as user_ip", потомучто потом идет обращение "$userdata['user_ip']", а MySQL вернет не "user_ip", а  "INET_NTOA(user_ip)"
    Спустя 109 сек.
    И так как вы вытаскиваете еще все ("SELECT *,"), то у вас там есть уже user_ip, но он не тот, который вам нужен
    вам надо после
    $userdata = mysql_fetch_assoc($query); 

    вызвать
    print_r($userdata); exit;

    и разобраться что у вас есть в выводе
    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!