Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

php'de değişken içinde php kodunu nasıl tutarım?

bir tanem php dosyaları oluşturan bir php dosyam var. php dosyasını oluşturmak için yazacağım dosyanın php kodlarını bir değişkene atamam gerekiyor malum. kodların arasında da bol miktarda ' ve " karakterleri, değişkenler, for ve while döngüleri var. bu kodları ana dosyamda bir değişkene atabilmek için de bu karakterin başına "\" işareti koymam gerekiyor ve bu da kodların daha sonra geliştirilmesini zorlaştırıyor. dolayısıyla bu kodları bir değişkene atadığımda içindeki herhangi bir kodu incelemeyecek bir atama tırnağı lazım. benim bildiğim (') (") ve (<<<html) şeklinde atama tipleri var ve dediğim gibi bunların içinde $, { veya kendi karakteri olduğunda sorun çıkardığından daha farklı birşey gerekiyor. umarım anlatabilmişimdir. :)
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • 0xC0FFEE adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    2 cevap - 0 soru
    değişken içinde saklayacaksan, şu şekilde bir değişken tanımlaması mümkün;

    $saklayiciDegisken = <<<FOO
    kodlar buraya gelebilir
    üstelik işaretlerde farketmez
    '";$@<?php echo "deneme"; ?>
    FOO;
    


    Ayrıca output bufferinge de göz atabilirsin
    • drengarc adlı üyenin fotoğrafı drengarc
      aradığım tam olarak buydu. teşekkürler.
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      peki bunu nasıl eche ileekrana yazdıracağız yani

      $sakla = <<<FOO
      <?php echo "deneme"; ?>
      FOO;
      


      $sakla'yı echo edince ekrana deneme yazsın istiyorum bu nasıl olacak?
      8 yıl önce yazılmış

Cevaplar

  • -1
    teacher0610 adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    54 cevap - 29 soru
    bahsettiğin yönetm ile değişkenlerde php kodlarını tutabilirsin sadece ufak bir detaya dikkat ederek.değişkene değer atarken en dışta çift tırnak, iç kısımlarda ise hep tek tırnak kullanırsan \ karakterini kullanmana gerek kalmayacaktır.

    Örnek:

    $a = "echo 'deneme'; for($i=1;$i<=5;$i++){echo $i.'<br>';}"

    gibi.
    • drengarc adlı üyenin fotoğrafı drengarc
      yaklaşık 300 satırlık bir kodum var içerde. eğer " karakterini kullanırsam değişkenleri otomatik olarak görüyor ve bu başlı başına çift tırnağın kullanımını engelliyor sayfada 30 tane değişken olduğu için :). bunun dışında tek tırnak ile çift tırnağın aynı anda kullanıldığı yerler var mecbur olarak. mesela js kodu yazdığım yerlerde mecburen kullanmışım tek tırnak içinde çift tırnağı. yani bildiğim 3 tane yazım şekli de uymuyor bu yönteme ne yazık ki. :(
      10 yıl önce yazılmış
  • heatclife adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    5 cevap - 6 soru
    en temizi <?php include('dis_dosya.php'); ?>
  • madpoet adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    83 cevap - 0 soru
    Hmm ben olsam, madem o kadar çok kod var, üstelik php javascript html karışık, generate edilen kodları bir klasörün altında ayrı dosyalarda tutarım, hem maintenance'i daha kolay olur hem de değişkene atarken o dizindeki tüm dosyaları gezip file_get_contents ile değişkene atma imkanı olur.

    Komplike işlerin varsa, yani kodla çok oynuyorsan smarty gibi bir template sistemi kullanabilir ya da kendine basit bir template sistemi yazarsın...

    Tabii bu dosyaların güvenliği önemliyse güvenliğini sağlamak için muhtelif üçkağıtlar gerekecektir. Ya webroot altında olmayan bir dizin, ya da her dosyanın başına bir <?php exit; ?> yazıp çekince dosyanın ilk satırını silmek gibi basit 3kağıtlar olabilir..
  • necmettin adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    80 cevap - 0 soru
    php'de serialize() ve unserialize diye iki fonksiyon vardır:

    $a = array(1,2,3,4,5);
    $kaydedilecek = serialize($a) //$kaydedilecek bir string oldu, istediğin yere kaydedebilirsin.

    $a = unserialize($kaydedilecek);
    print_r($a);
    >>> array(1,2,3,4,5)

    Bir de base64_encode ve base64_decode diye iki fonksiyon vardır:
    echo base64_encode('$a');
    >>> =esart6== //attım

    Örneğin kodlar bir form>textarea'dan geldiyse zaten sana dönüştürülmüş olarak gelecektir, serialize ve base64_encode fonksiyonlarının yardımıyla istediğin yere kaydedebilirsin. Kullanman gerektiğinde de unserialize ve base64_decode ile kullanılabilir hale getirirsin.

    Zaten biliyorsundur ama ben yine de söylemiş olayım, nerede tutarsan tut, kodları böyle bir string'den okuyup çalıştırmak tavsiye edilmez ve güvenlik açığı olarak görülür.
    • drengarc adlı üyenin fotoğrafı drengarc
      olay template sistemi ile alakalı değil öncelikle. ana sayfada kullanıcıdan birkaç veri alıyorum ve bunu 300 satırlık bir kodun 5 satırını değiştirip bir php dosyası oluşturup kodları onun içine yazıyorum.
      serialize işlemleri için de zaten bir değişkene atamam gerek ki zaten sorun da burda. fazladan bir dosyamız olacaksa da en temizi galiba başka bir dosyadan file_gets_contents ile çekmek. browserdan çağrıldığında çalışmayacak biçimde düzenlenip file_gets_contents ile çağrıldıktan sonra bir str_replace işlemi ile güvenlik sorununu da çözmüş oluruz zannediyorum.
      10 yıl önce yazılmış
    • necmettin adlı üyenin fotoğrafı necmettin
      Sanırım ne yapmak istediğini tam anlamamışım. Kullanıcının girdiği verilere göre bir PHP kod bloğunu değiştirmek istiyorsun değil mi?
      Kullanıcıdan gelen verileri bir dosyaya/veritabanına vb kaydedip mevzubahis PHP kodunun verileri dosyadan/veritabanından okumasını sağlamak (diğer bir deyişle koda kod içerisinden müdahale etmek yerine kodu kullanıcının girdiği verileri biryerden okuyacak hale getirmek) işini görmüyor mu?
      Bir diğer konu, mevzubahis kodu çift tırnaklar içerisinde verip o string içerisindeki tek tırnak, çift tırnak ve $ simgelerinin önüne \ koymak kodun kod olarak görünmesini engellemesi gerekir diye biliyorum.
      10 yıl önce yazılmış