<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.variables.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.variables.external.php',
    1 => 'Dış Kaynaklı Değişkenler',
    2 => 'Dış Kaynaklı Değişkenler',
  ),
  'up' => 
  array (
    0 => 'language.variables.php',
    1 => 'Değişkenler',
  ),
  'prev' => 
  array (
    0 => 'language.variables.variable.php',
    1 => 'Değişken değişkenler',
  ),
  'next' => 
  array (
    0 => 'language.constants.php',
    1 => 'Sabitler',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/variables.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.variables.external" class="sect1">
   <h2 class="title">Dış Kaynaklı Değişkenler</h2>

   <div class="sect2" id="language.variables.external.form">
    <h3 class="title">HTML Formları (GET ve POST)</h3>

    <p class="simpara">
      Bir PHP betiğine bir form gönderildiğinde o formdaki bilgi betik
      tarafından otomatik olarak kullanılır. Bu bilgiye erişmek için
      birçok yol vardır, örneğin:
    </p>

    <p class="para">
     <div class="example" id="example-1">
      <p><strong>Örnek 1 - Basit bir HTML formu</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">&lt;form action="foo.php" method="post"&gt;<br />    Name:  &lt;input type="text" name="kullanici_adi" /&gt;&lt;br /&gt;<br />    Email: &lt;input type="text" name="eposta" /&gt;&lt;br /&gt;<br />    &lt;input type="submit" name="submit" value="Beni gönder!" /&gt;<br />&lt;/form&gt;</span></code></div>
      </div>

     </div>
    </p>

    <p class="para">
     HTML  formlarınızdaki bilgiye erişimin iki yolu
     vardır. Şu an için kullanılabilen yöntemler aşağıda sıralanmıştır:
    </p>

    <p class="para">
     <div class="example" id="example-2">
      <p><strong>Örnek 2 - Basit bir POST HTML formundan bilgiye erişim</strong></p>
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;?php

echo $_POST[&#039;kullanici_adi&#039;];
echo $_REQUEST[&#039;kullanici_adi&#039;];
?&gt;</pre>
</div>
      </div>

     </div>
    </p>
    <p class="para">
      Bunun yerine önceden tanımlı uygun bir GET değişkeni kullanmak
      dışında, GET formunun kullanımı aynıdır. GET ayrıca
      <code class="literal">QUERY_STRING</code> (Bir URL&#039;de &#039;?&#039; iminden sonraki bilgi)
      sorgu dizgesine de uygulanır. Bu bakımdan örneğin,
      <code class="literal">http://mesela.dom/dnm.php?id=3</code>
      <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET['id']</a></var> ile erişilebilen GET verisini içerir.
      Ayrıca, <var class="varname"><a href="reserved.variables.request.php" class="classname">$_REQUEST</a></var> değişkenine de bakınız.
    </p>

    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <p class="para">
      Değişken isimlerindeki noktalar ve boşluklar altçizgi karakterine
      dönüştürülür. Örneğin, <code class="literal">&lt;input name=&quot;a.b&quot; /&gt;</code>
      ifadesi <code class="literal">$_REQUEST[&quot;a_b&quot;]</code> haline gelir.
     </p>
     </p></blockquote>

    <p class="simpara">
     PHP form değişkenleri bağlamında dizileri de anlar (<a href="faq.html.php" class="link">ilgili SSS</a>&#039;ye bakınız). Örneğin, ilgili
     değişkenleri birlikte gruplayabilir veya bu özelliği çoklu seçim
     girdisinden değerleri almak için kullanabilirsiniz. Örneğin, bir formu
     kendine gönderelim ve gönderilen veriyi gösterelim:
    </p>

    <p class="para">
     <div class="example" id="example-3">
      <p><strong>Örnek 3 - Daha karmaşık form değişkenleri</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">'&lt;pre&gt;'</span><span style="color: #007700">;<br />    echo </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br />    echo </span><span style="color: #DD0000">'&lt;/pre&gt;'</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;form action="" method="post"&gt;<br />    Adı:  &lt;input type="text" name="personal[isim]" /&gt;&lt;br /&gt;<br />    Eposta: &lt;input type="text" name="personal[eposta]" /&gt;&lt;br /&gt;<br />    Bira: &lt;br /&gt;<br />    &lt;select multiple name="bira[]"&gt;<br />        &lt;option value="efes"&gt;Efes&lt;/option&gt;<br />        &lt;option value="tuborg"&gt;Tuborg&lt;/option&gt;<br />        &lt;option value="venus"&gt;Venüs&lt;/option&gt;<br />    &lt;/select&gt;&lt;br /&gt;<br />    &lt;input type="submit" value="Gönder!" /&gt;<br />&lt;/form&gt;</span></code></div>
      </div>

     </div>
    </p>

    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <span class="simpara">
      Harici değişken ismi geçerli bir dizi sözdizimi ile başlıyorsa sondaki
      karakterler sessizce yoksayılır. Örneğin, <code class="literal">&lt;input
      name=&quot;foo[bar]baz&quot;&gt;</code> girdisi <code class="literal">$_REQUEST[&#039;foo&#039;]
      [&#039;bar&#039;]</code> haline gelir.
     </span>
    </p></blockquote>

    <div class="sect3" id="language.variables.external.form.submit">
     <h4 class="title">Gönder düğmesi değişken isimleri</h4>

     <p class="simpara">
      Bir formu gönderirken, şöyle bir etiketle standart gönder düğmesi
      yerine görüntü kullanılabilir:
     </p>

     <div class="informalexample">
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;input type=&quot;image&quot; src=&quot;image.gif&quot; name=&quot;sub&quot; /&gt;</pre>
</div>
      </div>

     </div>

     <p class="simpara">
      Kullanıcı görüntü üzerinde bir yere tıkladığında, eşlik eden form iki ek
      değişkenle sunucuya iletilmiş olur: <var class="varname">sub_x</var> ve
      <var class="varname">sub_y</var>. Bunlar kullanıcın
      görüntü üzerinde tıkladığı noktanın koordinatlarını içerir. Deneyimliler
      tarayıcı tarafından gönderilen asıl değişken isimlerinin alt çizgi
      yerine nokta içerdiğine dikkat etmiş olabilirler, fakat PHP noktaları
      otomatik olarak alt çizgiye çevirir.
     </p>
    </div>

   </div>

   <div class="sect2" id="language.variables.external.cookies">
    <h3 class="title">HTTP Çerezleri</h3>

    <p class="simpara">
      PHP, <a href="https://datatracker.ietf.org/doc/html/rfc6265" class="link external">&raquo;&nbsp;RFC 6265</a>&#039;de
      tanımlandığı gibi HTTP çerezlerini şeffaf olarak destekler. Çerezler
      kullanıcıları izleyip tanımlamak amacıyla kullanıcının tarayıcısında
      veri saklamak için kullanılan bir yöntemdir. Çerezleri
      <span class="function"><a href="function.setcookie.php" class="function">setcookie()</a></span> işlevini kullanarak belirtebilirsiniz.
      Çerezler  HTTP başlığının bir parçasıdır, bu nedenle
      <span class="function"><a href="function.setcookie.php" class="function">setcookie()</a></span> işlevi tarayıcıya herhangi bir çıktı
      gönderilmeden önce çağrılmak zorundadır. Bu kısıtlama
      <span class="function"><a href="function.header.php" class="function">header()</a></span> işlevi için de geçerlidir. Çerez verisi
      <var class="varname"><a href="reserved.variables.cookies.php" class="classname">$_COOKIE</a></var> veya <var class="varname"><a href="reserved.variables.request.php" class="classname">$_REQUEST</a></var> gibi
      uygun çerez veri dizisinde bulunur. Ayrıntılar ve örnekler için
      <span class="function"><a href="function.setcookie.php" class="function">setcookie()</a></span> kılavuz sayfasına bakınız.
    </p>

    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <span class="simpara">
      Sırasıyla PHP 7.2.34, 7.3.23 ve 7.4.11&#039;den itibaren,  gelen çerezlerin
      <em>isimleri</em> güvenlik kaygıları nedeniyle artık
      url-kodlu değildir.
     </span>
    </p></blockquote>

    <p class="simpara">
      Eğer tek bir çerez değişkenine birden fazla değer atamak isterseniz,
      değişkeni bir dizi olarak atayabilirsiniz. Örneğin:
    </p>

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />  setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"Cerezim[foo]"</span><span style="color: #007700">, </span><span style="color: #DD0000">'Deneme 1'</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">()+</span><span style="color: #0000BB">3600</span><span style="color: #007700">);<br />  </span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"Cerezim[bar]"</span><span style="color: #007700">, </span><span style="color: #DD0000">'Deneme 2'</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">()+</span><span style="color: #0000BB">3600</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>

    <p class="simpara">
      Her ne kadar betiğinizde <code class="literal">Cerezim</code> tek bir dizi olsa da
      bu iki ayrı çerez oluşturacaktır. Eğer birden fazla değere sahip tek bir
      çerez atamak isterseniz, önce değer üzerinde
      <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span> veya <span class="function"><a href="function.explode.php" class="function">explode()</a></span>
      kullanmayı düşünün.
    </p>

    <p class="simpara">
      Yolu veya alan adı farklı olmadığı sürece aynı isimdeki bir çerez
      önceki çerezin üzerine yazılır. Böylece, isterseniz örneğin bir
      alışveriş sepeti uygulaması için bir sayaç tutabilir ve bunu karşıya
      aktarabilirsiniz.
    </p>

    <div class="example" id="example-4">
     <p><strong>Örnek 4 - <span class="function"><a href="function.setcookie.php" class="function">setcookie()</a></span> örneği</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (isset(</span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">[</span><span style="color: #DD0000">'sayac'</span><span style="color: #007700">])) {<br />    </span><span style="color: #0000BB">$sayac </span><span style="color: #007700">= </span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">[</span><span style="color: #DD0000">'sayac'</span><span style="color: #007700">] + </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />} else {<br />    </span><span style="color: #0000BB">$sayac </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">'sayac'</span><span style="color: #007700">, </span><span style="color: #0000BB">$sayac</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">()+</span><span style="color: #0000BB">3600</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"Sepet[</span><span style="color: #0000BB">$sayac</span><span style="color: #DD0000">]"</span><span style="color: #007700">, </span><span style="color: #0000BB">$mal</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">()+</span><span style="color: #0000BB">3600</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>

   </div>

   <div class="sect2" id="language.variables.external.dot-in-names">
    <h3 class="title">Gelen değişken isimleri içindeki noktalar</h3>

    <p class="para">
      Genellikle, PHP bir betiğe aktarılan değişken isimlerini değiştirmez.
      Fakat, nokta iminin PHP&#039;de değişken isimlerinde geçerli bir karakter
      olmadığına dikkat edilmelidir. Örnek:
  <div class="informalexample">
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$varname</span><span style="color: #007700">.</span><span style="color: #0000BB">ext</span><span style="color: #007700">;  </span><span style="color: #FF8000">/* geçersiz değişken ismi */<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

  </div>

      Burada, yazım denetleyicinin gördüğü <var class="varname">$varname</var>
      isimli bir değişkeni takip eden bir dizge birleştirme işlemi ve çıplak
      bir (tırnaklarla çevrilmemiş, herhangi bir anahtar veya anahtar sözcük
      ile eşleşmeyen dizge) &#039;ext&#039; metnidir. Açıkça görülüyor ki, bu istenen
      sonucu vermemektedir.
    </p>

    <p class="para">
      Bu nedenle, PHP&#039;nin gelen değişken isimlerindeki nokta imlerini alt
      çizgi imi ile değiştirdiğini bilmekte yarar vardır.
    </p>

   </div>

   <div class="sect2" id="language.variables.determining-type-of">
    <h3 class="title">Değişken türlerini belirlemek</h3>

    <p class="para">
      Değişken türlerini PHP belirlediği ve (genellikle) gerektiği gibi
      değiştirdiği için, verilen bir değişkenin herhangi bir anda hangi
      türde olduğu sorgulanmadan bilinemez. PHP&#039;de bir değişkenin hangi
      türde olduğunu bulan birçok işlev vardır. Örnek:
      <span class="function"><a href="function.gettype.php" class="function">gettype()</a></span>, <span class="function"><a href="function.is-array.php" class="function">is_array()</a></span>,
      <span class="function"><a href="function.is-float.php" class="function">is_float()</a></span>, <span class="function"><a href="function.is-int.php" class="function">is_int()</a></span>,
      <span class="function"><a href="function.is-object.php" class="function">is_object()</a></span> ve <span class="function"><a href="function.is-string.php" class="function">is_string()</a></span>.
      Ayrıca <a href="language.types.php" class="link">Türler</a> bölümüne de
      bakınız.
    </p>
    <p class="para">
     Bir metin protokolü olarak HTTP&#039;de, çoğunlukla, tamamen olmasa da,
     <a href="language.variables.superglobals.php" class="link">Süper küresel
     diziler</a> içinde gelen içerik dizge olarak kalır. PHP değerleri
     belli bir türe dönüştürmeyi denemez. Aşağıdaki örnekte,
     <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET["var1"]</a></var> değişkeni &quot;null&quot; ve
     <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET["var2"]</a></var>ise &quot;123&quot; dizgesini içerecektir.
     <div class="example-contents">
<div class="cdata"><pre>
/index.php?var1=null&amp;var2=123
</pre></div>
      </div>

    </p>
   </div>

   <div class="sect2" id="language.variables.external.changelog">
    <h3 class="title">Sürüm Bilgisi</h3>

    <p class="para">
     <table class="doctable informaltable">
      
       <thead>
        <tr>
         <th>Sürüm: </th>
         <th>Açıklama</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td>7.2.34, 7.3.23, 7.4.11</td>
         <td>
          Gelen çerezlerin <em>isimleri</em> güvenlik kaygıları
          nedeniyle artık url-kodlu değildir.
         </td>
        </tr>

       </tbody>
      
     </table>

    </p>
   </div>

  </div><?php manual_footer($setup); ?>