<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/faq.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'faq.html.php',
    1 => 'PHP ve HTML',
    2 => 'PHP ve HTML',
  ),
  'up' => 
  array (
    0 => 'faq.php',
    1 => 'SSS',
  ),
  'prev' => 
  array (
    0 => 'faq.passwords.php',
    1 => 'Parola Aşlama',
  ),
  'next' => 
  array (
    0 => 'faq.com.php',
    1 => 'PHP ve COM',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'faq/html.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="faq.html" class="chapter">
  <h1 class="title">PHP ve HTML</h1>

  

  <p class="para">
   PHP ve HTML etkileşir: PHP, HTML üretir; HTML, PHP&#039;ye bilgi aktarır. Bu
   SSS&#039;yi okumaya başlamadan önce
   <a href="language.variables.external.php" class="link">değişkenlerin dış
   kaynaklardan</a> nasıl elde edildiğini öğrenmiş olmanız önemlidir. Bu
   konu ile igili kılavuz sayfası ayrıca örnekler de içerir.
  </p>

  <div class="qandaset"><ol class="qandaset_questions"><li><a href="#faq.html.encoding">
     
      Bir değeri bir form veya URL &uuml;zerinden aktarırken nasıl kodlamak
      gerekir?
     
    </a></li><li><a href="#faq.html.form-image">
     
      Bir &lt;input type=&quot;image&quot;&gt; etiketi kullanmayı deniyorum, ama
      $foo.x ve $foo.y değişkenlerini
      bulamıyorum. $_GET[&#039;foo.x&#039;] mevcut değil mi? Bunlar
      neredeler?
     
    </a></li><li><a href="#faq.html.arrays">
     Bir HTML &lt;form&gt;&#039;unda dizileri nasıl oluşturabilirim?
    </a></li><li><a href="#faq.html.select-multiple">
     
      &Ccedil;ok HTML etiketli bir select etiketinden t&uuml;m sonu&ccedil;ları nasıl alırım?
     
    </a></li><li><a href="#faq.html.javascript-variable">
     
      Bir değişkeni Javascript&#039;ten PHP&#039;ye nasıl aktarabilirim?
     
    </a></li></ol></div>
   <dl class="qandaentry" id="faq.html.encoding">
    <dt><strong>
     
      Bir değeri bir form veya URL üzerinden aktarırken nasıl kodlamak
      gerekir?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Hangi kodlamanın hangi aşamada kullanılacağı önemlidir. İçeriğini
      kodlamaksızın aktarmak istediğiniz <span class="type"><a href="language.types.string.php" class="type string">string</a></span> türünde
      <var class="varname">$data</var> diye bir değişkeniniz olduğunu varsayalım.
      Aşamalar şunlardır:
      <ul class="itemizedlist">
       <li class="listitem">
        <p class="para">
         HTML yorumlaması. Rasgele bir dizgeyi belirtirken dizgeyi çift
         tırnak içine almanız ve değerin tamamına
         <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span> uygulamanız
         <em>gerekir</em>.
        </p>
       </li>
       <li class="listitem">
        <p class="para">
         URL: Bir URL çeşitli parçalardan oluşur. Verinizin tek bir öğe
         olarak yorumlanmasını isterseniz, veriyi
         <span class="function"><a href="function.urlencode.php" class="function">urlencode()</a></span> ile kodlamanız
         <em>gerekir</em>.
        </p>
       </li>
      </ul>
     </p>
     <p class="para">
      <div class="example" id="example-1">
       <p><strong>Örnek 1 - Gizli bir HTML form elemanı</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">echo </span><span style="color: #DD0000">'&lt;input type="hidden" value="' </span><span style="color: #007700">. </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">) . </span><span style="color: #DD0000">'" /&gt;'</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

      </div>
      <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
       <span class="simpara">
        <var class="varname">$data</var> için <span class="function"><a href="function.urlencode.php" class="function">urlencode()</a></span>
        kullanmak yanlıştır, çünkü veriyi <span class="function"><a href="function.urlencode.php" class="function">urlencode()</a></span>
        türünde kodlamak tarayıcının sorumluluğundadır. Bunun yöntemden (yani
        GET veya POST) bağımsız oluşuna dikkat ediniz. Bunu sadece GET
        isteklerinde farkedersiniz, çünkü POST istekleri normalde gizlidir.
       </span>
      </p></blockquote>
      <div class="example" id="example-2">
       <p><strong>Örnek 2 - Kullanıcı tarafından düzenlenen veri</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">echo </span><span style="color: #DD0000">"&lt;textarea name='mydata'&gt;\n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">).</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #DD0000">"&lt;/textarea&gt;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

      </div>
      <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
       <span class="simpara">
        Umulduğu gibi veri tarayıcıda gösterilir, çünkü HTML öncelemeli
        simgeleri tarayıcının yorumlaması gerekir.
       </span>
       <span class="simpara">
        Verinin GET veya POST üzerinden gönderiminde veri aktarılırken
        tarayıcı tarafından kodlanır (urlencode) ve bu kodlama PHP tarafından
        çözülür (urldecode). Böylece, sizin kodlamayla ilgili birşeyler
        yapmanız gerekmez, herşey otomatik olarak gerçekleşir.
       </span>
      </p></blockquote>
      <div class="example" id="example-3">
       <p><strong>Örnek 3 - Bir URL içinde</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">echo </span><span style="color: #DD0000">'&lt;a href="' </span><span style="color: #007700">. </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #DD0000">"/nextpage.php?stage=23&amp;data=" </span><span style="color: #007700">.<br />        </span><span style="color: #0000BB">urlencode</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">)) . </span><span style="color: #DD0000">'"&gt;'</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

      </div>
      <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
       <span class="simpara">
        Aslında bir HTML GET isteğini taklit ettiğinizden veriye
        <span class="function"><a href="function.urlencode.php" class="function">urlencode()</a></span> uygulamanız gerekmez.
       </span>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
       <span class="simpara">
        URL, bir HTML özniteliğinin değeri olduğundan URL&#039;nin tümüne
        <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span> kodlaması uygulamanız gerekir.
        Bu durumda, tarayıcı değere <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span>
        çözümlemesi uyguladıktan sonra URL olarak aktarır. PHP, URL&#039;yi doğru
        olarak algılayacaktır, çünkü veriye <span class="function"><a href="function.urlencode.php" class="function">urlencode()</a></span>
        uygulamışsınızdır.
       </span>
       <span class="simpara">
        URL&#039;deki <code class="literal">&amp;</code> yerine <code class="literal">&amp;amp;</code>
        yazıldığını farkedeceksiniz. Çoğu tarayıcı bunu sizin yerinize
        yaptığından bunu yapmayı unutsanız da o kadar önemli değildir. Ancak,
        URL&#039;niz dinamik olmasa bile, URL&#039;ye
        <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span> uygulamanız
        <em>gerekir</em>.
       </span>
      </p></blockquote>
     </p>
     
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.html.form-image">
    <dt><strong>
     
      Bir &lt;input type=&quot;image&quot;&gt; etiketi kullanmayı deniyorum, ama
      <var class="varname">$foo.x</var> ve <var class="varname">$foo.y</var> değişkenlerini
      bulamıyorum. <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET['foo.x']</a></var> mevcut değil mi? Bunlar
      neredeler?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Bir formu göndermek için bir gönderi düğmesi yerine aşağıdaki gibi bir
      görüntü kullanmak da mümkündür:
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;input type=&quot;image&quot; src=&quot;dugme.gif&quot; name=&quot;foo&quot; /&gt;</pre>
</div>
      </div>

      Kullanıcı bu görüntünün herhangi bir yerine tıkladığında sunucuya formla
      birlikte ek olarak <var class="varname">foo.x</var> ve <var class="varname">foo.y</var>
      diye iki değişken aktarılır.
     </p>
     <p class="para">
      <var class="varname">foo.x</var> ve <var class="varname">foo.y</var> PHP&#039;de geçersiz
      değişken isimleri olduklarından sihirli bir şekilde bunlar
      <var class="varname">foo_x</var> ve <var class="varname">foo_y</var> değişkenlerine
      dönüşürler. Yani, nokta imi yerine altçizgi imi yerleştirilir.
      Dolayısıyla, bu değişkenlere <a href="language.variables.external.php" class="link">dış kaynaklı değişkenler</a>
      bölümünde açıkladığı gibi erişebilirsiniz. Örnek:
      <var class="varname"><a href="reserved.variables.get.php" class="classname">$_GET['foo_x']</a></var>.
      <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
       <p class="para">
         İstekle aktarılan değişken isimlerindeki boşluklar da alçizgi imleri
         ile değiştirilir.
       </p>
      </p></blockquote>
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.html.arrays">
    <dt><strong>
     Bir HTML &lt;form&gt;&#039;unda dizileri nasıl oluşturabilirim?
    </strong></dt>
    <dd class="answer">
     <p class="para">
      &lt;form&gt; sonucunu bir <a href="language.types.array.php" class="link">dizi</a> olarak göndermek için PHP betğinizde &lt;input&gt;,
      &lt;select&gt; veya &lt;textarea&gt; elemanlarını şöyle isimlendirmeniz
      gerekir:
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;input name=&quot;Dizim[]&quot; /&gt;
&lt;input name=&quot;Dizim[]&quot; /&gt;
&lt;input name=&quot;Dizim[]&quot; /&gt;
&lt;input name=&quot;Dizim[]&quot; /&gt;</pre>
</div>
      </div>

      Değişken isimlerinden sonra gelen köşeli ayraçları farketmişsinizdir.
      Bunlar değişkeni bir dizi haline getirirler. Farklı elemanlara aynı
      dizi isimlerini atamak suretiyle elemanları farklı diziler içinde
      gruplayabilirsiniz:
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;input name=&quot;Dizim[]&quot; /&gt;
&lt;input name=&quot;Dizim[]&quot; /&gt;
&lt;input name=&quot;ÖbürDizim[]&quot; /&gt;
&lt;input name=&quot;ÖbürDizim[]&quot; /&gt;</pre>
</div>
      </div>

      Bu örnekte PHP betiğine gönderilmek üzere iki dizi üretilmektedir:
      Dizim ve ÖbürDizim. Dizilerinize ayrıca özel anahtarlar atamanız da
      mümkündür:
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;input name=&quot;DiğerDizim[]&quot; /&gt;
&lt;input name=&quot;DiğerDizim[]&quot; /&gt;
&lt;input name=&quot;DiğerDizim[eposta]&quot; /&gt;
&lt;input name=&quot;DiğerDizim[telefon]&quot; /&gt;</pre>
</div>
      </div>

      Burada, DiğerDizim dizisi 0, 1, eposta ve telefon anahtarlarını
      içerecektir.
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
        <p class="para">
         HTML&#039;de dizi anahtarlarını belirtmek isteğe bağlıdır. Anahtar
         belirtmezseniz, dizi elemanları formda yer alış sırasına göre
         numaralanır. Örneğimizde anahtarlar 0, 1, 2 ve 3 olacaktır.
        </p>
       </p></blockquote>
      </p>
      <p class="para">
      Ayrıca bakınız:
      <a href="ref.array.php" class="link">Dizi İşlevleri</a> ve
      <a href="language.variables.external.php" class="link">Dış Kaynaklı Değişkenler
      </a>.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.html.select-multiple">
    <dt><strong>
     
      Çok HTML etiketli bir select etiketinden tüm sonuçları nasıl alırım?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Bir HTML&#039;deki çok seçenekli bir select oluşumu kullanıcıların bir
      listeden çok sayıda öğe seçebilmesini mümkün kılar. Seçilen öğeler form
      için atanmış bir eylemciye aktarılırlar. Burada sorun, hepsinin aynı
      değişken ismiyle aktarılmasıdır. Örnek:
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;select name=&quot;var&quot; multiple=&quot;yes&quot;&gt;</pre>
</div>
      </div>

      Seçilen her seçenek eylemciye şöyle aktarılacaktır:
      <div class="example-contents"><div class="cdata"><pre>
var=seçim1
var=seçim2
var=seçim3
      </pre></div></div>

      Her seçenek bir önceki <var class="varname">$var</var> değişkeninin içeriğinin
      üzerine yazacaktır. Çözüm, değişken ismi olarak dizi kullanmaktır:
      <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;select name=&quot;var[]&quot; multiple=&quot;yes&quot;&gt;</pre>
</div>
      </div>

      Bu satır PHP&#039;ye <var class="varname">$var</var> değişkenini bir dizi olarak ele
      almasını ve her seçeneğin içeriği için bir dizi elemanı eklemesini
      söyler. İlk seçim <var class="varname">$var[0]</var>, ikincisi
      <var class="varname">$var[1]</var>, vs. olur. Kaç seçeneğin seçilmiş olduğunu
      <span class="function"><a href="function.count.php" class="function">count()</a></span> işlevi ile öğrenebilir veya gerekirse
      <span class="function"><a href="function.sort.php" class="function">sort()</a></span> işleviyle seçenek dizisini sıraya
      sokabilirsiniz.
     </p>
     <p class="para">
      JavaScript kullanıyorsanız eleman ismindeki <code class="literal">[]</code>
      ayraçları, elemanlara isimleriyle başvururken sorun çıkarabilir. Ya
      eleman anahtarı yerine sayısal biçimi kullanın ya da değişken
      isimlerini tek tırnak içine alıp bunları dizi elemanlarını indislemekte
      kullanın. Örnek:
      <div class="example-contents"><div class="cdata"><pre>
variable = document.forms[0].elements[&#039;var[]&#039;];
      </pre></div></div>

     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.html.javascript-variable">
    <dt><strong>
     
      Bir değişkeni Javascript&#039;ten PHP&#039;ye nasıl aktarabilirim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Javascript&#039;in (normal olarak) istemci taraflı, PHP&#039;nin sunucu taraflı
      olması ve HTTP&#039;nin de &#039;durumsuz&#039; bir protokol olması nedeniyle iki dil
      değişkenleri doğrudan paylaşamazlar.
     </p>
     <p class="para">
      Bununla birlikte, ikisi arasında değişken alışverişi mümkündür. Bunu
      sağlamanın tek yolu Javascript kodunu PHP ile üretmek ve tarayıcıya
      tazeletip özel değişkenleri gerisin geriye PHP&#039;ye aktarmaktır.
      Aşağıdaki örnekte bunun nasıl yapıldığı ayrıntılı olarak
      gösterilmiştir. Normalde sadece istemci tarafında mümkün olan ekran
      yüksekliği ve genişliğinin elde edilmesi PHP kodunda gerçeklenmektedir.
     </p>
     <p class="para">
      <div class="example" id="example-4">
       <p><strong>Örnek 4 - PHP ile Javascript üretimi</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">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'width'</span><span style="color: #007700">]) AND isset(</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'height'</span><span style="color: #007700">])) {<br />  </span><span style="color: #FF8000">// Boyut değişkenlerini çıktılayalım<br />  </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Ekran genişliği: "</span><span style="color: #007700">. </span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'width'</span><span style="color: #007700">] .</span><span style="color: #DD0000">"&lt;br /&gt;\n"</span><span style="color: #007700">;<br />  echo </span><span style="color: #DD0000">"Ekran yüksekliği: "</span><span style="color: #007700">. </span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'height'</span><span style="color: #007700">] .</span><span style="color: #DD0000">"&lt;br /&gt;\n"</span><span style="color: #007700">;<br />} else {<br />  </span><span style="color: #FF8000">// Boyut değişkenlerini aktaralım<br />  // (özgün sorgu dizgesini koruyalım<br />  //   -- post değişkenleri farklı şekilde elde edilecek)<br /><br />  </span><span style="color: #007700">echo </span><span style="color: #DD0000">"&lt;script language='javascript'&gt;\n"</span><span style="color: #007700">;<br />  echo </span><span style="color: #DD0000">"  location.href=\"</span><span style="color: #007700">{</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'SCRIPT_NAME'</span><span style="color: #007700">]}</span><span style="color: #DD0000">?</span><span style="color: #007700">{</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'QUERY_STRING'</span><span style="color: #007700">]}</span><span style="color: #DD0000">"<br />            </span><span style="color: #007700">. </span><span style="color: #DD0000">"&amp;width=\" + screen.width + \"&amp;height=\" + screen.height;\n"</span><span style="color: #007700">;<br />  echo </span><span style="color: #DD0000">"&lt;/script&gt;\n"</span><span style="color: #007700">;<br />  exit();<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>
</div>
     </p>
    </dd>
   </dl>

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