Showing source code for /jcd/useful/webcon/2005/cookies.php

Show normal

More about showing source

 

<?php
include "header.php";
include 
"navbar.php";
$sid "612b9f35e6dae2dcffcdaf51c8c1c4e7";
if(isset(
$_COOKIE['PHPSESSID'])){ 
    
$sid $_COOKIE['PHPSESSID'];
}
?>

<h3>About Cookies</h3>

<p>Cookies are stored in <code class=b>name=value</code> format, much
like CGI parameters.  They may contain an expiration date, informing
the browser as to when to perform house-cleaning.  They also contain
information as to their server origin, so that they may only be returned to
the proper location.  They may also contain information limiting return
to a specific page on the server.</p>

<h4>Using Cookies in PHP</h4>

<ul>

<li><p>In PHP, you have several options for Cookie management:</p>
  <ul>

  <li><p>Writing/Reading your own cookies from the raw HTTP protocol (see <a href="http://php.net/manual/en/function.header.php">header()</a>).</p>

  <li><p>Using <a
  href="http://php.net/manual/en/function.setcookie.php">setcookie()</a>
  and <a
  href="http://php.net/manual/en/reserved.variables.php#reserved.variables.cookies">$_COOKIE[]</a>
  primitive function/global variable.  See also PHP <a
  href="http://php.net/manual/en/features.cookies.php">Cookie
  section</a>.</p>

  <li><p><a href="http://php.net/manual/en/ref.session.php">Using
  session management</a> via the <a
  href="http://php.net/manual/en/function.session-start.php">session_start()</a>
  function and <a
  href="http://php.net/manual/en/reserved.variables.php#reserved.variables.session">$_SESSION[]</a>
  array.  More on this in the next section.</p>

  </ul>

<li><p>To set a cookie named <i class=data>chocolate_chip</i> with a value
<i class=data>crumbled</i>, place the following code in your script
<b><i>before any HTML tags or other text</i></b>:</p>

<?php $tmp = <<<END
<?php
    setcookie("chocolate_chip","crumbled");
?>
<html>
<head>
<!-- the rest of your page goes here -->
END;
print_code($tmp);
?>

<li><p>To see the value of a cookie called <i class=data>chocolate_chip</i>
that may have been set by a browser, use the following (anywhere in
your code):</p>

<?php $tmp = <<<END
<?php
        echo "<p>The value of chocolate_chip cookie is: " . htmlspecialchars(\$_COOKIE['chocolate_chip']) . "</p>\\n";
?>
END;
print_code($tmp);
?>

<li><p>But you may want to first test to see if the cookie has been set at all.  The following is a safer version of the last code segment:</p>

<?php $tmp = <<<END
<?php
    if(isset(\$_COOKIE['chocolate_chip'])){
        echo "<p>The value of chocolate_chip cookie is: " . htmlspecialchars(\$_COOKIE['chocolate_chip']) . "</p>\\n";
    }else{
        echo "<p>Sorry, no chocolate_chip cookies before dinner.</p>\\n";
    }
?>
END;
print_code($tmp);
?>

</ul>

<h4>You The Baker</h4>

<ul>

<li><p>Here's a cookie management tool for you to try.  Create a new file with the 
following code:</p>

<?php $tmp = <<<END
<?php
\$pageself = basename(\$_SERVER['PHP_SELF']);
if(isset(\$_REQUEST['add']) and isset(\$_REQUEST['name']) and isset(\$_REQUEST['value'])){
    setcookie(htmlspecialchars(\$_REQUEST['name']),htmlspecialchars(\$_REQUEST['value']));
}
if(isset(\$_REQUEST['remove']) and isset(\$_REQUEST['name'])){
    setcookie(htmlspecialchars(\$_REQUEST['name']),"",0);
}
?>
<html>
<body>

<h1>Cookie Manager</h1>
<p>Note, new cookies sent to the browser will be seen by this script after the next page load.</p>

<?php
if(isset(\$_REQUEST['add']) and isset(\$_REQUEST['name']) and isset(\$_REQUEST['value'])){
    echo "added \\"" . htmlspecialchars(\$_REQUEST['name']) . "\\" = \\"" . htmlspecialchars(\$_REQUEST['value']) . "\\" for next time\\n";
}
if(isset(\$_REQUEST['remove']) and isset(\$_REQUEST['name'])){
    echo "removed \\"" . htmlspecialchars(\$_REQUEST['name']) . "\\" for next time\\n";
}
?>

<p>The following cookies were sent from your browser this time:</p>
<ul>
<?php
if(count(\$_COOKIE)){
    foreach(\$_COOKIE as \$cookie => \$value){
        echo "<li>Name: <b>" . htmlspecialchars(\$cookie) . "</b> - Value: <b>" . htmlspecialchars(\$value) . "</b>\\n";
    }
}else{
    echo "None";
}
?>
</ul>

<p>Ask the server to set a new cookie:</p>
<form method=GET action="<?=\$pageself?>">
<p><b>Add cookie</b> name: <input type=text name=name>, 
value: <input type=text name=value>, <input type=submit name=add value=Add><br>
</form>
<form method=GET action="<?=\$pageself?>">
<b>Remove cookie</b> name: <input type=text name=name>, 
<input type=submit name=remove value=Remove></p>
</form>
<form method=POST action="<?=\$pageself?>">
<p><input type=submit value=Reload></p>
</form>

</body>
</html>
END;
//provide_link($tmp);
print_code($tmp);
?>

<li><p>Name the file <i class=link>cookie_manager.php</i>.</p>

</ul>

<h4>Cookies That Go Stale</h4>

<ul>

<li><p>As mentioned earlier, cookies may be set with an explicit
expiration date to inform the browser when they are to be discarded.
They will be retained until the expiration, even when the browser is
closed and the computer is shut off.</p>

    <ul>

    <li>For example, <code class=b>setcookie("oatmeal_raisin","with
    nuts",time()+3600);</code> will set the cookie <i
    class=data>oatmeal_raisin</i> with an expiration of one hour.  It
    may appear in the HTTP headers as:</p>

<pre class=code>
Set-Cookie: oatmeal_raisin=with+nuts; expires=Sun, 13 Jun 2004 20:13:39 GMT
</pre>

    </ul>

<li><p>Browsers may be instructed to remove cookies by being told to
expire them immediately.  You can do that easily with <i
class=data>setcookie()</i> by setting the third argument to 0.  For
example: </p>

<pre class=code>
setcookie("old_cookie","this field does not matter",0);
</pre>

<p>This will set the expiration date to be the current time.  For example, the
HTTP header for the above may appear to be:</p>

<pre class=code>
Set-Cookie: old_cookie=this+field+does+not+matter; expires=Sun, 13 Jun 2004 19:13:39 GMT
</pre>

<li><p>Cookies may be set to expire at the end of the session, which are
called <i>session cookies</i>.  By default, cookies created by <a
href="http://php.net/manual/en/function.setcookie.php">setcookie()</a>
are session cookies when the third argument is not set.  The session
ends when the browser exits.</p>

    <ul>

    <li><p>When this is the case, no <code class=b>expires=...</code>
    attribute is sent with the Cookie in the HTTP <code
    class=b>Set-Cookie</code> header.  For example:</p>

<pre class=code>
Set-Cookie: PHPSESSID=612b9f35e6dae2dcffcdaf51c8c1c4e7; path=/
</pre>

    </ul>

<li><p>Read the online manual for <a
href="http://php.net/manual/en/function.setcookie.php">setcookie()</a>
to learn more about cookies in PHP.</p>

</ul>

<?php
include "navbar.php";
include 
"footer.php";
?>

 

Penn State

Web Conference 2005

Writing PHP for ITS/ASET Web services

Using Cookies

<- Back - Passing data back via Parameters|Up |Using Sessions - Next ->

About Cookies

Cookies are stored in name=value format, much like CGI parameters. They may contain an expiration date, informing the browser as to when to perform house-cleaning. They also contain information as to their server origin, so that they may only be returned to the proper location. They may also contain information limiting return to a specific page on the server.

Using Cookies in PHP

You The Baker

Cookies That Go Stale

<- Back - Passing data back via Parameters|Up |Using Sessions - Next ->

If you have any questions, feel free to ask me.

Content by: Jeff D'Angelo <jcd@psu.edu> © 2005

Show normal

Last update on: Mon Jun 29, 2009, 12:37:25 AM