cvs: phpdoc-el /reference/http .cvsignore functions.xml reference.xml /reference/http/functions header.xml headers-sent.xml setcookie.xml
| From: | Dimitris Glezos | Date: | Wed, 30 Jul 2003 14:19:41 +0000 |
| Subject: | cvs: phpdoc-el /reference/http .cvsignore functions.xml reference.xml /reference/http/functions header.xml headers-sent.xml setcookie.xml | ||
| Groups: | php.doc.el | ||
| Request: | Send a blank email to doc-el+get-28@lists.php.net to get a copy of this message | ||
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
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>&file</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>&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><html></literal> êáé <literal><head></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>""</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 -->
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>&file</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>&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><html></literal> êáé <literal><head></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>""</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 -->