Korkusuz yorumlar php. AJAX kullanan basit yorum sistemi. php yorum sözdizimi: tek satırlık yorum

hakkında bir kez yazmıştım. Yani, sadece orada düşündük " aç gözlü"temsilciler. Ancak, her zaman onların değil " açgözlülük"Bize yardımcı oluyor, çoğu zaman acıtıyor. Biraz aşağıda, bazen ne yaptıklarını açıkça görebileceğiniz bir örnek göstereceğim ve ayrıca şevklerini nasıl azaltacağınızı ve yapacaklarınızı göstereceğim. tekrar niceleyicileri "tembel"dir.

Basit ve zaten klasik bir örneğe bakalım:

$str = "Küçük astar C gözü pek seçim.";
.*<\/b>
yankı $ sonuç_str;
?>

Belki de böyle bir şey bekliyorsunuz: Burada küçük bold_highlight ile burada bold_highlight". Yani, sadece etiketin içindeki içeriği değiştirmek<B> etiketin kendisiyle birlikte belirttiğimiz dizeye. Ancak, bu tamamen doğru değil, çünkü burası " nicelik açgözlülüğü". Ve sonuç olarak, değiştirme her etiketin içinde değildi<B>, ancak ilk açılış etiketinden en son kapanış etiketine kadar. Açgözlülük budur.

Değiştirmenin istediğimiz gibi gerçekleşmesi için bu kodu nasıl yazacağımız aşağıda açıklanmıştır:

$str = "Küçük astar C gözü pek seçim.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_burada", $str);
yankı $ sonuç_str;
?>

Tek değiştirdiğimiz, tekrar niceleyicisinden sonraki normal ifade " .* "soru işareti, sadece niceleyiciyi "tembel" yapar. Şimdi sonuç şöyle olacak: " Burada küçük bir bold_highlight ve burada bir bold_highlight var. başarmaya çalıştığımız şey buydu.

Umarım sorunu anlamışsınızdır. "açgözlülük" niceleyicileri ve nasıl çalıştıklarını anlayın. Ayrıca bunun basit bir işaretle nasıl düzeltilebileceğini de anladım " ? ". Bu konu gerçekten önemlidir ve normal ifadelere yeni gelen çok sayıda kişi, tekrar niceleyicilerin "açgözlülüğü", bu nedenle, tüm anlamı henüz anlamadıysanız, makaleyi tekrar okuyun.

25.04.2017


Herkese selam!
PHP'nin temellerini sıfırdan öğrenmeye devam ediyoruz!
Bu derste size PHP'de yorumun ne olduğunu anlatacağım ve pratikte yorumunuzu koda yazmaya çalışacağız. Ama hepsi bu kadar değil. Ayrıca kodu nasıl yorumlayacağınızı ve neden yapılması gerektiğini de anlatmak istiyorum.

yorum nedirPHP
yorum yapPHP kodda hızlı yönlendirme ve düzenleme için bir php-geliştirici ipucudur.

PHP'de bir yorum, web sayfasını görüntülemek için açan kullanıcı tarafından görülmez. Kullanıcı aramaya karar verse bile kaynak sayfa, tüm php.ini dosyaları gibi, yorum hala görünmeyecektir.

PHP kod yorumu

PHP kodu için 2 tür yorum vardır:

→ tek astar
→ çok satırlı

⇒ PHP için tek satırlık yorum
Tek satırlık bir yorum için "//" veya "#" karakterlerini kullanın.

Bu karakterlerden sonra, bir satıra yazılan her şey yoksayılacak ve yorum olarak değerlendirilecektir.

Güncellemek için abone olun"; # abone olun (bu bir yorumdur) ?>


güncellemek için abone olun

⇒ PHP için çok satırlı yorum
PHP için çok satırlı bir yorum "/*" ile başlar ve "*/" ile biter.
Bu karakterler arasındaki herhangi bir şey yoksayılacak ve yorum olarak değerlendirilecektir.
Girişte birkaç satır varsa, çok satırlı bir açıklama kullanılır.

Ekranda sadece aşağıdaki metni göreceksiniz:

Merhaba blog okuyucuları - site !!!

Not: Her zaman kodunuza yorum yapın. Kodda yaptığınız her şeyi 1-2 yıl içinde hatırlayacağınızı düşünüyorsanız yanılıyorsunuz, şans çok küçük. Hatırlasanız bile, çalışmak için çok zaman harcamanız gerekecek - neyi, nerede ve neden ...
Geleceği kendiniz için keyifli hale getirin - kodu yorumlayın ve ardından kendinize "TEŞEKKÜR EDERİM!!!" diyeceksiniz.
Kodda yorum bırakın, 1 dakikanızı alacak, ancak gelecekte size koca bir gün kazandıracak.

PHP kodunu yorumlayın

Diyelim ki bir php kodu yazdınız ama nedense koddan 2 satırı silmeniz gerekiyor.
Koddan bir şey çıkarmak için acelem yok, özellikle bu php koduysa, yorumlasam iyi olur. Ve aniden kodu iade etmek gerekecek. Yorumu kaldırmak, yeni bir şekilde kod yazmaktan daha kolaydır.

Kod nasıl yorumlanır?PHP
Tek satırlık yorum içeren bir örnek:

Güncelleme için abone olun"; ?>

Çok satırlı yorum içeren bir örnek.

Adım 1 - XHTML

İlk olarak, yorum işaretlemesine bakalım. Verilen kod sınıf ile PHP tarafından oluşturulan Yorum .

demo.php

Kullanıcı adı
30 Haziran 2010

Yorum metni

div avatar bir bağlantı (kullanıcı yorumu gönderirken URL'yi doğru girdiyse) ve gravatar.com'dan aldığımız avatar resmini içerir. İşaretlemeyi oluşturmaya PHP adımında geri döneceğiz. sonunda takip et div isim div zaman ve yorum metni.

Diğer önemli unsur XHTML'de yorum formudur. ile gönderir POSTALAMAK. URL dışındaki tüm alanlar doldurulmalıdır.

demo.php

Yorum ekle

Form AJAX kullanılarak gönderilir. Kontrol arka planda gerçekleştirilir gönder.php. Her alanın karşılık gelen bir öğesi vardır etiket, öznitelik ayarlı için .

Adım 2 - PHP

PHP veritabanı ile iletişimi yönetir MySQL verileri ve yorum için işaretleme oluşturur. Ayrıca AJAX isteğinin sonunu alır ve yorum verilerini tabloya ekler. yorumlar.

demo.php

/* / Tüm yorumları seçin ve $comments dizisini nesnelerle doldurun */ $comments = array(); $result = mysql_query("Yorumlardan * SİPARİŞ ASC TARAFINDAN SEÇİN"); while($row = mysql_fetch_assoc($result)) ( $comments = new Comment($row); )

MySQL sorgusu tablodan tüm kayıtları seçer ve diziyi doldurur $yorumlar sınıf nesneleri Yorum. Bu dizi, komut dosyası yürütüldüğünde daha fazla çıktı alır.

demo.php

/* / Yorumları tek tek yazdır: */ foreach($comments as $c)( echo $c->markup(); )

Her yorumun bir yöntemi vardır işaretleme(), sayfada görüntülenmeye hazır, doğru HTML kodunu oluşturur. Sınıf ve metot tanımları aşağıdadır.

Sınıf, veritabanından bir satır alır (kullanılarak elde edilir) mysql_fetch_assoc()) ve bir değişkende saklayın $veri. Yalnızca sınıf yöntemi için kullanılabilir.

comment.class.php - Bölüm 1

class Yorum ( private $data = dizi(); public function __construct($row) ( /* / Constructor */ $this->data = $row; ) public function markup() ( /* / Bu yöntem, */ // Her seferinde $this->data yazmaktan kaçınmak için bir takma ad belirleyin: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Yorum eklerken bir URL girildiyse // açılış ve kapanış bağlantı etiketlerini belirleyin $link_open = ""; $link_close = ""; ) // Zamanı UNIX biçimine dönüştürün: $d["dt" ] = strtotime ($d["dt"]); // Varsayılan görüntüyü ayarlamak için gerekli: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; dönüş "
".$link_open." ".$link_close."
".$link_open.$d["ad"].$link_close."
".date("d M Y",$d["dt"])."

".$d["gövde"]."

"; }

Komut dosyası, yorumlarda avatarı temsil etmek için gravatar kullanır. Gravatar, bir avatarı bir e-posta adresiyle eşleştiren çok kullanışlı bir hizmettir. Avatar görüntüsü, kodlanmış işlevi geçerek kolayca elde edilebilir. md5() gravatar.com'daki e-posta adresiniz.

Komut dosyası yürütüldüğü URL'yi belirler ve görüntünün tam adresini belirler. default_avatar.gif. Bu resim, md5 karmasıyla birlikte iletilir ve verilen e-posta adresi için avatar bulunamazsa alternatif bir resim görüntülenir.

comment.class.php - Bölüm 2

public static function valide(&$arr) ( /* / Bu metot AJAX ile gönderilen veriyi doğrulamak için kullanılır. / / Verinin geçerliliğine göre true/false döndürür ve / geçen $arr dizisini doldurur. data veya ile bir parametre olarak */ $errors = array(); $data = array(); // PHP 5.2.0'da tanıtılan filter_input işlevini kullanın if(!($data["email"] = filter_input(INPUT_POST) ,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Lütfen geçerli bir E-posta girin."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // URL alanına geçersiz bir URL girildiyse, // URL girilmemiş gibi davranın: $url = ""; ) // Geri arama işlevli bir filtre kullanın: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Lütfen yorum metnini girin."; ) if(!( $data["name"] = filter_input(INPUT_POST,"name",FILTER_CALLBACK,array("options"=>"Comment::validate_text"))))) ( $errors["name"] = "Lütfen bir isim giriniz."; ) if(!empty($errors)( // Hata varsa, $errors dizisini $arr'a kopyalayın: $arr = $errors; false döndürün; ) // Giriş doğruysa, verileri temizleyin ve $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // e-posta küçük harf olmalıdır: $arr["email"] = strtolower( trim($ dizi["e-posta"])); doğru dönüş; )

Yöntem doğrulamak()(ayrıca bir sınıfın parçası) olarak tanımlanır statik. Bu, doğrudan yapı ile çağrılabileceği anlamına gelir. yorum::doğrula(), bir sınıf nesnesi oluşturmadan. Bu yöntem, AJAX'tan geçirilen verileri doğrular.

Yöntem kullanır yeni özellik kullanılabilir hale gelen filtre PHP 5.2.0. Bu şekilde betiğe iletilen verileri kolayca kontrol edebilir ve filtreleyebiliriz. Örneğin, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) kontrol ettiğimiz anlamına gelir $_POST["url"] doğru URL. Eğer öyleyse, işlev değişkenin değerini döndürür, aksi halde değeri döndürür YANLIŞ.

Böyle bir işlevi kullanmadan önce, verileri doğrulamak için düzenli ifadeler kullanmak gerekliydi (bir dizi yapı kullanarak). eğer). Ek bir avantaj, herhangi bir özel dönüşüm yapmadan önce verileri almamızdır.

Ek veri değişiklikleri gerçekleştirecek bir işlev tanımlamak da mümkündür.

comment.class.php - Bölüm 3

private static function valid_text($str) ( /* / Bu yöntem FILTER_CALLBACK olarak kullanılır */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etc) ve // ​​yeni satır karakterini bir etikete dönüştürün
: $str = nl2br(htmlspecialchars($str)); // Kalan yeni satırları kaldır $str = str_replace(array(chr(10),chr(13)),"",$str); dönüş $str; )

Son Yöntem metni doğrulamak iki çağrıda dönüş işlevi olarak geçti filtre_girişi. XSS saldırılarını etkili bir şekilde engelleyen tüm özel HTML karakterlerini dönüştürür. Ayrıca yeni satırları etiketlerle değiştirir
.

gönder.php

/* / Bu dizi, betiğe iletilen verilerle / veya hata mesajlarıyla doldurulacaktır. /*/ $arr = dizi(); $validates = Yorum::validate($arr); if($validates) ( /* Pekala, veritabanına veri ekleyin: */ mysql_query(" INSERT INTO comments(ad,url,email,body) VALUES ("".$arr["ad"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / $arr içindeki veriler mysql sorgusu için hazırlanmıştır, / ama onu göstermemiz gerekiyor, bu yüzden / dizideki tüm öğeleri hazırlıyoruz: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Az önce eklenen yorumun işaretini yazdır: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Hata mesajlarını göster */ echo "("status":0,"errors":". json_encode($arr ).")"; )

gönder.php AJAX isteği yoluyla verilerden bir yorum getirir. Bunu doğrular ve katıştırılmış bir yorumla birlikte XHTML işaretlemesi veya bir hata listesi içeren bir JSON nesnesi çıkarır. jQuery kullanım özelliği durum neyin görüntülenmesi gerektiğini belirlemek için - bir hata mesajı veya sayfaya yorum işaretlemesi ekleme.

Aşağıda iki örnek var.

Başarılı yanıt

("status": 1, "html": "Yorumun Html Kodu Buraya Geliyor..." )

Mülk html yorum kodunu içerir.

Hata yanıtı

("status": 0, "hatalar": ("email": "Lütfen geçerli bir E-posta giriniz.", "body": "Lütfen bir yorum gövdesi giriniz.", "name": "Lütfen bir isim giriniz." ) )

Bir hata olduğunda, jQuery, error nesnesi içinde döngüye girer ve hatalı alanların yanında mesajlar görüntüler.

Adım 3 - CSS

Artık işaretleme doğru bir şekilde oluşturulduğuna ve sayfada görüntülendiğine göre, stillendirmeye geçebiliriz.

styles.css - Bölüm 1

.comment, #addCommentContainer( /* Yorumlar için stil */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px düz beyaz; color:#888; kenar boşluğu:25 piksel; / * CSS3 yuvarlatılmış köşeler ve gölgeler */ -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; -moz-box-shadow:2px 2px 0 #c2c2c2; -webkit-box- shadow:2px 2px 0 #c2c2c2; box-shadow:2px 2px 0 #c2c2c2; ) .comment .avatar( /* / Avatar kesinlikle konumlandırılmıştır. / Yorum div için dış ofset /*/ height:50px; left:- 70 piksel; konum :mutlak; genişlik:50 piksel; arka plan:url("img/default_avatar.gif") tekrarsız #fcfcfc; /* Dikey olarak ortala: */ margin-top:-25px; üst:%50; -moz- kutu gölgesi :1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; kutu gölgesi:1px 1px 0 #c2c2c2; )

div .Yorum Ve #addCommentContainer aynı stile sahip. Köşeleri yuvarlamak ve gölgeleri yansıtmak için birkaç CSS3 kuralı kullanılır.

styles.css - Bölüm 2

.comment .avatar img( display:block; ) .comment .name( font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date( font-size:10px; padding:6px 0; pozisyon:mutlak; sağ:15px; top:10px; color:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; line-height:1.5; overflow-x:hidden; ) #addCommentContainer girişi, # addCommentContainer textarea( /* Giriş stili */ display:block; border:1px solid #ccc; margin:5px 0 5px; padding:3px; font-size:12px; color:#555; font-family:Arial, Helvetica, sans -serif; ) #addCommentContainer textarea( width:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* "Gönder" butonu " */ background-color:#58B9EB; border:1px solid #40A2D4; color:#FFFFFF; imleç:işaretçi; font-family:"Myriad Pro",Arial,Helvetica,sans-serif; font-size:14px; font -ağırlık:kalın; dolgu:4px; kenar boşluğu:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #submit:hover( arka plan rengi:# 80cdf5; kenarlık rengi:#52b1e2; )

İkinci bölümde, yorum ve form öğeleri için stilleri ayarlıyoruz. Seçiciyi not edelim giriş, bir özniteliğe bağlı olarak öğeleri vurgulayan tip.

Adım 4 - jQuery

Şimdi jQuery'e geçelim.

komut dosyası.js

$(document).ready(function()( /* Aşağıdaki kod yalnızca DOM yüklendikten sonra yürütülür */ /* Bu işaret, birden çok yorumun gönderilmesini engeller: */ var Working = false; /* Form gönderimini yakalamak olay: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(çalışıyor) false döndürür; çalışıyor = true; $("#submit").val("Çalışıyor.. "); $("span .error").remove(); /* Send.php için form alanlarını gönderin: */ $.post("submit.php",$(this).serialize(),function(msg) )( çalışıyor = yanlış; $ ("#gönder").val("Gönder"); if(msg.status)( /* / Ekleme başarılıysa, sayfadaki sonuncunun altına bir yorum ekleyin / slideDown efekti /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Varsa hatalardır, / msg.errors nesnesinde dolaşın ve bunları /*/ $.each(msg.errors,function(k,v)( $("label").append(" sayfasına yazdırın) "+v+""); )); ) ),"json"); )); ));

Bir işlev çağrısı kullanıyoruz $(belge).hazır() Bir işlevi olaya bağlayan bir . Değişken çalışma bir AJAX isteğinin devam ettiğini gösteren bir bayrak görevi görür (böylece aynı yorumun tekrarlanmasını önler).

POST AJAX isteği için dönüş işlevinde özelliği kontrol ediyoruz durum yorumun başarıyla eklenip eklenmediğini belirlemek için. Evet ise, ortaya çıkan işaretlemeyi animasyonlu son yorumdan sonra sayfaya ekliyoruz. kayıp düşmek.

Sorun varsa, hata mesajlarını ekleyerek görüntüleriz. açıklık hata karşılık gelen öğeye etiket(öğe özelliği etiket içerir İD hatası olan giriş).

Hazır!

Çözüm

Komut dosyasını sunucunuzda çalıştırmak için bir tablo oluşturmanız gerekir. yorumlar MySQL veritabanınızda. Dosyadan SQL kodu ile yapabilirsiniz tablo.sql, phpMyAdmin'deki SQL sekmesine girilmelidir. Ardından, dosyada MySQL veritabanı bağlantı parametrelerini ayarlamanız gerekir. connect.php .

PHP'deki yorumlar, HTML'de kullanılan yorumlara benzer. PHP sözdiziminde yorumlar her zaman özel bir karakter dizisiyle başlar ve bu özel karakterler arasında görünen herhangi bir metin yorumlayıcı tarafından dikkate alınmaz.

HTML'de bir yorumun temel amacı, sitenizin kaynak kodunu görüntüleyebilen geliştiricilere bir not görevi görmektir. PHP yorumları, ziyaretçilere gösterilmeyecekleri için farklılık gösterir. PHP yorumlarını görmenin tek yolu dosyayı düzenlemek için açmaktır. Bu, PHP yorumlarını yalnızca PHP programcıları için yararlı kılar.

HTML'de yorumların nasıl yapıldığını unuttuysanız veya bilmiyorsanız, aşağıdaki örneğe bakın.

php yorum sözdizimi: tek satırlık yorum

Html'de yalnızca bir tür yorum bulunurken, PHP'de iki tür yorum vardır. Ele alacağımız ilk tür, tek satırlık yorumdur. Yani, tercümana yorumların sağındaki o satırda ne olup bittiğini yoksaymasını söyleyen bir yorum. Bu yorumu kullanmak için "//" veya "#" karakterlerini kullanın ve sağdaki tüm metinler PHP yorumlayıcısı tarafından yok sayılır.

Psst...PHP yorumlarımı göremezsiniz!"; // yankı "hiçbir şey"; // echo "Benim adım Humperdinkle!"; # echo "Ben de bir şey yapmıyorum"; ?>

Sonuç:

Selam Dünya! Psst...PHP yorumlarımı göremezsiniz!

Özel açıklama karakterleriyle yorumladığımız için yankı komutlarımızdan birkaçının işlenmediğini unutmayın. Bu tür yorumlar genellikle karmaşık ve anlaşılmaz kodlar hakkında hızlıca yazmak veya PHP kodunun bir satırını geçici olarak kaldırmak (hata ayıklama amacıyla) için kullanılır.

php yorum sözdizimi: çok satırlı yorum

HTML yorumları gibi, PHP'deki çok satırlı yorumlar da büyük kod bloklarına yorum yapmak veya birden çok satıra yorum yazmak için kullanılabilir. PHP'de çok satırlı yorumlar "/*" ile başlar ve "*/" ile biter. Bu karakterler arasındaki herhangi bir şey dikkate alınmayacaktır.

Sonuç.