tpug            Thu Dec 13 17:27:45 2001 EDT

  Added files:                 
    /phpdoc/tr/features file-upload.xml 
  Log:
  complete translation by Mesut
  

Index: phpdoc/tr/features/file-upload.xml
+++ phpdoc/tr/features/file-upload.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
 <chapter id="features.file-upload">
  <title>Dosya y�kleme y�netimi</title>

  <sect1 id="features.file-upload.post-method">
   <title>POST metodu ile dosya y�kleme</title>

   <simpara>
    PHP, RFC-1867 uyumlu t�m taray&inodot;c&inodot;lardan (Netscape Navigator 3 ve 
daha �st s�r�mler,
    M�crosoft'un yay&inodot;nlad&inodot;&gbreve;&inodot; bir yama ile Microsoft 
Internet Explorer 3, veya di&gbreve;er �st s�r�mleri)
        dosya y�klemek i�in yeteneklidir. Bu �zellik 
kullan&inodot;c&inodot;lar&inodot;n binary veya metinsel
        dosya y�kleyebilmelerini sa&gbreve;lamaktad&inodot;r.  PHP'nin yetkilendirme 
ve dosya i&scedil;leme �zellikleri ile,
        dosyalar&inodot; kimin y�kleybilece&gbreve;i ve y�klendikten sonra ne 
yap&inodot;laca&gbreve;&inodot; konusunda tam kontrol sahibisinizdir.
   </simpara>
   <para>
    PHP, Netscape Composer ve W3C'nin Amaya �yeleri taraf&inodot;ndan 
kullan&inodot;lan PUT y�ntemi ile de 
        dosya y�kleme i&scedil;lemini destekler. PUT Y�ntemi hakk&inodot;nda 
detayl&inodot; bilgi i�in<link
    linkend="features.file-upload.put-method">t&inodot;klay&inodot;n&inodot;z.</link>
   </para>
   <para>
    Dosya y�kleme ekran&inodot;, a&scedil;a&gbreve;&inodot;daki gibi �zel bir form 
haz&inodot;rlamakla olu&scedil;turulur:
    <example>
     <title>Dosya Y�kleme Formu</title>
     <programlisting role="html">
<![CDATA[
<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Bu dosyay&inodot; g�nder: <input name="userfile" type="file">
<input type="submit" value="G�nder">
</form>
]]>
     </programlisting>
    </example>
    _URL_ bir PHP dosyas&inodot;n&inodot; i&scedil;aret etmelidir.  MAX_FILE_SIZE 
gizli alan&inodot;, form i�inde
    dosya alan&inodot;ndan �stte olmal&inodot;d&inodot;r ve 
ta&scedil;&inodot;&gbreve;&inodot;d&inodot; de&gbreve;er, kabul edilebilir enfazla 
dosya boyunu 
        g�sterir.  De&gbreve;er byte cinsindendir.
        <warning>
         <para>
          MAX_FILE_SIZE sadece taray&inodot;c&inodot;ya, bu boyutu 
a&scedil;mamas&inodot;n&inodot; s�yler. Bunu a&scedil;mak �ok kolayd&inodot;r.
          Bu y�zden buna pek fazla g�venmeyin. PHP'nin ayarlar&inodot;ndaki 
maximum-size ise a&scedil;&inodot;lamaz.
         </para>
        </warning>
   </para>

   <para>
    PHP'de , <filename>php.ini</filename> i�indeki <link
    linkend="ini.register-globals">register_globals</link>'&inodot;n on oldu&gbreve;u 
varsay&inodot;l&inodot;rsa, 
        ba&scedil;ar&inodot;l&inodot; bir dosya y�kleme an&inodot;nda 
a&scedil;a&gbreve;&inodot;daki de&gbreve;i&scedil;kenler tan&inodot;mlan&inodot;r.
        E&gbreve;er <link
    linkend="ini.track-vars">track_vars</link> on ise, bu de&gbreve;i&scedil;kenler 
PHP'nin 
    <varname>$HTTP_POST_VARS</varname> dizinleri olarak da al&inodot;nabilir.
        A&scedil;a&gbreve;&inodot;daki de&gbreve;i&scedil;ken adlar&inodot;, 
yukar&inodot;daki �rnekteki 'userfile' alan ad&inodot;n&inodot;n 
kullan&inodot;ld&inodot;&gbreve;&inodot; varsay&inodot;larak
        verilmi&scedil;tir:

    <itemizedlist>
     <listitem>
      <simpara>
       <varname>$userfile</varname> - Dosyan&inodot;n, sunucuda saklanan ge�ici 
ad&inodot;.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <varname>$userfile_name</varname> - Dosyay&inodot; g�nderen ki&scedil;inin 
bilgisayar&inodot;ndaki dosyan&inodot;n
           orijinal ad&inodot; veya sistem yolu.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <varname>$userfile_size</varname> - G�nderilen dosyan&inodot;n byte cinsinden 
boyutu.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <varname>$userfile_type</varname> - Taray&inodot;c&inodot;n&inodot;n bu bilgiyi 
vermesine ba&gbreve;l&inodot; olarak, 
           dosyan&inodot;n mime tipi. �rne&gbreve;in "image/gif".
      </simpara>
     </listitem>
    </itemizedlist>
        Yukar&inodot;daki de&gbreve;i&scedil;kenlerin "$userfile" b�l�m�, y�kleme 
formundaki INPUT TYPE=file 
        alan&inodot;na verdi&gbreve;iniz isimdir.       Yukar&inodot;daki y�kleme 
formunda biz "userfile" ismini kulland&inodot;k.
   </para>

   <para>
   PHP 4'de durum bir par�a farkl&inodot;. Y�klenen dosya bilgileri 
<varname>$HTTP_POST_FILES</varname>
   dizinlerine y�klenmi&scedil;tir. Bu PHP 3'de oldu&gbreve;u gibi, e&gbreve;er <link 
linkend="ini.track-vars">track_vars</link> 
   on olarak tan&inodot;mlanm&inodot;&scedil; ise ge�erlidir. Fakat PHP 4.0.2 ve �st 
s�r�mlerinde 
   <link linkend="ini.track-vars">track_vars</link> on olarak tan&inodot;ml&inodot; 
gelir.
   </para>

   <para>
    <varname>$HTTP_POST_FILES</varname>'&inodot;n i�eri&gbreve;i 
a&scedil;a&gbreve;&inodot;daki gibidir.
        Bu �rnekte de, formdaki dosya y�kleme alan&inodot;n&inodot;n 
ad&inodot;n&inodot;n "userfile" oldu&gbreve;u 
varsay&inodot;lm&inodot;&scedil;t&inodot;r:
    <variablelist>
     <varlistentry>
      <term><varname>$HTTP_POST_FILES['userfile']['name']</varname></term>
      <listitem>
       <para>
        Dosyan&inodot;n, dosyay&inodot; g�nderenin bilgisayar&inodot;ndaki orijinal 
ad&inodot;.
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><varname>$HTTP_POST_FILES['userfile']['type']</varname></term>
      <listitem>
       <para>
        Taray&inodot;c&inodot;n&inodot;n bu bilgiyi vermesine ba&gbreve;l&inodot; 
olarak, 
           dosyan&inodot;n mime tipi. �rne&gbreve;in <literal>"image/gif"</literal>.
        </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><varname>$HTTP_POST_FILES['userfile']['size']</varname></term>
      <listitem>
       <para>
        G�nderilen dosyan&inodot;n byte cinsinden boyutu.
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><varname>$HTTP_POST_FILES['userfile']['tmp_name']</varname></term>
      <listitem>
       <para>
        Dosyan&inodot;n, sunucuda saklanan ge�ici ad&inodot;.
       </para>
      </listitem>
     </varlistentry>
    </variablelist>
   </para>

   <para>
    <filename>php.ini</filename> i�indeki <link
    linkend="ini.upload-tmp-dir">upload_tmp_dir</link> tan&inodot;mlamas&inodot;na 
farkl&inodot; bir yer 
        tan&inodot;mlanmad&inodot;k�a, dosyalar, sunucuda tan&inodot;ml&inodot; olan 
ge�ici klas�r de saklan&inodot;r.
    Sunucunun tan&inodot;ml&inodot; ge�ici klas�r�, <envar>TMPDIR</envar> 
de&gbreve;i&scedil;keni tan&inodot;mlanarak de&gbreve;i&scedil;tirilebilir.
    Bu tan&inodot;mlamay&inodot;, PHP dosyas&inodot; i�inde 
<function>putenv</function> fonksiyonunu kullanarak
        tan&inodot;mlamak ge�erli olmayacakt&inodot;r.
        Bu de&gbreve;i&scedil;keni, g�nderilen dosya �zerindeki ba&scedil;ka 
i&scedil;lemlerin �al&inodot;&scedil;&inodot;rl&inodot;&gbreve;&inodot;ndan
        emin olmak i�inde kullanabilirsiniz.
    <example>
     <title>Dosya Y�kleme Kontrol�</title>
     <para>
         A&scedil;a&gbreve;&inodot;daki �rnek, PHP 3'�n, 3.0.16'den ve PHP 4'�n 
4.0.2'den y�ksek s�r�mleri i�indir.
         Fonksiyon �zellikleri i�in  <function>is_uploaded_file</function> ve
      <function>move_uploaded_file</function> sayfalar&inodot;na bak&inodot;n&inodot;z.
     </para>
     <programlisting role="php">
<![CDATA[
<?php 
if (is_uploaded_file($userfile)) {
    copy($userfile, "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack: filename '$userfile'.";
}
/* ...or... */
move_uploaded_file($userfile, "/place/to/put/uploaded/file");
?>
]]>
     </programlisting>
     <para>
      PHP'nin daha �nceki s�r�mleri i�in, a&scedil;a&gbreve;&inodot;daki gibi bir seye 
ihtiyac&inodot;n&inodot;z var.
      <note>
       <para>
        Bu �rnek PHP'nin 4.0.2'den sonraki s�r�mlerinde 
<emphasis>�al&inodot;&scedil;maz</emphasis>.
       </para>
      </note>
     </para>
     <programlisting role="php">
<![CDATA[
<?php
/* Userland test for uploaded file. */ 
function is_uploaded_file($filename) {
    if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
        $tmp_file = dirname(tempnam('', ''));
    }
    $tmp_file .= '/' . basename($filename);
    /* User might have trailing slash in php.ini... */
    return (ereg_replace('/+', '/', $tmp_file) == $filename);
}

if (is_uploaded_file($userfile)) {
    copy($userfile, "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack: filename '$userfile'.";
}
?>
]]>
     </programlisting>
    </example>
   </para>
   <simpara>
    G�nderilen dosyay&inodot; alan PHP dosyan&inodot;z, g�nderilen dosyan&inodot;n ne 
yap&inodot;laca&gbreve;&inodot;na
        karar vermek i�in programlanmal&inodot;d&inodot;r.
        �rne&gbreve;in, dosya boyutu �ok b�y�k veya �ok k���k olan
        dosyalar&inodot; kabul etmemek i�in <varname>$file_size</varname> 
de&gbreve;i&scedil;kenini kullanabilirsiniz.
        <varname>$file_type</varname> de&gbreve;i&scedil;kenini, belirledi&gbreve;iniz 
kriterlerdeki dosya tipine uymayan
        dosyalar&inodot; kabul etmemek i�in kullanabilirsiniz.
        &Idot;stemedi&gbreve;iniz bu dosyalar&inodot;, ge�ici klas�rden silebilir veya 
farkl&inodot; bir klas�re ta&scedil;&inodot;yabilirsiniz.
   </simpara>
   <simpara>
   &Idot;&scedil;lem sonunda, dosya ta&scedil;&inodot;nmad&inodot; veya ad&inodot; 
de&gbreve;i&scedil;tirilmedi ise, ge�ici 
   klas�rden silinir.
   </simpara>
  </sect1>
 
  <sect1 id="features.file-upload.common-pitfalls">
   <title>Genel Tehlikeler</title>
   <simpara>
    Formdaki <literal>MAX_FILE_SIZE</literal> alan&inodot;, PHP'nin ini 
tan&inodot;mlar&inodot;ndaki 
        <link linkend="ini.upload-max-filesize">upload_max_filesize</link> da 
tan&inodot;mlanm&inodot;&scedil; de&gbreve;erden
        daha b�y�k bir de&gbreve;er tan&inodot;yamaz. Tan&inodot;ml&inodot; gelen 2 
Megabyte t&inodot;r.
   </simpara>
   <simpara>
   &Idot;&scedil;lem yapt&inodot;&gbreve;&inodot;n&inodot;z dosyay&inodot; kontrol 
etmemek, kullan&inodot;c&inodot;lar&inodot;n di&gbreve;er klas�rlerdeki
   hassas bilgilerinize eri&scedil;ebilmesi demektir.
   </simpara>
   <simpara>
   L�tfen CERN httpd'nin istemciden gelen content-type mime 
ba&scedil;l&inodot;&gbreve;&inodot;nda ilk bo&scedil;luktan sonraki her &scedil;eyi 
silme e&gbreve;iliminde oldu&gbreve;unu
   not edin. Bu durum devam ettik�e, CERN httpd dosya y�kleme �zelli&gbreve;ini 
desteklemeyecektir.
   </simpara>
  </sect1>

  <sect1 id="features.file-upload.multiple">
   <title>�oklu Dosya Y�kleme</title>
   <simpara>
   Ayn&inodot; anda birden fazla dosya y�klemek ve dosya bilgilerini otomatik olarak
   organize olmu&scedil; bir dizin olarak almak m�mk�nd�r. Bunu yapmak i�in, HTML 
formlarda kulland&inodot;&gbreve;&inodot;n&inodot;z
   Checkbox alanlar&inodot;nda oldu&gbreve;u gibi, ayn&inodot; dizin g�nderimi 
yapmal&inodot;s&inodot;n&inodot;z:
   </simpara>
   <note>
    <para>
        �oklu dosya y�kleme deste&gbreve;i 3.0.10 s�r�m�nde eklenmi&scedil;tir.
    </para>
   </note>
   <para>
    <example>
     <title>�oklu Dosya Y�kleme</title>
     <programlisting role="html">
<![CDATA[
<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br>
  <input name="userfile[]" type="file"><br>
  <input name="userfile[]" type="file"><br>
  <input type="submit" value="Send files">
</form>
]]>
     </programlisting>
    </example>
   </para>
   <simpara>
   Yukar&inodot;daki form g�nderildi&gbreve;inde, dizinler
    <varname>$userfile</varname>,
    <varname>$userfile_name</varname>, ve
    <varname>$userfile_size</varname> will be formed in
    the global scope (as well as in $HTTP_POST_FILES ($HTTP_POST_VARS
    in PHP 3)). Bunlar&inodot;n her biri, g�nderilen dosyalar&inodot;n 
de&gbreve;erlerini i�eren
        numaraland&inodot;r&inodot;lm&inodot;&scedil; dizin olacakt&inodot;r.
   </simpara>
   <simpara>
    �rne&gbreve;in, g�nderilen dosya adlar&inodot;n&inodot;n &scedil;�yle 
oldu&gbreve;unu varsayal&inodot;m:
    <filename>/home/test/review.html</filename> ve
    <filename>/home/test/xwp.out</filename>.  Bu durumda,
        <varname>$userfile_name[0]</varname>, <filename>review.html</filename> 
de&gbreve;erini i�erir,
    ve <varname>$userfile_name[1]</varname> de <filename>xwp.out</filename> 
de&gbreve;erini i�erir.
        Bir benzeri de,
    <varname>$userfile_size[0]</varname>, <filename>review.html</filename>'in dosya 
boyutunu i�erir. Di&gbreve;erleri de ayn&inodot;d&inodot;r.
   </simpara>
   <simpara>
    <varname>$userfile['name'][0]</varname>,
    <varname>$userfile['tmp_name'][0]</varname>,
    <varname>$userfile['size'][0]</varname>, ve
    <varname>$userfile['type'][0]</varname> de 
tan&inodot;mlanm&inodot;&scedil;t&inodot;r.
   </simpara>
  </sect1>

  <sect1 id="features.file-upload.put-method">
   <title>PUT Y�netmi Deste&gbreve;i</title>

   <para>
    PHP Netscape Composer ve W3C Amaya gibi programlar&inodot;n 
kulland&inodot;&gbreve;&inodot; HTTP PUT 
        y�ntemini de destekler. PUT i&scedil;lemi, bir dosya y�kleme i&scedil;leminden
        daha basittir ve a&scedil;a&gbreve;&inodot;daki gibidir:
    <informalexample>
     <programlisting>
PUT /path/filename.html HTTP/1.1
     </programlisting>
    </informalexample>
   </para>
   <para>
    Bu &scedil;u demektir: dosyay&inodot; y�kleyen, dosyay&inodot;, web d�zeniniz 
i�indeki
        /path/filename.html i�ine kaydetmek istemektedir.
    T�m kulan&inodot;c&inodot;lar&inodot;n, web dizini i�indeki herhangi bir 
dosyan&inodot;n �zerine yazmak
        Apache ve PHP i�in kesinlikle iyi bir fikir de&gbreve;ildir.
        Bu t�r bir i&scedil;lemi kontrol alt&inodot;na almak i�in, web sunucunuza 
b�yle bir i&scedil;lem i�in
        belirli bir PHP dosyas&inodot;n&inodot; kullanmas&inodot;n&inodot; 
s�ylemelisiniz. Apache'de bu i&scedil;lem <emphasis>Script</emphasis>
        direktifi ile yap&inodot;lmaktad&inodot;r. Bu direktif, Apache'nin 
konfigursasyon dosyas&inodot;nda
        herhangi bir yere konulabilir.  Genellikle &lt;Directory&gt; blo&gbreve;unun
        veya &lt;Virtualhost&gt; blo&gbreve;unun i�ine konur.
        Bunun gibi bir sat&inodot;r i&scedil;inizi g�recektir:
    <informalexample>
     <programlisting>
Script PUT /put.php
     </programlisting>
    </informalexample>
   </para>
   <simpara>
   Bu sat&inodot;r, Apache'ye, t�m PUT istemlerini, ekledi&gbreve;imiz sat&inodot;rda 
bulunan
   put.php dosyas&inodot;na g�ndermesini s�yler. Bu �rnek, .php 
uzant&inodot;s&inodot;n&inodot;n �al&inodot;&scedil;&inodot;r oldu&gbreve;u
   ve PHP nin aktif oldu&gbreve;u varsay&inodot;larak verilmi&scedil;tir.
   </simpara>
   <simpara>
   
    put.php dosyan&inodot;zda, &scedil;�yle bir&scedil;ey yapabilirsiniz:
   </simpara>
   <para>
    <informalexample><programlisting role="php">
<![CDATA[
<?php copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>
]]>
    </programlisting></informalexample>
   </para>
   <simpara>
   Bu i&scedil;lem, dosyay&inodot;, i&scedil;elemi yapan ki&scedil;inin 
istedi&gbreve;i klas�re kopyalar.
    Bu kopyalama i&scedil;lemini ger�ekle&scedil;tirmeden �nce, baz&inodot; kontroler 
ve/veya
        giri&scedil; kontrolleri yapmak isteyebilirsiniz.
    &Idot;stek sonland&inodot;&gbreve;&inodot;nda, bu ge�ici dosya silinir.  
Dolay&inodot;s&inodot; ile
        i&scedil;lemi ger�ekle&scedil;tiren dosyan&inodot;z, bu dosyay&inodot; 
ba&scedil;ka bir yere kopyalamal&inodot;d&inodot;r.
        Bu ge�ici klas�rdeki dosya ad&inodot; $PHP_PUT_FILENAME 
de&gbreve;i&scedil;kenindedir
        ve iste&gbreve;i g�nderenin belirledi&gbreve;i dosya ad&inodot;n&inodot; 
$REQUEST_URI 
        (Apache d&inodot;&scedil;&inodot;ndaki web sunucularda 
de&gbreve;i&scedil;ebilir) de&gbreve;i&scedil;keninde g�rebilirsiniz.
    Bu belirtilen dosya ad&inodot;, dosyay&inodot; g�nderenin belirledi&gbreve;i dosya 
ad&inodot;d&inodot;r.
        Bu iste&gbreve;i ger�ekle&scedil;tirmek zorunda de&gbreve;ilsinizdir. 
�rne&gbreve;in
        t�m dosyalar&inodot;, belirledi&gbreve;iniz bir klas�re kopyalabilirsiniz.
   </simpara>
  </sect1>

 </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
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
-->

Reply via email to