cvs: phpdoc-el /reference/http .cvsignore functions.xml reference.xml /reference/http/functions header.xml headers-sent.xml setcookie.xml

[email protected] ("Dimitris Glezos") Wed, 30 Jul 2003 14:19:41 -0000
Newsgroups php.doc.el
Message-ID <cvssubbie1059574781@cvsserver>
subbie		Wed Jul 30 10:19:41 2003 EDT

  Added files:                 
    /phpdoc-el/reference/http	.cvsignore functions.xml reference.xml 
    /phpdoc-el/reference/http/functions	header.xml headers-sent.xml 
                                       	setcookie.xml 
  Log:
  added http
subbie-20030730101941.txt (text/plain, 37.3 KB)
Index: phpdoc-el/reference/http/.cvsignore
+++ phpdoc-el/reference/http/.cvsignore
functions.xml

Index: phpdoc-el/reference/http/functions.xml
+++ phpdoc-el/reference/http/functions.xml
&reference.http.functions.header;
&reference.http.functions.headers-sent;
&reference.http.functions.setcookie;

Index: phpdoc-el/reference/http/reference.xml
+++ phpdoc-el/reference/http/reference.xml
<?xml version="1.0" encoding="iso-8859-7"?>
<!-- $Revision: 1.1 $ -->
<!-- EN-Revision: 1.6 Maintainer: daphnie Status: ready -->
 <reference id="ref.http">
  <title>HTTP ÓõíáñôÞóåéò</title>
  <titleabbrev>HTTP</titleabbrev>

  <partintro>
   <section id="http.intro">
   &reftitle.intro;
    <para>
     ÁõôÝò ïé óõíáñôÞóåéò óáò åðéôñÝðïõí íá ÷åéñéóôåßôå ôï áðïôÝëåóìá (output) ðïõ óôÝëíåôå ðßóù óôïí
     áðïìáêñõóìÝíï browser êáôåõèåßáí óôï åðßðåäï ôïõ ðñùôïêüëïõ HTTP.
    </para>
   </section>
   
   <section id="http.requirements">
    &reftitle.required;
    &no.requirement;
   </section>
   
   <section id="http.installation">
    &reftitle.install;
    &no.install;
   </section>

   <section id="http.configuration">
    &reftitle.runtime;
    &no.config;
   </section>

   <section id="http.resources">
    &reftitle.resources;
    &no.resource;
   </section>

   <section id="http.constants">
    &reftitle.constants;
    &no.constants;
   </section>
  </partintro>

&reference.http.functions;

 </reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->


Index: phpdoc-el/reference/http/functions/header.xml
+++ phpdoc-el/reference/http/functions/header.xml
<?xml version="1.0" encoding="iso-8859-7"?>
<!-- $Revision: 1.1 $ -->
<!-- EN-Revision: 1.18 Maintainer: daphnie Status: ready -->
<!-- splitted from ./en/functions/http.xml, last change in rev 1.2 -->
  <refentry id="function.header">
   <refnamediv>
    <refname>header</refname>
    <refpurpose>ÓôÝëíåé Ýíáí áêáôÝñãáóôï HTTP header</refpurpose>
   </refnamediv>
   <refsect1>
    <title>ÐåñéãñáöÞ</title>
     <methodsynopsis>
      <type>int</type><methodname>header</methodname>
      <methodparam><type>string</type><parameter>string</parameter></methodparam>
      <methodparam choice="opt"><type>bool</type><parameter>replace</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>http_response_code</parameter></methodparam>
     </methodsynopsis>
    <para>
     Ç <function>header</function> ÷ñçóéìïðïéåßôáé ãéá íá óôáëèïýí áêáôÝñãáóôïé
     <acronym>HTTP</acronym> headers.  Äåßôå ôï <ulink
     url="&spec.http1.1;">HTTP/1.1 specification</ulink> ãéá ðåñéóóüôåñåò
     ðëçñïöïñßåò ðÜíù óôïõò <acronym>HTTP</acronym> headers.
    </para>
    <para>
     Ç ðñïáéñåôéêÞ ðáñÜìåôñïò <parameter>replace</parameter> äåß÷íåé
     áí ï header ðñÝðåé íá áíôéêáôáóôÞóåé Ýíáí ðñïçãïýìåíï ðáñüìïéï header, Þ
     íá ðñïóèÝóåé Ýíáí äåýôåñï header ôïõ ßäéïõ ôýðïõ.  Ç ðñïêáèïñéóìÝíç åíÝñãåéá åßíáé ç áíôéêáôÜóôáóç ôïõ,
     áëëÜ áí ðåñÜóåôå  ùò äåýôåñç ðáñÜìåôñï ôï &false; ìðïñåßôå íá óôåßëåôå
     ðïëëáðëïýò headers ôïõ ßäéïõ ôýðïõ.  Ãéá ðáñÜäåéãìá:
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM', FALSE);
?>
]]>
      </programlisting>
     </informalexample>
    </para>
    <para>
     Ç äåýôåñç ðñïáïñåôéêÞ ðáñÜìåôñïò åßíáé ç <parameter>http_response_code</parameter> ç ïðïßá åíåñãïðïéåß ôçí
     HTTP response code óôçí óõãêåêñéìÝíç ôéìÞ. (ÁõôÞ ç ðáñÜìåôñïò åßíáé äéáèÝóéìç áðü
     ôçí PHP 4.3.0 êáé ìåôÜ.)
    </para>
    <para>
     ÕðÜñ÷ïõí äýï éäéáßôåñåò êëÞóåéò ãéá headers.  Ç ðñþôç åßíáé Ýíáò header 
     ðïõ áñ÷ßæåé ìå ôï string "<literal>HTTP/</literal>" 
	 ôï ïðïßï èá ÷ñçóéìïðïéçèåß ãéá íá âñåèåß ôï HTTP status
     code ðïõ ðñÝðåé íá óôáëåß. Ãéá ðáñÜäåéãìá, áí Ý÷åôå ðáñáìåôñïðïéÞóåé ôïí Apache íá
     ÷ñçóéìïðïéåß Ýíá PHP script ãéá íá ÷åéñßæåôáé requests ãéá ÷áìÝíá áñ÷åßá (÷ñçóéìïðïéþíôáò
     ôçí <literal>ErrorDocument</literal> íôéñåêôßâá), ßóùò èÝëåôå íá
     âåâáéùèåßôå üôé ôï script óáò ðáñÜãåé ôïí êáôÜëëçëï status code.
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
header("HTTP/1.0 404 Not Found");
?>
]]>
     </programlisting>
    </informalexample>
   </para>
    <note>
     <para>
      Ç ãñáììÞ ìå ôïí HTTP status header èá åßíáé ðÜíôá ç ðñþôç ðïõ èá óôÝëíåôáé
      óôïí client, Üó÷åôá áðü áí ç ðñáãìáôéêÞ êëÞóç ôïõ <function>header</function> 
      åßíáé ç ðñþôç Þ ü÷é. Ôï status ìðïñåß íá áëëÜîåé
      êáëþíôáò ôçí <function>header</function> ìå ìéá íÝá ãñáììÞ status
      ïðïéáäÞðïôå óôéãìÞ åêôüò êáé áí ïé HTTP headers Ý÷ïõí Þäç óôáëåß.
     </para>
    </note>
    <note>
     <para>
      Óôçí PHP 3, áõôü äïõëåýåé ìüíï üôáí ç PHP ìåôáãëùôßæåôáé ùò module ôïõ 
      Apache. Ìðïñåßôå íá ðåôý÷åôå ôï ßäéï áðïôÝëåóìá ÷ñçóéìïðïéþíôáò
      ôï <literal>Status</literal> header.
      <informalexample>
       <programlisting role="php">
<![CDATA[
<?php
header("Status: 404 Not Found");
?>
]]>
       </programlisting>
      </informalexample>
     </para>
    </note>
    <para>
     Ç äåýôåñç åéäéêÞ ðåñßðôùóç åßíáé ç "Location:" header.  Äåí óôÝëíåé
     ìüíï ôïí header ðßóù óôïí browser, áëëÜ åðßóçò åðéóôñÝöåé Ýíá
     <literal>REDIRECT</literal> (302) status code óôïí browser åêôüò êáé áí
     êÜðïéïò <literal>3xx</literal> status code Ý÷åé Þäç ôåèåß.
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>
]]>
      </programlisting>
     </informalexample>
    </para>
    <note>
     <para>
      Ç HTTP/1.1 áðáéôåß Ýíá áðüëõôï <acronym>URI</acronym> ùò ðáñÜìåôñï óôçí
      <ulink url="&spec.http1.1;-sec14.html#sec14.30">Location:</ulink>
      ðïõ óõìðåñéëáìâÜíåé ôï ó÷Þìá, ôï hostname êáé ôï áðüëõôï path, ìåñéêïß
      üìùò clients äÝ÷ïíôáé êáé ó÷åôéêÜ URIs. ÓõíÞèùò ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôéò
      <literal>$_SERVER['HTTP_HOST']</literal>, <literal>$_SERVER['PHP_SELF']</literal>
      êáé <function>dirname</function> ìüíïé óáò, ãéá íá êÜíåôå Ýíá áðüëõôï URI áðü Ýíá
      ó÷åôéêü:
      <informalexample>
       <programlisting>
<![CDATA[
<?php
header("Location: http://".$_SERVER['HTTP_HOST']
                      .dirname($_SERVER['PHP_SELF'])
                      ."/".$relative_url);
?>
]]>
       </programlisting>
      </informalexample>
     </para>
    </note>
    <para>
     Ôá PHP scripts óõ÷íÜ ðáñÜãïõí äõíáìéêü ðåñéå÷üìåíï ðïõ äåí ðñÝðåé íá ãßíåé cached
     áðü ôïí browser ôïõ client Þ áðü ïðïéïíäÞðïôå proxy ðïõ êÜíåé cache áíÜìåóá óôïí server êáé óôïí
     browser ôïõ client. Áñêåôïß proxies êáé clients ìðïñïýí íá ñõèìéóôïýí Ýôóé þóôå
     íá áðåíåñãïðïéÞóïõí ôï caching ìå:
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
 
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");
?>
]]>
      </programlisting>
     </informalexample>
    </para>
    <note>
     <para>
      ºóùò áíáêáëýøåôå üôé ïé óåëßäåò óáò äåí ãßíïíôáé cache áêüìç êáé áí äåí
      óôÝëíïíôáé üëïé ïé ðáñáðÜíù headers. ÕðÜñ÷åé Ýíáò áñéèìüò åðéëïãþí
      ðïõ ïé ÷ñÞóôåò ìðïñïýí íá èÝóïõí óôïí browser êáé íá áëëÜîïõí
      ôç óõìðåñéöïñÜ ôïõ ó÷åôéêÜ ìå ôï caching. ÓôÝëíïíôáò ôïõò ðáñáðÜíù headers, èá ðñÝðåé
      íá ðáñáêáìöèïýí ïðïéåóäÞðïôå ñõèìßóåéò ðïõ ßóùò ðñïêáëÝóïõí íá ãßíåé ôï áðïôÝëåóìá
      ôïõ script óáò, cached.
     </para>
     <para>
      ÅðéðëÝïí, ïé ñõèìßóåéò <function>session_cache_limiter</function> êáé
      <literal>session.cache_limiter</literal> 
      ìðïñïýí íá ÷ñçóéìïðïéçèïýí ãéá íá ðáñá÷èïýí áõôüìáôá ïé óùóôïß
      caching-related headers üôáí ÷ñçóéìïðïéïýíôáé sessions.
     </para>
    </note>
    <para>
     Èõìçèåßôå üôï ç <function>header</function> ðñÝðåé íá
     êáëåßôáé ðñéí óôáëåß ïðïéïäÞðïôå ðñáãìáôéêü áðïôÝëåóìá, åßôå ìå êáíïíéêÜ HTML
     tags, êåíÝò ãñáììÝò óå Ýíá áñ÷åßï, Þ áðü ôçí PHP. Åßíáé ðïëý
     óõíçèéóìÝíï ëÜèïò íá äéáâÜæïõìå êþäéêá ìå óõíáñôÞóåéò <function>include</function>, Þ
     <function>require</function>, Þ Üëëåò óõíáñôÞóåéò ðïõ ðñïóðåëáýíïõí
     áñ÷åßá, êáé Ý÷ïõí êåíÜ Þ Üäåéåò ãñáììÝò ðïõ åßíáé ôï áðïôÝëåóìá ðñéí ôçí êëÞóç ôçò
     <function>header</function> . Ôï ßäéï ðñüâëçìá õðÜñ÷åé
     êáé üôáí ÷ñçóéìïðïéåßôáé Ýíá ìüíï áñ÷åßï PHP/HTML.
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header('Location: http://www.example.com/');
?>
]]>
      </programlisting>
     </informalexample>
    </para>    
    <note>
     <para>
      Óôçí PHP 4, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå buffering óôï áðïôÝëåóìá ãéá íá áíôéìåôùðßóåôå áõôü ôï ðñüâëçìá,
      êÜíïíôáò buffer óôïí server ôï overhead ïëüêëçñïõ ôïõ áðïôåëÝóìáôïò (output) óôïí browser 
      ìÝ÷ñé áõôü íá óôáëåß. Ìðïñåßôå íá ôï êÜíåôå áõôü êáëþíôáò ôçí
      <function>ob_start</function> êáé ôçí <function>ob_end_flush</function>
      óôï script óáò, Þ èÝôïíôáò ôçí <literal>output_buffering</literal>
      configuration íôéñåêôßâá óôï &php.ini; Þ
      óôá áñ÷åßá configuration ôïõ server.
     </para>
    </note>
    <para>
     Áí èÝëåôå íá ðñïôñÝðåôå ôïí ÷ñÞóôç íá óþæåé ôá äåäïìÝíá ðïõ
     óôÝëíåôå, üðùò Ýíá PDF áñ÷åßï ðïõ Ýåé ðáñá÷èåß, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôïí <ulink
     url="&url.rfc;2183">Content-Disposition</ulink> header ãéá íá
     ôïõ äþóåôå Ýíá ðñïôåéíüìåíï üíïìá áñ÷åßïõ êáé íá áíáãêÜóåôå ôïí browser íá åìöáíßóåé
     ôï ðáñÜèõñï ãéá save.
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
// We'll be outputting a PDF
header("Content-type: application/pdf");

// It will be called downloaded.pdf
header("Content-Disposition: attachment; filename=downloaded.pdf");

// The PDF source is in original.pdf
readfile('original.pdf');
?>
]]>
      </programlisting>
     </informalexample>
    </para>
    <note>
     <para>
      ÕðÜñ÷åé Ýíá bug óôïí Microsoft Internet Explorer 4.01 ðïõ åìðïäßæåé
      ôç ëåéôïõñãßá ôïõ ðáñáðÜíù. Êáé äåí ãßíåôáé êÜôé ãé'áõôü. ÕðÜñ÷åé åðßóçò êáé Ýíá bug
      óôïí Microsoft Internet Explorer 5.5 ðïõ áëëçëåðéäñÜ ìå áõôï,
      êáé ìðïñåß íá ëõèåß áíáâáèìßæïíôáò ôïí ìå ôï Service Pack 2 êáé ìåôÜ.
     </para>
    </note>
    <note>
     <simpara>
      Áí ôï <link linkend="ini.safe-mode">safe mode</link> åßíáé åíåñãïðïéçìÝíï ôüôå ôï
      uid ôïõ script ðñïóôßèåôáé óôï <literal>realm</literal> ìÝñïò
      ôïõ <literal>WWW-Authenticate</literal> header áí Ý÷åôå åíåñãïðïéÞóåé
      áõôüí ôïí header (÷ñçóéìïðïéåßôáé ãéá HTTP Authentication).
     </simpara>
    </note>
    <para>
     Äåßôå åðßóçò ôéò <function>headers_sent</function>,
     <function>setcookie</function>, êáé ôï ôìÞìá ó÷åôéêÜ ìå ôçí
     <link linkend="features.http-auth">HTTP authentication</link>.
    </para>
   </refsect1>
  </refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

Index: phpdoc-el/reference/http/functions/headers-sent.xml
+++ phpdoc-el/reference/http/functions/headers-sent.xml
<?xml version="1.0" encoding="iso-8859-7"?>
<!-- $Revision: 1.1 $ -->
<!-- EN-Revision: 1.13 Maintainer: daphnie Status: ready -->
<!-- splitted from ./en/functions/http.xml, last change in rev 1.7 -->
  <refentry id="function.headers-sent">
   <refnamediv>
    <refname>headers_sent</refname>
    <refpurpose>ÅëÝã÷åé áí Þ ðïý ïé headers Ý÷ïõí óôáëåß</refpurpose>
   </refnamediv>
   <refsect1>
    <title>ÐåñéãñáöÞ</title>
     <methodsynopsis>
      <type>bool</type><methodname>headers_sent</methodname>      
      <methodparam choice="opt"><type>string</type><parameter>&amp;file</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>&amp;line</parameter></methodparam>
     </methodsynopsis>
    <simpara>
     Ç <function>headers_sent</function> èá åðéóôñÝøåé &false; áí äåí Ý÷ïõí óôáëåß HTTP headers
     êáé &true; óôçí áíôßèåôç ðåñßðôùóç. Áí ïé ðñïáéñåôéêÝò ðáñÜìåôñïé
     <parameter>file</parameter> êáé <parameter>line</parameter> 
     Ý÷ïõí ôåèåß, ç <function>headers_sent</function> èá âÜëåé ôï üíïìá ôïõ áñ÷åßïõ
     ôçò php êáé ôïí áñéèìü ôçò ãñáììÞò áð'üðïõ ôï áðïôÝëåóìá Üñ÷éóå, óôéò <parameter>file</parameter>
     êáé <parameter>line</parameter> ìåôáâëçôÝò.
    </simpara>
    <simpara>
     Äåí ìðïñåßôå íá ðñïóèÝóåôå Üëëåò ãñáììÝò óôï header ÷ñçóéìïðïéþíôáò ôç óõíÜñôçóç <function>header</function> 
     üôáí ôï ôìÞìá ôïõ header Ý÷åé Þäç óôáëåß. ×ñçóéìïðïéþíôáò áõôÞ ôç óõíÜñôçóç
     ìðïñåßôå ôïõëÜ÷éóôï íá åìðïäßóåôå íá ðÜñåôå ìçíýìáôá ëÜèïõò ó÷åôéêÜ ìå ôçí HTTP header.
     Ìéá Üëëç åðéëïãÞ åßíáé íá ÷ñçóéìïðïéÞóåôå ôçí <link linkend="ref.outcontrol">Output Buffering</link>.
    </simpara>
    <note>
     <simpara>
      Ïé ðñïáéñåôéêÝò ðáñÜìåôñïé <parameter>file</parameter> êáé <parameter>line</parameter> 
      ðñïóôÝèçêáí óôçí PHP 4.3.0.
     </simpara>
    </note>
    <para>
     <example>
      <title>Ðáñáäåßãìáôá ðïõ ÷ñçóéìïðïéïýí ôçí <function>headers_sent</function></title>
      <programlisting role="php">
<![CDATA[
<?php

// If no headers are sent, send one
if (!headers_sent()) {
    header ('Location: http://www.example.com/');
    exit;
}
  
// An example using the optional file and line parameters, as of PHP 4.3.0
// Note that $filename and $linenum are passed in for later use.
// Do not assign them values beforehand.
if (!headers_sent($filename, $linenum)) {
    header ('Location: http://www.example.com/');
    exit;

// You would most likely trigger an error here.
} else {

    print "Headers already sent in $filename on line $linenum\n" .
          "Cannot redirect, for now please click this <a " .
          "href=\"http://www.example.com\">link</a> instead\n";
    exit;
}

?>
]]>
      </programlisting>
     </example>
    </para>
    <para>
     Äåßôå åðßóçò ôéò <function>ob_start</function>, <function>trigger_error</function>, 
     êáé <function>header</function> ãéá ìéá ðéï ëåðôïìåñÞ óõæÞôçóç óôá
     èÝìáôá ðïõ ðñáãìáôåýïíôáé.
    </para>
   </refsect1>
  </refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

Index: phpdoc-el/reference/http/functions/setcookie.xml
+++ phpdoc-el/reference/http/functions/setcookie.xml
<?xml version="1.0" encoding="iso-8859-7"?>
<!-- $Revision: 1.1 $ -->
<!-- EN-Revision: 1.24 Maintainer: daphnie Status: ready -->
<!-- splitted from ./en/functions/http.xml, last change in rev 1.2 -->
  <refentry id="function.setcookie">
   <refnamediv>
    <refname>setcookie</refname>
    <refpurpose>ÓôÝëíïíôáò Ýíá cookie</refpurpose>
   </refnamediv>
   <refsect1>
    <title>ÐåñéãñáöÞ</title>
     <methodsynopsis>
      <type>bool</type><methodname>setcookie</methodname>
      <methodparam><type>string</type><parameter>name</parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>value</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>expire</parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>path</parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>domain</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>secure</parameter></methodparam>
     </methodsynopsis>
    <para>
     Ç <function>setcookie</function> ïñßæåé íá óôáëåß Ýíá cookie ìáæß ìå
     ôïõò õðüëïéðïõò HTTP headers. ¼ðùò êáé ïé Üëëïé headers, ôá cookies
     ðñÝðåé íá óôÝëíïíôáé <emphasis>ðñéí</emphasis> áðü ïðïéïäÞðïôå áðïôÝëåóìá (output) ôïõ
     script óáò (áõôü åßíáé Ýíáò ðåñéïñéóìüò ôïõ ðñùôïêüëïõ). Áõôü ðñïûðïèÝôåé üôé
     åóåßò ôïðïèåôåßôå ôéò êëÞóåéò áõôÞò ôçò óõíÜñôçóçò ðñéí áðü êÜèå output, óõìðåñéëáìâáíïìÝíùí ôùí
     <literal>&lt;html&gt;</literal> êáé <literal>&lt;head&gt;</literal> tags
     üðùò åðßóçò êáé ïðéïíäÞðïôå êåíþí. Áí ôï output õðÜñ÷åé ðñéí áðü ôçí êëÞóç áõôÞò
     ôçò óõíÜñôçóçò, ç <function>setcookie</function> èá áðïôý÷åé êáé èá åðéóôñÝøåé &false;.
     Áí ç <function>setcookie</function> åêôåëåóôåß åðéôõ÷þò, èá åðéóôñÝøåé
     &true;. Áõôü üìùò äåí äåß÷íåé áí ï ÷ñÞóôçò Ý÷åé äå÷èåß ôï cookie.
    </para>
    <note>
     <para>
      Óôçí PHP 4, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå buffering óôï output ãéá íá óôåßëåôå ôï output ðñéí áðü ôçí êëÞóç
      áõôÞò ôçò óõíÜñôçóçò, êÜíïíôáò buffer óôïí server ôï overhead ïëüêëçñïõ ôïõ output óôïí browser 
      ìÝ÷ñé áõôü íá óôáëåß. Ìðïñåßôå íá ôï êÜíåôå áõôü êáëþíôáò ôçí
      <function>ob_start</function> êáé ôçí <function>ob_end_flush</function>
      óôï script óáò, Þ èÝôïíôáò ôçí <literal>output_buffering</literal>
      configuration íôéñåêôßâá óôï &php.ini; Þ óôá áñ÷åßá configuration ôïõ server.
     </para>
    </note>    
    <para>
     ¼ëåò ïé ðáñÜìåôñïé åêôüò áðü ôçí ðáñÜìåôñï <parameter>name</parameter>
     åßíáé ðñïáéñåôéêÝò. Ìðïñåßôå åðßóçò íá áíôéêáôáóôÞóåôå ìéá ðáñÜìåôñï ìå Ýíá êåíü string
     (<emphasis>&quot;&quot;</emphasis>) ðñïêåéìÝíïõ íá ðáñáêÜìøåôå áõôÞ ôçí
     ðáñÜìåôñï. ÅðåéäÞ ïé ðáñÜìåôñïé <parameter>expire</parameter> êáé
     <parameter>secure</parameter> åßíáé áêÝñáéïé, äåí ìðïñïýí íá ðáñáêáìöèïýí
     ìå Ýíá êåíü string, áëëÜ ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôï ìçäÝí (<emphasis>0</emphasis>).
     Ï ðáñáêÜôù ðßíáêáò åîçãåß êÜèå ðáñÜìåôñï ôçò óõíÜñôçóçò
     <function>setcookie</function>, êáé äéáâÜóôå ôï ôìÞìá
     <ulink url="&spec.cookies;">Ïñéóìü cookie ãéá Netscape </ulink> ãéá
     ïäçãßåò ó÷åôéêÜ ìå ôï ðþò êÜèå ðáñÜìåôñïò <function>setcookie</function> äïõëåýåé
     êáé ôï <ulink url="&url.rfc;2965">RFC 2965</ulink> ãéá åðéðñüóèåôåò
     ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðþò ç HTTP cookies äïõëåýåé. 
    </para>
    <para>
     <table>
      <title><function>setcookie</function> åîÞãçóç ðáñáìÝôñùí</title>
      <tgroup cols="3">
       <thead>
        <row>
         <entry>ÐáñÜìåôñïò</entry>
         <entry>ÐåñéãñáöÞ</entry>
         <entry>Ðáñáäåßãìáôá</entry>
        </row>
       </thead>
       <tbody>
        <row>
         <entry><parameter>name</parameter></entry>
         <entry>
          Ôï üíïìá ôïõ cookie.
         </entry>
         <entry>
          ç 'cookiename' êáëåßôáé ùò <varname>$_COOKIE['cookiename']</varname>
         </entry>
        </row>
        <row>
         <entry><parameter>value</parameter></entry>
         <entry>
          Ç ôéìÞ ôïõ cookie.  Ç ôéìÞ áõôÞ áðïèçêåýåôáé óôïí õðïëïãéóôþí ôùí
		  clients, ãé'áõôü ìçí áðïèçêåýåôå åõáßóèçôåò ðëçñïöïñßåò.
         </entry>
         <entry>
          ÕðïèÝôïíôáò üôé ç <parameter>name</parameter> åßíáé ç 'cookiename', áõôÞ
          ç ôéìÞ ðáßñíåôáé ìå ôçí <varname>$_COOKIE['cookiename']</varname>
         </entry>
        </row>
        <row>
         <entry><parameter>expire</parameter></entry>
         <entry>
          Ç þñá ëÞîçò ôïõ cookie.  Áõôü åßíáé Ýíá unix timestamp Ýôóé åßíáé
          óå áñéèìü äåõôåñïëÝðôùí áðü ôçí åðï÷Þ (epoch).  Ìå Üëëá ëüãéá, åßíáé ðéèáíü
          üôé èá èÝóåôå áõôü ìå ôç óõíÜñôçóç <function>time</function>
          óõí ôïí áñéèìü ôùí äåõôåñïëÝðôùí ðñéí áðü ôç óôéãìÞ ðïõ èÝëåôå íá ëÞîåé.  ¹
          ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí <function>mktime</function>.
         </entry>
         <entry>
          Ç <literal>time()+60*60*24*30</literal> èá ïñßóåé ôï cookie íá
          ëÞîåé óå 30 ìÝñåò.  Áí äåí ôåèåß, ôï cookie èá ëÞîåé óôï ôÝëïò ôïõ
          session (üôáí êëåßóåé ï browser).
         </entry>
        </row>
        <row>
         <entry><parameter>path</parameter></entry>
         <entry>
          Ôï path óôïí server óôï ïðïßï èá åßíáé äéáèÝóéìï ôï cookie.
         </entry>
         <entry>
          Áí ôåèåß óôï <literal>'/'</literal>, ôï cookie èá åßíáé äéáèÝóéìï ìÝóá
          óå ïëüêëçñï ôï <parameter>domain</parameter>.  Áí ôåèåß óôï
          <literal>'/foo/'</literal>, ôï cookie èá åßíáé äéáèÝóéìï ìüíï
          ìÝóá óôïí êáôÜëïãï <literal>/foo/</literal> êáé óå üëïõò ôïõò
          õðï-êáôáëüãïõò üðùò ïé <literal>/foo/bar/</literal> ôïõ
          <parameter>domain</parameter>.  Ç ðñïêáèïñéóìÝíç ôéìÞ åßíáé ôï
          ôñÝ÷ïí directory óôï ïðïßï èÝôåôáé ôï cookie.
         </entry>
        </row>
        <row>
         <entry><parameter>domain</parameter></entry>
         <entry>
          Ôï domain óôï ïðïßï ôï cookie åßíáé äéáèÝóéìï.
         </entry>
         <entry>
          Ãéá íá åßíáé ôï cookie äéáèÝóéìï óå üëá ôá subdomains ôïõ example.com
          èá ðñÝðåé íá ôï èÝóåôå óôï <literal>'.example.com'</literal>.  Ç
          <literal>.</literal> äåí áðáéôåßôáé áëëÜ ôï êÜíåé óõìâáôü ìå
          ðåñéóóüôåñïõò browsers.  ÈÝôïíôáò ôï óôï <literal>www.example.com</literal>
          èá êÜíåé ôï cookie äéáèÝóéìï ìüíï óôï <literal>www</literal>
          subdomain.  Áíáöåñèåßôå óôï tail matching óôï
          <ulink url="&spec.cookies;">spec</ulink> ãéá ëåðôïìÝñåéåò.
         </entry>
        </row>
        <row>
         <entry><parameter>secure</parameter></entry>
         <entry>
          Äåß÷íåé üôé ôï cookie ìðïñåß ìüíï íá ìåôáäùèåß ìå
          secure HTTPS óýíäåóç.  ¼ôáí ôßèåôáé óôï <literal>1</literal>, ôï
          cookie èá äçìéïõñãçèåß ìüíï áí õðÜñ÷åé ìéá áóöáëÞò óýíäåóç.  Ôï ðñïêáèïñéóìÝíï 
          åßíáé ôï <literal>0</literal>.
         </entry>
         <entry>
          <literal>0</literal> Þ <literal>1</literal>
         </entry>
        </row>
       </tbody>
      </tgroup>
     </table>
    </para>
    <para>
     Áöïý Ý÷ïõí óôáëåß ôá cookies, ìðïñïýí íá ðñïóðåëáóôïýí êáôÜ ôç öüñôùóç ôçò åðüìåíçò óåëßäáò
     ìå ôïí ðßíáêá (array) <link linkend="reserved.variables.cookies">$_COOKIE</link> Þ 
     <varname>$HTTP_COOKIE_VARS</varname>. Óçìåéþóôå üôé ïé
     <link linkend="language.variables.superglobals">autoglobals</link> 
     üðùò ïé <varname>$_COOKIE</varname> åßíáé äéáèÝóéìåò áðü ôçí PHP
     <ulink url="&url.php.release4.1.0;">4.1.0</ulink>.
     Ç <varname>$HTTP_COOKIE_VARS</varname> õðÜñ÷åé áðü ôçí PHP 3.  Ïé ôéìÝò ôùí cookies
     õðÜñ÷ïõí åðßóçò êáé óôçí <link linkend="reserved.variables.request">
     $_REQUEST</link>.
    </para>
    <note>
     <para>
      Áí ç íôéñåêôßâá ôçò PHP  <link linkend="ini.register-globals">register_globals</link>
      ôåèåß óôï <literal>on</literal> ôüôå ïé ôéìÝò ôùí cookies èá ãßíïõí åðßóçò
      ìåôáâëçôÝò.  Óôá ðáñáäåßãìáôá ìáò ðáñáêÜôù, ç <varname>$TextCookie</varname> èá
      õðÜñîåé.  Óõíéóôïýìå íá ÷ñçóéìïðïéåßôå ôçí <varname>$_COOKIE</varname>.
     </para>
    </note>
    <para>
     Óõ÷íÜ ëÜèç:
     <itemizedlist>
      <listitem>
       <simpara>
        Ôá cookies äå èá åßíáé ïñáôÜ ìÝ÷ñé ôï åðüìåíï öüñôùìá ôçò óåëßäáò ãéá ôçí
        ïðïßá ôï cookie èá ðñÝðåé íá åßíáé ïñáôü.  Ãéá íá åëÝíîåôå áí Ýíá cookie Ý÷åé ïñéóôåß
        ìå åðéôõ÷ßá, åëÝíîôå ôï cookie óôï åðüìåíï öüñôùìá ôçò óåëßäá ðñéí üìùò ôï cookie 
        ëÞîåé.  Ç þñá ëÞîçò ïñßæåôáé äéáìÝóïõ ôçò ðáñáìÝôñïõ <parameter>expire</parameter>. 
        ¸íáò ùñáßïò ôñüðïò ãéá íá êÜíåôå debug óôçí ýðáñîç ôùí cookies åßíáé êáëþíôáò
        áðëÜ ôçí <literal>print_r($_COOKIE);</literal>.
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        Ôá cookies ðñÝðåé íá äéáãñÜöïíôáé ìå ôéò ßäéåò ðáñáìÝôñïõò ìå ôéò ïðïßåò èÝôïíôáé.
        Áí ç ôéìÞ ôçò ðáñáìÝôñïõ åßíáé Ýíá êåíü string (""), êáé üëåò ïé Üëëåò ðáñÜìåôñïé
        ôáéñéÜæïõí óå êÜðïéá ðñïçãïýìåíç êëÞóç ôçò setcookie, ôüôå ôï cookie ìå ôï êáèïñéóìÝíï
        üíïìá èá äéáãñáöåß áðü ôïí áðïìáêñõóìÝíï client.
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        Ôá ïíüìáôá ôùí cookies  ìðïñïýí íá ôåèïýí ùò ïíüìáôá ðéíÜêùí êáé èá åßíáé äéáèÝóéìá óôá
        PHP scripts óáò ùò ðßíáêåò áëëÜ îå÷ùñéóôÜ cookies áðïèçêåýïíôáé óôï óýóôçìá 
        ôùí ÷ñçóôþí.  Èåùñåßóôå ôçí <function>explode</function> Þ ôçí
        <function>serialize</function> ãéá íá èÝóåôå Ýíá cookie ìå ðïëëáðëÜ ïíüìáôá
        êáé ôéìÝò.
       </simpara>
      </listitem>
     </itemizedlist>
    </para>
    <simpara>
     Óôçí PHP 3, ïé ðïëëáðëÝò êëÞóåéò ôçò <function>setcookie</function> óôï ßäéï
     script èá åêôåëåóôïýí ìå áíôßèåôç óåéñÜ. Áí ðñïóðáèÞóåôå íá 
     äéáãñÜøåôå Ýíá cookie ðñéí ðñïóèÝóåôå Üëëï èá ðñÝðåé íá ôïðïèåôÞóåôå
     ôçí åéóáãùãÞ ðñïí ôçí äéáãñáöÞ. Óôçí PHP 4, ïé ðïëëáðëÝò êëÞóåéò óôçí
     <function>setcookie</function> åêôåëïýíôáé ìå ôç óåéñÜ ðïõ êáëïýíôáé.
    </simpara>
    <para>
     Áêïëïõèïýí ìåñéêÜ ðáñáäåßãìáôá ó÷åôéêÜ ìå ôï ðþò íá óôÝëíåôå cookies:
     <example>
      <title>ÐáñÜäåéãìá áðïóôïëÞò ìå ôçí <function>setcookie</function></title>
      <programlisting role="php">
<![CDATA[
<?php
$value = 'something from somewhere';

setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600);  /* expire in 1 hour */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".example.com", 1);
?>
]]>
      </programlisting>
     </example>
    </para>
    <para>
     Óçìåéþóôå üôé ôï ôìÞìá ðïõ ðåñéÝ÷åé ôçí ôéìÞ ôïõ cookie èá ãßíåé áõôüìáôá
     urlencoded üôáí óôåßëåôå ôï cookie, êáé üôáí áõôü ðáñáëçöèåß, áðïêùäéêïðïéåßôáé
     áõôüìáôá êáé áíôßèåôáé óå ìéá ìåôáâëçôÞ ìå ôï ßäéï üíïìá
     ìå ôï üíïìá ôïõ cookie.  Ãéá íá äåßôå ôá ðåñéå÷üìåíá áðü ôï äïêéìáóôéêü
     cookie ìáò óå Ýíá script, áðëÜ ÷ñçóéìïðïéÞóôå Ýíá áðü ôá ðáñáêÜôù ðáñáäåßãìáôá:
    </para>
    <para>
     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
// Print an individual cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];

// Another way to debug/test is to view all cookies
print_r($_COOKIE);
?>
]]>
      </programlisting>
     </informalexample>
    </para>
    <para>
     ¼ôáí äéáãñÜöåôå Ýíá cookie ðñÝðåé íá åëÝã÷åôå üôé ç çìåñïìçíßá ëÞîçò
     áíÞêåé óôï ðáñåëèüí, êáé ôüôå íá åíåñãïðïéåßôáé ôï ìç÷áíéóìü äéáãñáöÞò óôïí browser óáò.
     Áêïëïõèïýí ðáñáäåßãìáôá ó÷åôéêÜ ìå ôïí ðþò íá äéáöñÜøåôå ôá cookies ðïõ óôÜëèçêáí óôïí ðñïçãïýìåíï ðáñÜäåéãìá:
    </para>
    <para>
     <example>
      <title>ÐáñÜäåéãìá äéáãñáöÞò ìå ôçí<function>setcookie</function></title>
      <programlisting role="php">
<![CDATA[
<?php
// set the expiration date to one hour ago
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);
?>
]]>
      </programlisting>
     </example>
    </para>
    <para>
     Ìðïñåßôå åðßóçò íá ïñßóåôå array cookies ÷ñçóéìïðïéþíôáò ìéá óçìåßùóç ðßíáêá (array notation) óôï
     üíïìá ôïõ cookie. Áõôü Ý÷åé ùò áðïôÝëåóìá íá ìðïñïýìå íá ïñßóïõìå üóá cookies
     èÝëïõìå áñêåß íá Ý÷ïõìå óôïé÷åßá óôïí ðßíáêá, áëëÜ üôáí ôï cookie ëáìâÜíåôáé áðü ôï
     script, ïé ôéìÝò ôïðïèåôïýíôáé üëåò óå Ýíáí array ìå ôï üíïìá ôïõ
	 cookie:
    </para>
    <para>
     <example>
      <title>Ç <function>setcookie</function> êáé ïé ðßíáêåò</title>
      <programlisting role="php">
<![CDATA[
<?php
// set the cookies
setcookie ("cookie[three]", "cookiethree");
setcookie ("cookie[two]", "cookietwo");
setcookie ("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        echo "$name : $value <br />\n";
    }
}

/* which prints

three : cookiethree
two : cookietwo
one : cookieone

*/
?>
]]>
      </programlisting>
     </example>
    </para>
    <note>
     <para>
      Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò óôá cookies, äåßôå ôï cookie
      specification ôçò Netscape's óôï <ulink
      url="&spec.cookies;">&spec.cookies;</ulink> êáé ôï
      <ulink url="&url.rfc;2965">RFC 2965</ulink>.
     </para>
     <para>
      ºóùò ðáñáôçñÞóåôå üôé ç ðáñÜìåôñïò <parameter>expire</parameter> ðáßñíåé Ýíá
      unix timestamp, óå áíôßèåóç ìå ôï date format <literal>Wdy, DD-Mon-YYYY
      HH:MM:SS GMT</literal>, áõôü óõìâáßíåé åðåéäÞ ç PHP åêôåëåß áõôÞ ôç ìåôáôñïðÞ
      åóùôåñéêÜ.
     </para>
    </note>
    <note>
     <simpara>
      Ï Microsoft Internet Explorer 4 ìå ôï Service Pack 1 äåí ÷åéñßæåôáé
      óùóôÜ ôá cookies óôá ïðïßá Ý÷åé ïñéóôåß ç
	  ðáñÜìåôñïò path.
     </simpara>
     <simpara>
      Ïé Netscape Communicator 4.05 êáé Microsoft Internet Explorer 3.x
      ÷åéñßæïíôáé ôá cookies ìå ìç ïñèü ôñüðï üôáí ôï path êáé ç þñá
      äåí Ý÷ïõí ïñéóôåß.
     </simpara>
    </note>
    <para>
     Äåßôå åðßóçò ôçí <function>header</function> êáé ôï ôìÞìá ìå ôá
     <link linkend="features.cookies">cookies</link>.
    </para>
   </refsect1>
  </refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->