PHP

Cookie

Ваше первое посещение этого сайта произошло: 09.09.2013 16:40.

На этом простом примере видно, что мы взяли эту информацию не с нашего компьютера, а с Вашего.., то есть cookie - это текстовые файлы, которые ранее мы сохранили на Вашей машине.
Зачем это нужно - для удобства пользователя, если поддержка cookie включена на его компьютере, то мы сможем записывать к нему данные, которые ему в последующем не придется заводить при повторном посещении этого сайта, например: его имя, email, homepage, итд.

На нашем сайте всем пользователям мы присваеваем:
$user_id , в Вашем случае он равен 46.1378730451.
После этого пытаемся записать на машину пользователя эту информацию, при последующем посещении эту информацию берем с машины пользователя и выводим в программу.

Как же это сделать:

@setcookie ($name, $pass, time ()+33333333); 


$name - имя, под которым мы сохраним переменную на машине пользователя;
$pass - само значение этой переменной;
time ()+33333333 - время, в течение которого cookie будет действовать;

То есть все просто:
<?php 
    $name = 'name'; 
    $pass = 'Вася'; 
    @setcookie ($name, $pass, time ()+33333333); 
?>



Мы записали на машину пользователя переменную "name" со значением "Вася".
Теперь, если в начале скрипта поставим:
<?php 
   if ( isset ($_COOKIE)){ 
      foreach ( $_COOKIE as $key => $value ) { 
                 $$key=$value; 
                 } 
   } 
?>

То в последующем, всегда будет выводиться, что $name = 'Вася'

Теперь рассмотрим более подходящий для практики пример.
Обратите внимание на форму посылки письма для нас. Если Вы посмотрите html текст странички, то увидите следующее:

<form method="POST" action="all.php?act=pochta"> 
Ваше имя: <br> 
<input type="text" name="name" size="20" value=""><br> 
Ваш Email: <br> 
<input type="text" name="mail" size="20" value=""><br> 
Текст письма: <br> 
<textarea rows="5" name="message" cols="20" WRAP=virtual></textarea> 
<br><input type="submit" value="Поcлать" name="submit"> 
<input type="reset" value="Нет"> 
</form>

Вы видите, что значения value="" пусты, в них ничего нет. На самом деле, там не было пусто, этот файл в последующем назовем - $forma:

<form method="POST" action="all.php?act=pochta"> 
Ваше имя: <br> 
<input type="text" name="name" size="20" value="%c_name%"><br> 
Ваш Email: <br> 
<input type="text" name="mail" size="20" value="%c_mail%"><br> 
Текст письма: <br> 
<textarea rows="5" name="message" cols="20" WRAP=virtual></textarea> 
<br><input type="submit" value="Поcлать" name="submit"> 
<input type="reset" value="Нет"> 
</form>

То есть, файл php будет такой:
<?php
    //файл "fforma.htm" лежит в той же папке, что и файл .php
$forma = "fforma.htm"; 
if (! @file_exists ($forma)){
@touch ($forma);
$fp = fopen ($forma, "w");
fwrite ($fp, '
<table><tr><td>
<form method="POST" action="">
<input type="text" name="name" value="%c_name%" size="20">
<input type="text" name="mail" value="%c_mail%" size="20">
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</td></tr></table>
</form>
<a href="?del=yes">удалить cookie</a> 
' );
fclose ($fp);
}

if (! empty ($_GET['del'])) {
setcookie ("c_name", 'pass', time ()-3600);
setcookie ("c_mail", 'pass', time ()-3600);
}

if (! empty ($_POST['name'])) {$name = $_POST['name'];} else $name = '';
if (! empty ($_POST['mail'])) {$mail = $_POST['mail'];} else $mail = '';

    // если есть сохраненные cookie на машине пользователя выводим их
    // эта конструкция достанет с машины пользователя все сохраненные cookie
    // мы, ниже, попытаемся сохранить имя и емайл пользователя под именами:
    // $c_name и $c_mail, то есть если cookie есть, то в прорамму будет
    // выведено $c_name равно этому, а $c_mail равно этому.
if ( isset ($_COOKIE['c_name']) ) {$c_name = $_COOKIE['c_name'];} else $c_name = '';
if ( isset ($_COOKIE['c_mail']) ) {$c_mail = $_COOKIE['c_mail'];} else $c_mail = '';

    // далее смотрим если пользователь, что-то послал из формы,
    // то имя и емайл будут не пустые...
    // если $name не пусто, то присваеваем cookie c_name
    // со значением, которое пользователь послал из формы
if ($name){
if (!$c_name){ setcookie ("c_name", $name, time ()+33333333); }
elseif ($c_name!=$name) { setcookie ("c_name", $name, time ()+33333333); }
}
    // если $mail не пусто, то присваеваем cookie c_mail
    // со значением, которое пользователь послал из формы
if ($mail){
if (!$c_mail){ setcookie ("c_mail", $mail, time ()+33333333); }
elseif ($c_mail!=$mail) { setcookie ("c_mail", $mail, time ()+33333333); }
}
    // мы видим, что в программе появились переменные $c_name и $c_mail
    // меняем в форме c_name и c_mail на их значения
    // $forma - это файл html, который вы видели ранее
$forma = implode ("", file ($forma) );
$forma = str_replace ("%c_mail%", $c_mail, $forma);
$forma = str_replace ("%c_name%", $c_name, $forma);
    // если cookie нет, то $c_name и $c_mail пусты и в форме
    // в строки value="" будут пусты, если cookie есть, то туда
    // запишутся значения имени и емайл пользователя, и будут записываться
    // постоянно, ему не надо больше их вводить.
print $forma;
print "<a href='?a=1'>ссылка 1</a> <a href='?a=2'>ссылка 2</a> <a href='?a=3'>ссылка 3</a><br>";
print "Все Cookie появляются и исчезают только со следующего клика, так как лежат на машине пользователя." 
?>

Обратите внимание на предложение по выбору цветовой схемы сайта. То есть? мы предлагаем пользователю выбрать цветовую схему, после этого мы сохраняем её в cookie на его компьютере, и, теперь при каждом последующем его заходе, будем вытягивать из его машины это cookie и выставлять ту цветовую схему, которую он выбрал ранее, ему больше не придется делать выбор по цвету страничек...
Теги:
Cookie
Добавлено: 01 Апреля 2018 07:34:49 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...