PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Ekler> <PHP 4'ten PHP 5'e Geçiş
Last updated: Fri, 30 Jan 2009

view this page in

Ç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ğ 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ştirmenini 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();

?>



Ekler> <PHP 4'ten PHP 5'e Geçiş
Last updated: Fri, 30 Jan 2009
 
add a note add a note User Contributed Notes
Çeşitli Sorular
19-Jul-2005 07:08
using .htaccess file to disable register globals (register_globals)

The syntax for setting an option is:

php_value name value
php_flag name on or off

Example:

php_flag register_globals off
php_value arg_separator.output &amp;

The example turns off register_globals and sets the value of arg_separator.output to &amp; which is preferred rather than the default &.

Note: you can also set boolean options with the php_value directive, the string will be converted to boolean before assignment.

you can also use .htaccess to  turn magic quotes on or off.
Search php.net and you'll find it
markus
19-Jun-2005 01:34
Considering the comment below. I think there's a way to avoid that "problem":

<?php
//
// $starttime is an example of a variable that we might need to define,
// even before, running the "register_globals OFF" emulator below.
//
list($msec, $sec) = explode(' ', microtime());
$starttime = ((float)$msec + (float)$sec);

//
// If register_globals is ON, ensure no unexpected globals are defined.
// ie. We'll try to emulate a register_globals OFF environment.
//
if( (bool)@ini_get('register_globals') )
{
   
$superglobals = array($_ENV, $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER);
    if( isset(
$_SESSION) )
    {
       
array_unshift($superglobals, $_SESSION);
    }
   
$knownglobals = array(
       
//
        // Known PHP Reserved globals and superglobals:
        //
       
'_ENV',        'HTTP_ENV_VARS',
       
'_GET',        'HTTP_GET_VARS',
       
'_POST',    'HTTP_POST_VARS',
       
'_COOKIE',    'HTTP_COOKIE_VARS',
       
'_FILES',    'HTTP_FILES_VARS',
       
'_SERVER',    'HTTP_SERVER_VARS',
       
'_SESSION',    'HTTP_SESSION_VARS',
       
'_REQUEST',

       
//
        // Global variables used by this code snippet:
        //
       
'superglobals',
       
'knownglobals',
       
'superglobal',
       
'global',
       
'void',

       
//
        // Known global variables defined before this code snippet is reached.
        //
       
'starttime',
    );
    foreach(
$superglobals as $superglobal )
    {
        foreach(
$superglobal as $global => $void )
        {
            if( !
in_array($global, $knownglobals) )
            {
                unset(
$GLOBALS[$global]);
            }
        }
    }
}
?>

Note the stuff related to the $_SESSION array depends on whether the PHP session has been started or not. You might want to call session_start() before this point (or set session.auto_start ON).

HTH+ :)
php at REMOVEMEkennel17 dot co dot uk
13-Apr-2005 06:22
Regarding simulating register_globals = off, note that it is impossible to adequately prevent $_SESSION variables from being globalised, as the array (and thus the globals) are created on a call to session_start().  You would therefore have to 'undo' this when you start a session as using it at the start of your script will have no effect.

To avoid potential problems, use a prefix that is unique for all session variables (e.g. 'SESS_'), and only access them via the $_SESSION array.  The prefix ensures that you don't have a naming clash (and therefore a security risk) with any non-session globals.
Juhapekka Tolvanen
18-Feb-2005 09:34
I added many links to software that can at least decompress Bzip2-files here:

http://en.wikipedia.org/wiki/Bzip2

Ekler> <PHP 4'ten PHP 5'e Geçiş
Last updated: Fri, 30 Jan 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites