PHP dosya değişkeni çizgiden?

6 Cevap

Neden data_ için bir çizgi var mı?

Bu kod okunabilirliği açısından daha mantıklı, böylece bu yazı basit bir yolu var mı?

Benim analizi:

data_ formdan, postmessage değişkeni aracılığı ile mesaj talep ne olursa olsun data_ almak ve bu metin ve tüm bu birleştirmek emin olmak gerekiyordu:

 $filename = 'data_'.$_REQUEST['postmessage'].'.txt';

Ben bir acemi ve bu kod benim analizi yanlış olabilir, ama benim hatalarımdan öğrenmeye hazırım.

6 Cevap

Hadi biraz yıkmak edelim:

  1. $filename = - Bir değişken denir $ dosya içine bir değer atama.
  2. data_ - Sadece bir dize.
  3. $_REQUEST['postmessage'] - postmessage isteği parametresinin değeri (POST, GET veya bir COOKIE parametre de olabilir kesinlikle yoksa, $_REQUEST çok sık kullanarak çalışın. . Kullanımı $_GET ya da bunun yerine $ _POST). Bu (eğer bahsettiğimiz gibi) şeklinde gelirdi.
  4. .'.txt' - Sadece bir dize.

Yukarıdaki unsurlar arasındaki bir nokta dizeleri bitiştirmek için kullanılır.

Yorumlarınız hakkında "ve metin olduğundan emin olun" - yanlış. Bu metin emin yapmaz. Kendinizi Bundan emin olmak gerekir ve muhtemelen (güvenlik nedenleriyle) gerekir.

Sadece bu kodu bir dize dizilediğimiz gibi görünüyor.

. bir birleştirme operatörüdür.

Yani $ dosya içerecektir

data_somethingorother.txt

Çizgi Eğer inşa konum dizisinin bir parçasıdır.

Bu istediğinize bağlıdır. En $_REQUEST['postmessage'] "foo" içerir diyelim. İlk örnek üretecek $filename = 'data_foo.txt', while the second one will produce $filename = 'data.txtfoo'. (OP soru gelen ikinci örnek kaldırıldı)

Ben ilk istenen sonucu olduğunu tahmin ediyorum, ama bu sizin ihtiyaçlarınıza bağlıdır. Hepsi bu, sadece dize birleştirme bulunuyor.

Okunabilirlik açısından, ben boşluklarla dize birleştirme operatörünü . çevreleyen öneririm. Böylece, gibi bir şey:

$filename = 'data_' . $_REQUEST['postmessage'] . '.txt';

PHP-hedefli dizim bir metin editörü / IDE kullanmak da çok yardımcı olabilir. Temel PHP öğretici de bunu yapacaktır.

Diğerleri söylediler, bu sadece bir GET / POST değişkeni bir dosya adı inşa ediyor. Bildiğim kadarıyla okunabilirlik gibi, ben iyi olduğunu düşünüyorum.

Ancak, dosya yolları inşa etmek, GET / POST değişkenleri, ya da bir kullanıcı değiştirebilir şey kullanırken çok dikkatli olmak gerekir. Ben hemen hemen her zaman hiç bunu yapmak gerekir söyleyebilirim. Eğer için gidiyoruz eğer, en azından onlar postmessage=../../filename gibi şeyler yapamaz emin olun.

Ditto,

Ancak, istek değişkeni saklamak için bir değişken tanımlamak istiyorum. Bu hata ayıklama daha kolay, bu nedenle, okumak için kod kolaylaştırır. Ayrıca sanitization temizleyici sahne yapacaktır.

$postMessage = $_REQUEST['postmessage']; $filename = 'data_' . $postMessage . '.txt';