SSS
PHP Manual

Çeşitli Sorular

Burada, belli bir sınıfa dahil edilemeyen sorulara yer verilmiştir.

  1. .bz2 uzantılı kılavuzları Windows üzerinde nasıl açabilirim?
  2. asort gibi bazı işlev bildirimlerinde değiştirgenin başındaki & neyin nesidir?
  3. register_globals ile nasıl çalışacağım?
.bz2 uzantılı kılavuzları Windows üzerinde nasıl açabilirim?

bz2 dosyalarla çalışabilen bir arşivleme aracına sahip değilseniz komut satırı araçlarını » indirebilirsiniz (ayrıntılar için aşağıya bakınız).

Bir komut satırı aracı kullanmak istemezseniz, » Stuffit Expander, » UltimateZip, » 7-Zip, » Quick Zip gibi özgür araçları deneyebilirsiniz. » WinRAR veya » Power Archiver gibi araçlara sahipseniz onlar da bz2 dosyaları açabilmektedir. Total Commander (eskisi: Windows Commander) kullanıyorsanız, bz2 eklentisini » Total Commander sitesinden ücretsiz edinebilirsiniz.

Red Hat'in bzip2 komut satırı aracı:

Win2k Sp2 kullanıcıları için en son sürüm 1.0.2, tüm diğer Windows kullanıcıları için 1.00'dır. İndirdikten sonra çalıştırılabilirin ismini bzip2.exe yapın ve C harfi Windows'un kurulu olduğu sürücüyü belirtmek üzere C:\Windows dizinine koyun.

php_manual_dil.x.bz2 (dil: sizin diliniz, x: istenen biçim, chm gibi) arşiv dosyasının sıkıştırmasını açmak için şu talimatları izleyin:

  • Bir komut istemi penceresi açın.
  • İndirdiğiniz php_manual_dil.x.bz2 dosyasının bulunduğu dizine geçin.
  • php_manual_dil.x.bz2 arşiv dosyasının içeriğini genişletmek için şu komutu verin: bzip2 -d php_manual_dil.x.bz2

İndirdiğiniz php_manual_dil.x.bz2 dosyasının çok sayıda HTML sayfası içermesi durumunda bu işlem sonucunda php_manual_dil.tar adında bir dosya elde edeceksiniz. Tar biçemi » WinZip gibi pek çok Windows arşivleme aracı tarafından bilinmektedir.

asort() gibi bazı işlev bildirimlerinde değiştirgenin başındaki & neyin nesidir?

Bu, değiştirgenin gönderimli aktarıldığı anlamına gelir ve ilgili belgelerde de açıklandığı gibi işlev bunu değiştirecektir. Bu yolla sadece değişkenleri aktarabilirsiniz ve işlev çağrısında değiştirgenin başına & yerleştirmenize gerek yoktur (ve bu artık önerilmemektedir).

register_globals ile nasıl çalışacağım?

register_globals ile ilgili güvenlik kaygıları hakkında bilgi edinmek için güvenlik kısmında bulunan register_globals kullanımı bölümüne bakınız.

register_globals yerine süper küreselleri kullanmanız önerilir.

Eğer register_globals'in kapalı olduğu bir paylaşımlı konak üzerindeyseniz ve bu seçeneğin etkin olmasını gerektiren bazı eski uygulamaları kullanmanız gerekiyorsa veya bu özelliğin etkin olduğu bir barındırma sunucusundaysanız fakat güvenlikle ilgili riske girmek istemiyorsanız PHP ile zıt ayarları taklit etmeniz gerekebilir. PHP'nin yapılandırmasını değiştirmenin mümkün olup olmadığını önce bir sormanızda fayda var. Eğer mümkün değilse, aşağıdaki uyumluluk kodlarını kullanabilirsiniz:

Örnek 1 register_globals'in taklit edilmesi

Bu örnekte register_globals=On durumu taklit edilmektedir. Eğer variables_order yönergenizde değişiklik yaparsanız değişikliği $superglobals değişkenine de yansıtmalısınız.

<?php
// register_globals=on'u taklit edelim
if (!ini_get('register_globals')) {
    
$superglobals = array($_SERVER$_ENV,
        
$_FILES$_COOKIE$_POST$_GET);
    if (isset(
$_SESSION)) {
        
array_unshift($superglobals$_SESSION);
    }
    foreach (
$superglobals as $superglobal) {
        
extract($superglobalEXTR_SKIP);
    }
}
?>

Bu örnekte ise register_globals=Off durumu taklit edilmektedir. Bu kodu betiğinizin oldukça baş taraflarına veya oturum başlatmak için kullandığınız session_start() çağrısından sonra yerleştirmeniz gerektiğini aklınızdan çıkarmayın.

<?php
// register_globals=off'u taklit edelim
function unregister_GLOBALS()
{
    if (!
ini_get('register_globals')) {
        return;
    }

    
// Daha hoş hatalar almak için bunu değiştirebilirsiniz
    
if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
        die(
'GLOBALS geçersizleştirme çabası algılandı');
    }

    
// unset edilmemesi gereken değişkenler
    
$noUnset = array('GLOBALS',  '_GET',
                     
'_POST',    '_COOKIE',
                     
'_REQUEST''_SERVER',
                     
'_ENV',     '_FILES');

    
$input array_merge($_GET,    $_POST,
                         
$_COOKIE$_SERVER,
                         
$_ENV,    $_FILES,
                         isset(
$_SESSION) && is_array($_SESSION) ? $_SESSION : array());

    foreach (
$input as $k => $v) {
        if (!
in_array($k$noUnset) && isset($GLOBALS[$k])) {
            unset(
$GLOBALS[$k]);
        }
    }
}

unregister_GLOBALS();

?>


SSS
PHP Manual