Kullanarak "küresel"

2 Cevap php

Ben her zaman global değişkenler tehlikeli kullanarak duydum. Bu Drupal için de geçerli mi? Aşağıdaki örneğe bir göz atın:

function myFunction($bla) {
   global $user;
   if (isAuthenticated($user->uid)) {
        print $secretCode;
   }

}

Bu kesmek olabilir?

2 Cevap

Global değişkenler birçok nedenden dolayı tehlikeli olabilir, bazıları şunlardır:

  1. Clutterlar ad alanları
  2. Global değişkenler yerden değiştirilebilir gibi, bakım zorlaştırır ve monkeypatching teşvik
  3. Onlar referentially şeffaf değil
  4. Hafıza-yönetilen dillerde, global değişkenler bellek sızıntıları kaynağı olabilir
  5. Onlar kurmak ve modifiye ediliyor nerede izlemek zor olabilir gibi Onlar, büyük uygulamalar / sitelerde özellikle zor hata ayıklama yapmak.

Hiçbir şey özellikle kullanımı durumda ilgili tehdit ediyor. Bu ince olmalıdır. Eğer çok korkuyorsan, o $ user-> uid değerlendirilmeden önce bir tam sayıdır sağlayabilirsiniz:

function myFunction($bla) {
   global $user;
   if( is_int($user->uid) ){
      if (isAuthenticated($user->uid)) {
         print $secretCode;
      }
   }
}

Ama bu muhtemelen gereksizdir.

Eğer session_register kullanıyorsanız No, bir SQL enjeksiyon için mümkündür. Bu PHP 4, eski bir yöntem olduğu için. Rağmen, birçok insan hala kullanabilirsiniz.