PHP'de normal ifadeden kaçış. Kaçış (veya metin içinde metinle çalışmak için bilmeniz gerekenler) Tek ve çift tırnak içindeki özel karakterler

  • Tercüme
  • öğretici

SQL enjeksiyonları, siteler arası istek sahteciliği, bozuk XML... Hepimizin korunmak istediği ama tüm bunların neden olduğunu bilmek istediğimiz korkutucu şeyler. Bu makale tüm bunların ardındaki temel konsepti açıklıyor: dizeler ve dizeler içinde dizelerin işlenmesi.

Asıl sorun sadece metin. Evet, yalnızca metin; asıl sorun bu. Bir bilgisayar sistemindeki hemen hemen her şey metinle temsil edilir (bu da baytlarla temsil edilir). Bazı metinlerin bilgisayarlara yönelik olması, bazılarının ise insanlara yönelik olması mümkün mü? Ancak ikisi de hala metin olarak kalıyor. Neden bahsettiğimi anlamak için işte küçük bir örnek:
Homo Sapiens Diyelim ki, Rusçaya çevirmek istemediğim İngilizce bir metin var.
İnanmayacaksınız: bu bir metin. Bazıları buna XML diyor ama bu yalnızca metin. Bir İngilizce öğretmenine göstermeye uygun olmayabilir ama yine de sadece metindir. Bunu bir postere bastırıp mitinglere onunla gidebilirsiniz, annenize bir mektupta yazabilirsiniz... bu bir metindir.

Ancak bu metnin bazı bölümlerinin bilgisayarımız için bir anlam taşımasını istiyoruz. Bilgisayarın metnin yazarını ve metnin kendisini ayrı ayrı çıkarabilmesini istiyoruz, böylece onunla bir şeyler yapabiliriz. Örneğin yukarıdakini şuna dönüştürün:
Farz edelim ki, Homo Sapiens'in Rusçaya tercüme etmesini istemediğim İngilizce bir metin var.
Bilgisayar bunu nasıl yapacağını nereden biliyor? Çünkü metnin belirli kısımlarını ve gibi özel kelimelerle komik parantezlere çok uygun bir şekilde sardık. Bunu yaptığımıza göre, bu belirli parçaları arayan, metni çıkaran ve bunu kendi buluşumuz için kullanan bir program yazabiliriz.

Başka bir deyişle, metnimizde, aynı kurallara uyan bir başkasının kullanabileceği özel bir anlamı belirtmek için belirli kurallar kullandık.
Tamam, bunu anlamak o kadar da zor değil. Peki ya metnimizde özel bir anlam taşıyan bu komik parantezleri bu anlamı kullanmadan kullanmak istesek?.. Şunun gibi bir şey:
Homo sapiens< n and y >
"" karakterleri özel bir şey değildir. Yukarıdaki örnekte olduğu gibi yasal olarak her yerde, her metinde kullanılabilirler. Peki ya özel kelimeler fikrimiz? Bu aynı zamanda bir çeşit anahtar kelime olduğu anlamına mı geliyor? XML'de - belki evet. Ya da belki değil. Bu belirsiz. Bilgisayarlar belirsizliklerle baş etmede pek iyi olmadığından, eğer i'yi kendimiz noktalamaz ve belirsizlikleri çözmezsek, bir şey beklenmedik bir sonuç verebilir.
Bu ikilem, belirsiz simgelerin açık bir şeyle değiştirilmesiyle çözülebilir.
Homo Sapiens Temel matematiği bize şunu söyler: eğer x< n and y >n, x, y'den büyük olamaz.
Artık metin tamamen anlaşılır hale gelmelidir. "".
Bunun teknik tanımı şu şekildedir koruyucuözel bir anlama sahip olmalarını istemediğimizde özel karakterlerden kaçarız.
kaçış |iˈskāp| [önem yok. ] özgürleşin [ obj ile. ] fark etmemek / hatırlamamak [...] [ obj ile. ] BT: farklı yorumlanması gereken bir neden [...]
Bir metindeki belirli karakterlerin veya karakter dizilerinin özel anlamları varsa, o zaman bu karakterlerin özel anlamlarına başvurmadan kullanılması gereken durumların nasıl ele alınacağını belirleyen kurallar olmalıdır. Veya başka bir deyişle kaçmak şu soruyu yanıtlıyor: “Bu semboller bu kadar özelse bunları metnimde nasıl kullanabilirim?”.
Yukarıdaki örnekte de görebileceğiniz gibi ve işareti (&) de özel bir karakterdir. Peki ya yazmak istersek "


Kullanıcılarınız iyi ve nazikse, eski filozoflardan alıntılar yayınlayacaklardır ve mesajlar şöyle görünecektir:

Platon tarafından 2 Ocak 15:31'de gönderildi

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco Laboris nisi ut aliquip ex ea commodo consequat." dediğim söyleniyor.


Eğer kullanıcılar akıllıysa muhtemelen matematik hakkında konuşacaklardır ve mesajlar şöyle olacaktır:

Pascal tarafından 23 Kasım 04:12'de gönderildi

Temel matematik bize şunu söyler: eğer x< n and y >n, x, y'den büyük olamaz.


Hımm... Yine parantezlerimize saygısızlık edenler. Teknik açıdan belirsiz olabilirler, ancak tarayıcı bunun için bizi affedecektir, değil mi?


Tamam, DUR, ne oluyor? Şakacının biri forumunuza javascript etiketleri mi ekledi? Sitenizde bu mesaja bakan herkes artık sitenizin bağlamında kim bilir neler yapabilecek komut dosyalarını indiriyor ve çalıştırıyor. Ve bu iyi değil.

Kelimenin tam anlamıyla alınmamalıdır Yukarıdaki durumlarda, bir şekilde DB'mize veya tarayıcımıza bunun yalnızca metin olduğunu, onunla hiçbir şey yapmadığını söylemek istiyoruz! Başka bir deyişle, kullanıcıya güvenmediğimiz için, kullanıcı tarafından sağlanan herhangi bir bilgiden tüm özel karakterlerin ve anahtar kelimelerin özel anlamlarını "kaldırmak" istiyoruz. Ne yapalım?

Ne? Ne diyorsun oğlum? Ah, "koruyucu" mu dedin? Ve kesinlikle haklısın, bir kurabiye al!
Kullanıcı verilerine sorgu ile birleştirmeden önce kaçış uygularsak sorun çözülür. Veritabanı sorgularımız için şöyle bir şey olurdu:
$isim = $_POST["isim"]; $isim = mysql_real_escape_string($isim); $query = "Kullanıcılardan telefon_numarası SEÇİN WHERE name = "$name""; $sonuç = mysql_query($query);
Yalnızca bir satır kod, ancak artık hiç kimse veritabanımızı "hackleyemez". Kullanıcı girişine bağlı olarak SQL sorgularının nasıl görüneceğini tekrar görelim:
Alex
Kullanıcılardan telefon_numarasını SEÇİN WHERE name = "Alex"
Mc Donalds
kullanıcılardan telefon_numarasını SEÇİN WHERE name = "Mc\"Donalds"
Joe"; DROP TABLE kullanıcıları; --
Kullanıcılardan telefon_numarasını SEÇİN WHERE name = "Joe\"; DROP TABLE kullanıcıları; --"
mysql_real_escape_string, özel bir anlamı olabilecek herhangi bir şeyin önüne gelişigüzel bir eğik çizgi koyar.


Htmlspecialchars fonksiyonunu çıktı almadan önce tüm kullanıcı verilerine uyguluyoruz. Artık zararlının mesajı şuna benzer:

JackTR tarafından 18 Temmuz 12:56'da gönderildi


Kullanıcılardan alınan değerlerin aslında "bozuk" olmadığını unutmayın. Herhangi bir tarayıcı bunu HTML olarak ayrıştırır ve ekrandaki her şeyi doğru biçimde görüntüler.

Bu da bizi şuna geri getiriyor... Yukarıdakilerin tümü, birçok sistemde ortak olan bir sorunu göstermektedir: özel karakterlerin olması gerekmiyorsa, metin içindeki metinden kaçınılmalıdır. Metin değerlerini SQL'e yerleştirirken, SQL kurallarına göre kaçış yapılması gerekir. Metin değerlerini HTML'ye yerleştirirken HTML kurallarına göre kaçış yapılması gerekir. (Teknoloji adı) içerisine metin değerleri yerleştirilirken (teknoloji adı) kurallarına göre kaçılmalıdır. Tamamı bu kadar, elbette, özel karakterler içerebilen veya içermeyebilen kullanıcı girdisini ele almanın başka yolları da vardır:
  • Doğrulama
    Kullanıcı girişinin belirli bir spesifikasyonla eşleşip eşleşmediğini kontrol edebilirsiniz. Eğer bir sayı girilmesi gerekiyorsa ve kullanıcı başka bir şey girerse program kullanıcıyı bilgilendirip girişi iptal etmelidir. Bütün bunlar doğru organize edilmişse, kullanıcının "42" girmesi gereken yerde "DROP TABLE kullanıcılarını" yakalama riski yoktur. Bu, HTML/SQL enjeksiyonlarından kaçınmak için pek pratik değildir, çünkü ... Çoğunlukla hileler içerebilecek serbest biçimli metinleri kabul etmeniz gerekir. Tipik olarak doğrulama diğer ölçümlere ek olarak kullanılır.
  • Sterilizasyon
    Ayrıca tehlikeli olduğunu düşündüğünüz sembolleri “sessizce” kaldırabilirsiniz. Örneğin, forumunuza eklenmesini önlemek için HTML etiketine benzeyen herhangi bir şeyi kaldırmanız yeterlidir. Sorun, metnin yasal kısımlarını tamamen kaldırabilmenizdir.
    Hazırlanan SQL ifadeleri
    İstediğimizi yapan özel işlevler var: Veritabanının, SQL sorgusunun kendisi ile kullanıcılar tarafından sağlanan bilgiler arasındaki farkları anlamasını sağlamak. PHP'de şöyle görünürler:
    $stmt = $pdo->prepare("Kullanıcılardan telefon_numarasını SEÇİN ad = NEREDE?"); $stmt->execute($_POST["isim"]);
    Bu durumda gönderme, istek ve değişkenler arasında net bir ayrım yapılarak iki aşamada gerçekleşir. Veritabanı, önce isteğin yapısını anlama ve ardından onu değerlerle doldurma yeteneğine sahiptir.

  • Gerçek dünyada bunların hepsi farklı koruma seviyeleri için birlikte kullanılır. Kullanıcının doğru verileri girdiğinden emin olmak için her zaman doğrulamayı kullanmalısınız. Daha sonra girilen verileri tarayabilirsiniz (ancak buna gerek yoktur). Bir kullanıcı açıkça size bir komut dosyası satmaya çalışıyorsa, onu silebilirsiniz. Daha sonra, kullanıcı verilerini bir SQL sorgusuna koymadan önce her zaman kullanıcı verilerinden kaçmalısınız (aynı şey HTML için de geçerlidir).

2007.11.08 16:07

Veritabanına bilgi girerken PHP'de otomatik olarak tırnak işareti ekleme konusunda bir sorunla karşılaştım.

İnternette biraz araştırma yaptıktan sonra, sorunun .htaccess'teki yönergeler kullanılarak sunucu ayarlarını değiştirerek çözülebileceğini keşfettim: magic_quotes_gpc ve magic_quotes_runtime.

PHP dilinin geliştiricilerinin, PHP programcılarının çoğunu yüksek kaliteli kod yazmaya zorlayamayan, DBMS'mizin güvenliğiyle ilgilenmeye karar verdiklerini ve otomatik eğik çizgi eklemeyi uygulamaya koyduklarını söylüyorlar (ve ben buna inanıyorum). özel karakterlerden önce. Eğik çizgiler php.ini direktiflerine (magic_quotes_gpc ve magic_quotes_runtime) göre eklenir.

Direktiflere toplu olarak "sihirli alıntılar" denir, ancak ben onlara "cehennem alıntıları" diyorum. Aslında, iyi yazılmış bir uygulamada otomatik fiyat teklifine gerek yoktur; dahası, fazladan alıntılar buna engel olur ve bunların kaldırılması gerekir.

İlk yönerge - magic_quotes_gpc - PHP'nin kullanıcıdan gelen POST, GET istekleri ve çerezlerden gelen verilere otomatik olarak eğik çizgi eklediği anlamına gelir. İkinci değişken - magic_quotes_runtime - komut dosyası yürütme sırasında alınan verilere (örneğin bir dosyadan veya veritabanından) eğik çizgilerin eklendiği anlamına gelir. Bu nedenle, bu tür bilgileri sunan bazı işlevler tırnak işaretleri kullanır.

Böylesine müdahaleci bir hizmeti reddetmek istiyorsanız, o zaman ya siz (sunucunun tam sahibi olduğunuz nadir ve mutlu bir durumda) php.ini dosyasındaki bu yapılandırma değişkenlerini devre dışı bırakın ya da (tabii ki siz bunu yapmadığınız sürece) siteyi ücretsiz barındırmada barındırıyorsanız) .htaccess dosyasında değişiklik yapabilirsiniz. Bu, sunucunun tamamı için değil, tek bir dizin için yerel apache ayarlarını içeren bir dosyadır. Ve aşağıdaki satırları buna ekleyin.


Arkadaşlar!
Büyük bir temizliğin ortasındayız!
Olası hatalar ve sayfaların eğriliği
Her şeyi hızlı bir şekilde görmek mümkün değil!
Herhangi bir hata bulursanız, sizin için zor değilse adresi yazın...
Şimdi buradasın:

http://site/page/php/039_php_kavyichki.html

Php tırnak işaretleri, tek tırnak işaretleri, çift tırnak işaretleri, kaçış

Bugün alıntılarla ilgileneceğiz, ancak basit olanlarla değil, PHP'deki alıntılarla ve ayrıca kaçış tırnaklarıyla, seçeneklerle ilgileneceğiz.

PHP'nin hem çift hem de tek tırnak kullanımına izin verdiği gerçeğiyle başlayalım.

Ve alıntılardan kaçmak için birkaç seçenek var.

Klavyede tırnak işaretleri nerede bulunur?

Kodla çalışacaksanız, Latin düzeninde tırnak işaretlerinin klavyede nerede olduğunu bilmeniz gerekir - bu

E harfi – küçük harf:

ve e harfi yazılmıştır - bunlar tek tırnaklardır:

php çift ve tek tırnak sembolü

Doğal olarak alıntı karakterine ihtiyacınız olacak, yani. Bir alıntıyı ateşlenmeden yazdırmanız gerekiyorsa, alıntı karakterleri bunun içindir.

Çift tırnak karakteri:

"

Tek tırnak karakteri:

" Php'den kaçan tırnak işaretleri.

PHP'de tırnak işaretlerinden kaçmakla aslında ne demek istiyorsunuz?

Bir örneğe bakalım, çünkü örneklerle neden bahsettiğimizi anlamak her zaman daha kolaydır!

Php kodunu yazalım:

echo "php tırnak işaretleri";

Ama bu kodu buraya yapıştırırsak korkarım bu satırları bir daha göremezsiniz!?

Neden? Evet, çünkü kod çalışmayacak.

Bunu özellikle sizin için yaptım, içine bu kodu ekledim ve isterseniz bunun ne olacağını görebilirsiniz!

Bu neden oldu?

Çünkü echo'nun içinde PHP kodu olarak algılanan ek tırnak işaretleri vardır ve bunların sayısı beklenenden fazlaysa bir hata oluşur!

Bu durumda ne yapmalı!?

Çift tırnak işaretlerini tek tırnak işaretleri ile değiştirmeniz gerekir.

Aynı kodu alıp çift tırnakları tek tırnaklara çevirelim.

echo '"php tırnak işaretleri"';

Bakalım elimizde ne var!

Onlar. Üstteki kodu aldık ve doğrudan bu sayfaya yapıştırdık ve çıktı şu:


2. Alıntılardan kaçmak için ikinci seçenek. Tek tırnak işareti kullanmanın imkansız olduğu durumlar vardır!

Bu durumda sol eğik çizgi kullanılır. Kaçılması gereken her öğenin önüne böyle bir eğik çizgi koymanız gerekir.

Önceki girişi alalım ve aynı şeyi yalnızca eğik çizgi kullanarak yapalım:

Eko " php tırnak";

Sonucu görelim:

Tırnaklar nasıl kaldırılır.

Alıntıları ekranda görüntülemek ve PHP kodu olmamasını sağlamak için - kulağa ne kadar tuhaf gelse de! Tekliflerin html varlıklarına değiştirilmesi gerekir, örneğin:

Html koduyla tek alıntı::

" - tek alıntı " " "

Html koduyla çift alıntı:

" - çift tırnak " " "

Böyle bir alıntı ekranda alıntı gibi görünecek ancak artık Php kodunda görünmeyecektir...

Ve ilerisi!

Tüm PHP kodları dikkatli bir şekilde ele alınmalıdır! Örneğin, Word'de bir şey, bir metin yazdıysanız, benim için ilk kez olduğu gibi, içine kod yazmaya başladınız.

Sorunun ne olduğunu anlayamadım; bana basit bir kod göstermek istemiyordu. Balyozla bilgisayarı kırmaya hazırdım!!!

Ancak kod düzenleyicideki alıntıların Word'den farklı olduğu ortaya çıktı. Ve bunu yaşamadan anlamanız imkansız!

İngilizce eğik çizgiden gelen eğik çizgi, verilerinizde açıklanamaz bir şekilde aniden ortaya çıkan bir ters eğik çizgidir. Bazı özel karakterlere eklenir ancak esas olarak tırnak işareti koymak için kullanılır. Eğik çizgi yalnızca bir veritabanıyla çalışırken gereklidir. Ve bu kesinlikle gerekli. Diğer tüm durumlarda, yalnızca yolunuza çıkar. Şimdi her iki duruma da bakacağız ve PHP ayarlarına bağlı olmayan programların nasıl yazılacağını öğreneceğiz.


Php.ini direktifleri otomatik olarak eğik çizgi eklemekten sorumludur



magic_quotes_gpc
magic_quotes_runtime



İlki - eğer etkinleştirilirse - kullanıcıdan gelen POST, GET istekleri ve çerezlerden gelen verilere otomatik olarak eğik çizgi ekler. İkincisi, komut dosyasının yürütülmesi sırasında alınanlardan - örneğin bir dosyadan. Ancak, özellikle program dağıtım için yazılmışsa, PHP ayarlarına her zaman erişim mümkün değildir.


Kendi güvenliğiniz için durumunuz ne olursa olsun metnin TAMAMINI okuyun.


1. Veritabanı OLMADAN çalışıyorsanız
Bu, otomatik olarak eğik çizgi eklemeniz gerekmediği anlamına gelir. PHP eklendiyse ondan kurtulmanız gerekir.


get_magic_quotes_gpc() işlevini kullanarak PHP'nin eklenip eklenmediğini kontrol edebilirsiniz.
stripslashes() işlevi eğik çizgileri kaldırır.
Şimdi tek yapmamız gereken kontrol etmek ve eğer PHP eklenmişse, koddaki tüm değişkenleri gözden geçirip eğik çizgileri kaldırmak. Bu, kodda bulunan tüm değişkenleri içeren $GLOBALS dizisini kullanan tek bir işlevle yapılabilir:



if (get_magic_quotes_gpc()) strips($GLOBALS);


fonksiyon şeritleri(&$el) (
if (is_array($el)) (
foreach($el as $k=>$v) (
if($k! = "KÜRESELLER") (
strips($el[$k]);
}
}
) başka (
$el = stripslashes($el);
}
}



Eğik çizgiler hem global dizilerden hem de Register_globals=on olduğunda oluşturulan tüm değişkenlerden kaldırılacaktır.


Burada küçük bir inceleme yapmamız gerekiyor. $GLOBALS dizisini yinelemek, yalnızca Register_globals'ı etkinleştirdiyseniz ve betiğe iletilen değerlere otomatik olarak atanan değişkenleri kullanıyorsanız gereklidir. Bunları kullanmıyorsanız gerekli dizilerdeki eğik çizgileri kaldırın -
$_POST, $_GET vb.


Bir dosyadan veri alırken eğik çizgi eklemekten kurtulmak için betiğin başına şunu yazmanız yeterlidir:



set_magic_quotes_runtime(0);



2. MySQL ile çalışıyorsanız
MySQL'de sorgu yazmak için iki temel kural:


  • Tüm değişkenlerde özel karakterlerin önüne eğik çizgi konulmalıdır.
    Önemli Not. Eklenen eğik çizgiler veritabanına GİTMEZ. Bunlara yalnızca istekte ihtiyaç duyulur.
    Tabana vurulduğunda eğik çizgiler atılır. Buna göre yaygın
    Veritabanından veri alınırken şerit çizgi kullanılması bir hatadır.

  • Tüm dize değişkenleri tırnak içine alınmalıdır (tek veya çift, ancak tek olanlar daha kullanışlıdır ve daha sık kullanılır). Kolaylık sağlamak için, sayısal değişkenleri tırnak içine de alabilirsiniz; MySQL'in kendisi bunları istenen biçime dönüştürür. Yani, güvenilirlik açısından isteğe eklenen tüm veriler tırnak işaretleri içine alınmalıdır. Sadece addslashes() yapmak yanlış olur. Ya PHP'nin kendisi zaten eklenmişse? Bunun kontrol edilmesi gerekiyor. Bunun için get_magic_quotes_gpc() işlevi kullanılır.
    Veriler kullanıcının tarayıcısından GET veya POST yöntemini kullanarak geldiyse, bunu şu şekilde yazmalısınız:

    if (!get_magic_quotes_gpc()) $var=addslashes($var);



    Veriler bir dosyadan alınmışsa (bu nadiren olur, ancak yine de), o zaman

    if (!get_magic_quotes_runtime()) $var=addslashes($var);



    Ama ilginç olan ne? Özellikle mysql için, PHP'nin en son sürümleri, ekleme işaretinden bir karakter daha kaçan mysql_escape_string() işlevini tanıttı. Muhtemelen bunu kullanmak mantıklıdır.
    Sorgu oluşturmak için özel bir işleviniz varsa, buna kaçış eklenebilir. Değilse, bu işlevi kullanabilirsiniz:

fonksiyon ekler(&$el,$seviye=0) (
if (is_array($el)) (
foreach($el as $k=>$v) adds($el[$k],$level+1);
) başka (
$el = eklerlashes($el);
if (!$seviye) return $el;
}
}

Bu fonksiyonun iki kullanımı vardır.
Parametre olarak bir dize belirtirseniz, işlev onu özel karakterlerle birlikte döndürür.
Gibi bir isteğe eklemek için uygun



"SELECT * FROM table WHERE name="".adds($name).""";



Parametre bir dizi ise, işlev hiçbir şey döndürmez, ancak tüm öğelerini yinelemeli olarak "geçer". Örneğin, ekler($_POST); bu dizi için normal magic_quotes çalışmasını yapacaktır.


Eğik çizgi ekleyen işlevlerden hiçbirinin, bunları LIKE operatöründe kullanılan "%" ve "_" arama meta karakterlerine eklemediğini unutmayın. Bu nedenle, bu operatörü kullanıyorsanız eğik çizgileri manuel olarak ekleyin.



$data=preg_replace("/(%|_)/","\\\\\1",$data);




Kaçış kuralları diğer DBMS'ler için farklı olabilir.


Not:.
Formların giriş etiketlerinde değer görüntülenirken eğik çizgilerin faydası olmaz. Böyle bir alandaki metnin tamamının görüntülenebilmesi için değerin tırnak içine alınması ve çıktı verilerine htmlspecialchars fonksiyonunun uygulanması gerekir.
Örnek:



Sonuç:

İlk versiyonda (çift tırnaklı), dolar özel karakterinden kaçışı kullandık, bu özel karakterin özel amacı (değişken tanımı) olmaktan çıkıp sıradan bir dolar işaretine dönüşmesi nedeniyle.

İkinci seçenekte (tek tırnaklı), zaten bildiğiniz gibi, PHP yorumlayıcısı satırdaki değişkenleri bulmaya bile çalışmadı ve bu nedenle kaçışa gerek yoktu.

PHP'de özel karakterler

Özellikle blog okuyucuları için Sitede! PHP programlama dilinde özel karakterlerin küçük bir listesini hazırladım:

  • \n yeni satır
  • \r satır başı
  • \t yatay sekme
  • \\ ters eğik çizgi (ters eğik çizgi)
  • \$dolar işareti
  • \" çift tırnak

Özel karakterlerin çalışmalarına \n örneğini kullanarak bakalım - yeni bir satır oluşturan özel bir karakter (Enter gibi), ancak tarayıcılar onu anlamıyor (ve anlamamalı) ve görmezden gelmeli, ancak çalışmasının sonucu sayfanın kaynak kodunda görülebilir:

Sonuç:

Kaynak kodu (Ctrl + U):

\n özel karakteri tarayıcıda ziyaretçiler için hiçbir şekilde görüntülenmiyorsa anlamı nedir?

Öncelikle özel karakterler ve özellikle \n kullanarak sayfadaki kodu rahatlıkla biçimlendirebilirsiniz (yukarıdaki örnekte olduğu gibi).

İkinci olarak \n, örneğin bir dosyaya yazma işlemleri sırasında sarma (Enter) yapmak ve yeni bir satıra yazmaya devam etmek için kullanılabilir.

Bu biçimlendirmenin bir alternatifi .

PHP'de Heredoc sözdizimi

Sonuç:

Kaynak kodu (Ctrl + U):

Sonuç zaten ortada, şimdi her şeyin nasıl çalıştığını anlayalım:

  • Çizgi üç açılı ayraçla başlar
Fok
Konunun devamı:
pencereler

Xiaomi, ürün yelpazesindeki "kör noktaları kapatmaya" devam ediyor, aynı anda tornavidaları, perdeleri, her şeyi arka arkaya serbest bırakıyor ve sonra aniden bir nedenden ötürü "geri dönüp" yapmak zorunda kaldı...