mirror of
https://github.com/php/doc-fr.git
synced 2026-03-24 15:12:13 +01:00
261 lines
6.6 KiB
XML
261 lines
6.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: f0e6ac0428979cc3474c7087513904c58bc22c87 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<chapter xml:id="stream.examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>Exemples avec <function>file_get_contents</function></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
/* Lit un fichier local dans le dossier /home/bar */
|
|
$localfile = file_get_contents("/home/bar/foo.txt");
|
|
|
|
/* Identique au précédent, mais utilise explicitement le gestionnaire FILE */
|
|
$localfile = file_get_contents("file:///home/bar/foo.txt");
|
|
|
|
/* Lit un fichier distant sur le serveur www.example.com avec le protocole HTTP */
|
|
$httpfile = file_get_contents("http://www.example.com/foo.txt");
|
|
|
|
/* Lit le même fichier sur le serveur www.example.com avec le protocole HTTPS */
|
|
$httpsfile = file_get_contents("https://www.example.com/foo.txt");
|
|
|
|
/* Lit un fichier distant sur le serveur ftp.example.com en utilisant le protocole FTP */
|
|
$ftpfile = file_get_contents("ftp://user:pass@ftp.example.com/foo.txt");
|
|
|
|
/* Lit un fichier distant sur le serveur ftp.example.com en utilisant le protocole FTPS */
|
|
$ftpsfile = file_get_contents("ftps://user:pass@ftp.example.com/foo.txt");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Envoi d'une requête de type POST sur un serveur sécurisé</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
/* Envoi d'une requête POST sur le serveur https://secure.example.com/form_action.php
|
|
* Inclusion des variables "foo" et "bar"
|
|
*/
|
|
|
|
$sock = fsockopen("ssl://secure.example.com", 443, $errno, $errstr, 30);
|
|
if (!$sock) die("$errstr ($errno)\n");
|
|
|
|
$data = "foo=" . urlencode("Value for Foo") . "&bar=" . urlencode("Value for Bar");
|
|
|
|
fwrite($sock, "POST /form_action.php HTTP/1.0\r\n");
|
|
fwrite($sock, "Host: secure.example.com\r\n");
|
|
fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
|
|
fwrite($sock, "Content-length: " . strlen($data) . "\r\n");
|
|
fwrite($sock, "Accept: */*\r\n");
|
|
fwrite($sock, "\r\n");
|
|
fwrite($sock, $data);
|
|
|
|
$headers = "";
|
|
while ($str = trim(fgets($sock, 4096)))
|
|
$headers .= "$str\n";
|
|
|
|
echo "\n";
|
|
|
|
$body = "";
|
|
while (!feof($sock))
|
|
$body .= fgets($sock, 4096);
|
|
|
|
fclose($sock);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Écrire des données dans un fichier compressé</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
/* Création d'un fichier compressé contenant une chaîne arbitraire
|
|
* Le fichier peut être lu en utilisant le gestionnaire compress.zlib
|
|
* ou simplement décompressé en ligne de commande avec 'gzip -d foo-bar.txt.gz'
|
|
*/
|
|
$fp = fopen("compress.zlib://foo-bar.txt.gz","w");
|
|
if (!$fp) die("Impossible de créer le fichier.");
|
|
|
|
fwrite($fp, "Ceci est un test.\n");
|
|
|
|
fclose($fp);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<section xml:id="stream.streamwrapper.example-1">
|
|
<title>Exemple de classe enregistrée comme gestionnaire de flux</title>
|
|
<para>
|
|
L'exemple ci-dessous implémente un gestionnaire de protocole
|
|
<literal>var://</literal> qui permet d'écrire et lire une variable
|
|
globale en utilisant les fonctions standard de fichier, telle que
|
|
<function>fread</function>. Le protocole <literal>var://</literal>
|
|
implémenté ci-dessous, va, à partir d'une URL
|
|
<literal>"var://foo"</literal> accéder à la variable globale
|
|
<literal>$GLOBALS["foo"]</literal>.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Un flux pour lire et écrire des variables globales</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
class VariableStream {
|
|
var $position;
|
|
var $varname;
|
|
|
|
function stream_open($path, $mode, $options, &$opened_path)
|
|
{
|
|
$url = parse_url($path);
|
|
$this->varname = $url["host"];
|
|
$this->position = 0;
|
|
|
|
return true;
|
|
}
|
|
|
|
function stream_read($count)
|
|
{
|
|
$ret = substr($GLOBALS[$this->varname], $this->position, $count);
|
|
$this->position += strlen($ret);
|
|
return $ret;
|
|
}
|
|
|
|
function stream_write($data)
|
|
{
|
|
$left = substr($GLOBALS[$this->varname], 0, $this->position);
|
|
$right = substr($GLOBALS[$this->varname], $this->position + strlen($data));
|
|
$GLOBALS[$this->varname] = $left . $data . $right;
|
|
$this->position += strlen($data);
|
|
return strlen($data);
|
|
}
|
|
|
|
function stream_tell()
|
|
{
|
|
return $this->position;
|
|
}
|
|
|
|
function stream_eof()
|
|
{
|
|
return $this->position >= strlen($GLOBALS[$this->varname]);
|
|
}
|
|
|
|
function stream_seek($offset, $whence)
|
|
{
|
|
switch ($whence) {
|
|
case SEEK_SET:
|
|
if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) {
|
|
$this->position = $offset;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case SEEK_CUR:
|
|
if ($offset >= 0) {
|
|
$this->position += $offset;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case SEEK_END:
|
|
if (strlen($GLOBALS[$this->varname]) + $offset >= 0) {
|
|
$this->position = strlen($GLOBALS[$this->varname]) + $offset;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function stream_metadata($path, $option, $var)
|
|
{
|
|
if($option == STREAM_META_TOUCH) {
|
|
$url = parse_url($path);
|
|
$varname = $url["host"];
|
|
if(!isset($GLOBALS[$varname])) {
|
|
$GLOBALS[$varname] = '';
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
stream_wrapper_register("var", "VariableStream")
|
|
or die("Failed to register protocol");
|
|
|
|
$myvar = "";
|
|
|
|
$fp = fopen("var://myvar", "r+");
|
|
|
|
fwrite($fp, "line1\n");
|
|
fwrite($fp, "line2\n");
|
|
fwrite($fp, "line3\n");
|
|
|
|
rewind($fp);
|
|
while (!feof($fp)) {
|
|
echo fgets($fp);
|
|
}
|
|
fclose($fp);
|
|
var_dump($myvar);
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
line1
|
|
line2
|
|
line3
|
|
string(18) "line1
|
|
line2
|
|
line3
|
|
"
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
<!-- 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:"~/.phpdoc/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
|
|
-->
|
|
|