1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-23 23:02:09 +01:00
Files
archived-doc-tr/features/http-auth.xml
2024-10-26 13:13:28 +03:00

169 lines
6.4 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bdf9a4e40204c805f2c2a5c94c2f2f8f5556195a Maintainer: yasar Status: ready -->
<chapter xml:id="features.http-auth" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>PHP ile HTTP Kimlik Doğrulaması</title>
<simpara>
<function>header</function> işlevi kullanılarak istemci tarayıcısına "Kimlik
Doğrulaması Gerekli" (<literal>"Authentication Required"</literal>)
iletisini göndererilir ve bunun sonucunda Kullanıcı Adı/Parola giriş
penceresi açılır. Kullanıcı kullanıcı adı ve parolasını girdiğinde,
PHP betiğini içeren URL, kullanıcı adı, parola ve kimlik doğrulama
türünü atayan <varname>PHP_AUTH_USER</varname>,
<varname>PHP_AUTH_PW</varname> ve <varname>AUTH_TYPE</varname>
<link linkend="reserved.variables"> öntanımlı değişkenleri</link>
ile tekrar çağrılır. Bu öntanımlı değişkenler <varname>$_SERVER</varname>
dizileri içinde bulunur. Sadece "Temel" (<literal>Basic</literal>) ve
kimlik doğrulama yöntemi desteklenir.
Daha fazla bilgi için <function>header</function> işlevine bakınız.
</simpara>
<para>
İstemci sayfasını kimlik doğrulamaya zorlayacak örnek betik aşağıdaki gibidir:
</para>
<para>
<example>
<title>- Temel HTTP Kimlik Doğrulaması örneği</title>
<programlisting role="php">
<![CDATA[
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Benim bölgem"');
header('HTTP/1.0 401 Unauthorized');
echo 'Kullanıcı İptal düğmesine basınca çıkacak metin';
exit;
} else {
echo "<p>Merhaba {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Parola olarak {$_SERVER['PHP_AUTH_PW']} verdiniz.</p>";
}
?>
]]>
</programlisting>
</example>
</para>
<note>
<title>Uyumluluk Bilgisi</title>
<para>
Lütfen HTTP başlık satırlarını kodlarken dikkatli olun. Bütün istemcilerle
uyumluluğu garantilemek için, "Basic" anahtar sözcüğünün "B" harfi büyük
yazılmalı, realm metni çift tırnak (tek tırnak değil) ile yazılmalı,
ve <emphasis>HTTP/1.0 401</emphasis> başlık satırındaki
<emphasis>401</emphasis> kodundan önce tam olarak bir adet boşluk
olmalıdır. Kimlik doğrulama bağımsız değişkenleri virgülle ayrılmış
olmalıdır.
</para>
</note>
<para>
Yukarıdaki örnekte yapıldığı gibi sadece <varname>PHP_AUTH_USER</varname>
ve <varname>PHP_AUTH_PW</varname> yazdırmak yerine, kullanıcı adı ve parolasının
doğruluğunu denetlemek isteyebilirsiniz. Bunun için belki bir veritabanı
sorgusu gönderebilir veya kullanıcıyı bir dbm dosyası içinde arayabilirsiniz.
</para>
<para>
Burada hatalı Internet Explorer tarayıcılarına dikkat ediniz. Başlıkların
sırası konusunda çok seçici görünürler. <emphasis>WWW-Authenticate</emphasis>
başlığını <literal>HTTP/1.0 401</literal> başlığından önce göndermek hileye
neden olabilir.
</para>
<note>
<title>Yapılandırma Bilgisi</title>
<para>
PHP harici kimlik doğrulamasının etkin olup olmadığnı tespit etmek için
<literal>AuthType</literal> yönergesininin varlığını bakar.
</para>
</note>
<simpara>
Yukarıdaki örnek, aynı sunucudaki kimlik doğrulamalı URL'lerden girilen
parolaları çalmak için kimlik doğrulamasız bir URL'yi kullanmak
isteyenleri önlemez.
</simpara>
<simpara>
Hem Netscape Navigator hem de Internet Explorer, 401 sunucu yanıtını almak
için yerel tarayıcı penceresinin kimlik doğrulama önbelleğini temizler. Bu
işlem, kullanıcıları tekrar kullanıcı adı ve parolasını girmeye zorlayacak
şekilde "oturumu kapatır". Bazıları bunu "zaman aşımlı" kullanıcı girişi
için kullanırlar veya bir "Çıkış" düğmesi sunarlar.
</simpara>
<para>
<example>
<title>- Yeni kullanıcı adı va parolası girmeye zorlayan bir HTTP kimlik
doğrulama örneği</title>
<programlisting role="php">
<![CDATA[
<?php
function authenticate() {
header('WWW-Authenticate: Basic realm="Kimlik Doğrulaması Deneme Sistemi"');
header('HTTP/1.0 401 Unauthorized');
echo "Bu kaynağa erişmek için geçerli bir kullanıcı adı ve " .
"parolası girmelisiniz.\n";
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER']) ||
($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
authenticate();
} else {
echo "<p>Merhaba: " . htmlspecialchars($_SERVER['PHP_AUTH_USER']) . "<br />";
echo "Eski: " . htmlspecialchars($_REQUEST['OldAuth']);
echo "<form action='' method='post'>\n";
echo "<input type='hidden' name='SeenBefore' value='1' />\n";
echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
echo "<input type='submit' value='Kimliği Yeniden Doğrula />\n";
echo "</form></p>\n";
}
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Bu davranış şekli HTTP Temel kimlik doğrulama standardı için gerekli
değildir, bu nedenle buna güvenmemelisiniz. <literal>Lynx</literal> ile
denendiğinde <literal>Lynx</literal>'in kimlik doğrulama kartlarını 401
sunucu yanıtı ile temizlemediğini göstermiştir, bu nedenle kimlik bilgisi
değişmediği sürece geri ve ileri düğmesine basmak aynı kaynağı açacaktır.
Kullanıcı <literal>'_'</literal> tuşu ile kimlik doğrulama bilgisini
temizleyebilir.
</simpara>
<simpara>
HTTP kimlik doğrulamasının çalışması için IIS yapılandırmasındaki
"Dizin Güvenliği"ni değiştirmelisiniz. "Düzenle"ye basınız ve sadece
"Anonim Erişim"leri seçiniz, diğer bütün sahalar seçimsiz olmalıdır.
</simpara>
<note>
<title>IIS Bilgisi:</title>
<simpara>
HTTP kimlik doğrulamasının IIS ile çalışması için, PHP yönergesi
<link linkend="ini.cgi.rfc2616-headers">cgi.rfc2616_headers</link> değeri
<literal>0</literal> olmaldır (öntanımlı değer).
</simpara>
</note>
</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
-->