Neustrašivi komentari php. Jednostavan sistem komentarisanja koji koristi AJAX. php sintaksa komentara: komentar u jednom redu

Jednom sam pisao o . Dakle, razmatrali smo samo tu " pohlepan"predstavnici. Međutim, ne uvijek njihovi " pohlepa"Pomaže nam, vrlo često boli. Malo niže ću pokazati primjer gdje se jasno vidi šta ponekad rade, a i pokazati kako da umanje svoj žar i kvantifikatori ponavljanja su "lijeni".

Pogledajmo jednostavan i već klasičan primjer:

$str = "Malo linija c bold odabir.";
.*<\/b>
echo $result_str;
?>

Možda očekujete nešto ovako: Mali bold_highlight ovdje sa bold_highlight ovdje". To jest, samo zamjena sadržaja unutar oznake<b> na string koji smo naveli zajedno sa samom oznakom. Međutim, to nije sasvim tačno, jer je tu " pohlepa za kvantifikatorima". I kao rezultat toga, zamjena nije bila unutar svake oznake<b>, ali od prve početne oznake do poslednje završne oznake. Ovo je pohlepa.

Evo kako napisati ovaj kod tako da se zamjena dogodi onako kako želimo:

$str = "Malo linija c bold odabir.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $result_str;
?>

Sve što smo promijenili je regex nakon kvantifikatora ponavljanja " .* "znak pitanja, što je pravedno čini kvantifikator "lijenim". Sada će rezultat biti: " Mali bold_highlight ovdje sa podebljanim_highlightom ovdje.što smo i pokušavali postići.

Zaista se nadam da razumiješ problem. kvantifikatori "pohlepe". i razumiju kako rade. I također shvatio kako se to može popraviti jednostavnim znakom " ? ". Ova tema je zaista važna, a veliki broj početnika u regularnim izrazima pravi iste greške vezane za "pohlepa" kvantifikatora ponavljanja, pa ako još niste shvatili cijelo značenje do kraja, onda ponovo pročitajte članak.

25.04.2017


Zdravo!
Nastavljamo da učimo osnove PHP-a od nule!
U ovoj lekciji ću vam reći šta je komentar u PHP-u iu praksi ćemo pokušati da zapišemo vaš komentar u kodu. Ali to nije sve. Takođe želim da vam kažem kako da komentarišete kod i zašto bi to uopšte trebalo da se radi.

U čemu je komentarPHP
KomentirajPHP je php-developer hint za brzu orijentaciju u kodu, kao i za uređivanje.

Komentar u PHP-u nije vidljiv korisniku koji je otvorio web stranicu za pregled. Čak i ako korisnik odluči pogledati izvor stranici, komentar i dalje neće biti vidljiv, kao i svi php.

Komentar PHP koda

Postoje 2 vrste komentara za PHP kod:

→ jednoliner
→ višelinijski

⇒ Komentar u jednom redu za PHP
Za komentar u jednom retku koristite znakove "//" ili "#"

Nakon ovih znakova, sve što je napisano u jednom redu bit će zanemareno i tretirano kao komentar.

Pretplatite se na ažuriranje"; # pretplatite se (ovo je komentar) ?>


Pretplatite se na ažuriranje

⇒ Višeredni komentar za PHP
Višelinijski komentar za PHP počinje sa "/*" i završava se sa "*/".
Sve između ovih znakova će biti zanemareno i tretirano kao komentar.
Komentar u više redova se koristi ako u unosu postoji više redova.

Na ekranu ćete vidjeti samo sljedeći tekst:

Pozdrav čitateljima bloga - stranice !!!

P.S.: Uvijek komentirajte svoj kod. Ako mislite da ćete se za 1-2 godine sjetiti svega što ste radili u kodu, varate se, šansa je vrlo mala. Čak i ako se sećate, moraćete da provedete dosta vremena učeći - šta, gde i zašto...
Učinite budućnost ugodnom za sebe - prokomentirajte kod i tada ćete sebi reći "HVALA!!!".
Ostavite komentar u kodu, to će vam oduzeti 1 minut vremena, ali će vam uštedjeti cijeli dan u budućnosti.

Komentirajte PHP kod

Recimo da ste napisali php kod, ali iz nekog razloga morate ukloniti 2 reda iz koda.
Ne žurim da uklanjam nešto iz koda, pogotovo ako je u pitanju php kod, bolje da to prokomentarišem. I odjednom će biti potrebno vratiti kod. Lakše je dekomentirati nego pisati kod na nov način.

Kako komentirati kodPHP
Primjer sa komentarom u jednom redu:

Pretplatite se na ažuriranje"; ?>

Primjer s komentarom u više redaka.

Korak 1 - XHTML

Prvo, pogledajmo oznaku komentara. Dati kod generira PHP sa klasom Komentar .

demo.php

Korisničko ime
30. juna 2010

Tekst komentara

div avatar sadrži link (ako je korisnik unio ispravan URL prilikom postavljanja komentara) i sliku avatara koju dobijamo sa gravatar.com. Vratićemo se na generisanje markupa u PHP koraku. Na kraju slijedi div ime div vrijeme i tekst komentara.

Ostalo važan element u XHTML-u je forma komentara. Ona šalje sa POŠTA. Sva polja osim URL-a moraju biti popunjena.

demo.php

Dodajte komentar

Obrazac se šalje pomoću AJAX-a. Provjera se vrši u pozadini submit.php. Svako polje ima odgovarajući element etiketa, sa skupom atributa za .

Korak 2 - PHP

PHP upravlja komunikacijom sa bazom podataka MySQL podaci i generira oznake za komentar. Takođe dobija kraj AJAX zahteva i ubacuje podatke komentara u tabelu komentari.

demo.php

/* / Odaberite sve komentare i popunite niz $comments sa objektima */ $comments = array(); $result = mysql_query("SELECT * FROM comments ORDER BY ID ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = novi komentar($red); )

MySQL upit bira sve zapise iz tabele i popunjava niz $comments objekti klase komentar. Ovaj niz se dalje prikazuje kada se skripta izvrši.

demo.php

/* / Ispis komentara jedan po jedan: */ foreach($comments kao $c)( echo $c->markup(); )

Svaki komentar ima metodu markup(), koji generiše ispravan HTML kod, spreman za prikazivanje na stranici. Slijede definicije klasa i metoda.

Klasa prima red iz baze podataka (dobije se pomoću mysql_fetch_assoc()) i pohraniti ga u varijablu $data. Dostupan je samo metodi klase.

comment.class.php - Dio 1

class Komentar ( private $data = array(); javna funkcija __construct($row) ( /* / Konstruktor */ $this->data = $row; ) javna funkcija markup() ( /* / Ova metoda daje XHTML oznake za */ // Postavite pseudonim kako biste izbjegli pisanje $this->data svaki put: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Ako je URL unet prilikom dodavanja komentara, // odredite oznaku za otvaranje i zatvaranje veze $link_open = ""; $link_close = ""; ) // Pretvorite vrijeme u UNIX format: $d["dt" ] = strtotime ($d["dt"]); // Potrebno za postavljanje zadane slike: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; vrati "
".$link_open." ".$link_close."
".$link_open.$d["name"].$link_close."
".date("d M Y",$d["dt"])."

".$d["tijelo"]."

"; }

Skripta koristi gravatar za predstavljanje avatara u komentarima. Gravatar je vrlo korisna usluga koja povezuje avatar s adresom e-pošte. Slika avatara se može lako dobiti prenošenjem kodirane funkcije md5() vašu email adresu na gravatar.com.

Skripta određuje URL na kojem se izvršava i određuje tačnu adresu slike default_avatar.gif. Ova slika se prosljeđuje zajedno sa md5 hešom, a ako nije pronađen avatar za datu adresu e-pošte, tada će se prikazati alternativna slika.

comment.class.php - Dio 2

javna statička funkcija validate(&$arr) ( /* / Ova metoda se koristi za provjeru valjanosti podataka poslatih putem AJAX-a. / / Vraća true/false u zavisnosti od valjanosti podataka i popunjava / $arr niz, koji se prosljeđuje kao parametar sa podacima ili */ $errors = array(); $data = array(); // Koristite funkciju filter_input uvedenu u PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Molimo unesite ispravan e-mail."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Ako je u URL polje unet nevažeći URL, // ponašajte se kao da URL nije unet: $url = ""; ) // Koristite filter sa funkcijom povratnog poziva: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))))) ( $errors["body"] = "Molimo unesite tekst komentara."; ) if(!( $data["name"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("options"=>"Komentar::validate_text")))) ( $errors["name"] = "Molimo unesite ime."; ) if(!empty($errors))( // Ako postoje greške, kopirajte niz $errors u $arr: $arr = $errors; vrati false; ) // Ako je unos ispravan, očistite podatke i kopirajte ga u $arr : foreach($data kao $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // email mora biti malim slovima: $arr["email"] = strtolower( trim($ arr["e-pošta"])); return true; )

Metoda validate()(također dio klase) definira se kao statički. To znači da se može pozvati direktno sa konstrukcijom komentar::validate(), bez kreiranja objekta klase. Ova metoda potvrđuje podatke koji su proslijeđeni kroz AJAX.

Metoda koristi nova funkcija filter, koji je postao dostupan u PHP 5.2.0. Na ovaj način možemo lako provjeriti i filtrirati podatke koji se prosljeđuju skripti. Na primjer, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) znači da proveravamo da li $_POST["url"] ispravan URL. Ako je tako, onda funkcija vraća vrijednost varijable, u suprotnom vraća vrijednost false.

Prije korištenja takve funkcije, bilo je potrebno koristiti regularne izraze za provjeru valjanosti podataka (koristeći niz konstrukcija ako). Dodatna prednost je što podatke dobijamo prije nego što izvršimo bilo kakvu specifičnu transformaciju.

Također je moguće definirati funkciju koja će vršiti dodatne izmjene podataka.

comment.class.php - Dio 3

privatna statička funkcija validate_text($str) ( /* / Ova metoda se koristi kao FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. itd.) i pretvoriti // znak novog reda u oznaku
: $str = nl2br(htmlspecialchars($str)); // Uklonite sve preostale nove redove $str = str_replace(array(chr(10),chr(13)),"",$str); return $str; )

Poslednji metod validate_text proslijeđena kao povratna funkcija u dva poziva filter_input. Konvertuje sve posebne HTML znakove, što efikasno blokira XSS napade. Također zamjenjuje nove redove oznakama
.

submit.php

/* / Ovaj niz će biti popunjen ili podacima / koji su proslijeđeni skripti, / ili porukama o grešci. /*/ $arr = array(); $validates = Komentar::validate($arr); if($validates) ( /* U redu, ubacite podatke u bazu podataka: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt"); "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Podaci u $arr su pripremljeni za mysql upit, / ali moramo ih prikazati, tako da / pripremamo sve elemente u nizu: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Ispisati oznaku komentara upravo umetnutog: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Prikaži poruke o grešci */ echo "("status":0,"errors":". json_encode($arr).")"; )

submit.php dohvaća komentar iz podataka putem AJAX zahtjeva. Provjerava ga i daje JSON objekt koji sadrži ili XHTML oznaku s ugrađenim komentarom ili listu grešaka. jQuery koristi svojstvo status da odredite šta treba da se prikaže - ili poruka o grešci ili dodavanje oznake komentara na stranicu.

U nastavku su dva primjera.

Uspješan odgovor

( "status": 1, "html": "Html kod komentara dolazi ovdje..." )

Nekretnina html sadrži šifru komentara.

Odgovor na grešku

( "status": 0, "errors": ( "email": "Molimo unesite važeću e-poštu.", "body": "Molimo unesite tijelo komentara.", "name": "Molimo unesite ime." ) )

Kada dođe do greške, jQuery petlja kroz objekat greške i prikazuje poruke pored polja koja imaju greške.

Korak 3 - CSS

Sada kada je oznaka ispravno generirana i prikazana na stranici, možemo prijeći na stiliziranje.

styles.css - 1. dio

.comment, #addCommentContainer( /* Stil za komentare */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px puna bela; boja:#888; margin-bottom:25px; / * CSS3 zaobljeni uglovi i sjene */ -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 je pozicioniran apsolutno. / Spoljašnji pomak za komentar div /*/ visina:50px; lijevo:- 70px; pozicija :apsolutna; širina:50px; background:url("img/default_avatar.gif") bez ponavljanja #fcfcfc; /* Centar okomito: */ margin-top:-25px; vrh:50%; -moz- box-shadow :1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; box-shadow:1px 1px 0 #c2c2c2; )

div .comment i #addCommentContainer imaju isti stil. Nekoliko CSS3 pravila se koristi za zaokruživanje uglova i odražavanje senki.

styles.css - 2. dio

.comment .avatar img( display:block; ) .comment .name(font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date(font-size:10px; padding:6px 0; position:apsolute; right:15px; top:10px; color:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; line-height:1.5; overflow-x:hidden; ) #addCommentContainer input, # addCommentContainer textarea( /* Stil unosa */ display:block; border:1px solid #ccc; margin:5px 0 5px; padding:3px; font-size:12px; boja:#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( /* dugme "Pošalji" " */ background-color:#58B9EB; border:1px solid #40A2D4; color:#FFFFFF; cursor:pointer; font-family:"Myriad Pro",Arial,Helvetica,sans-serif; font-size:14px; font -weight:bold; padding:4px; margin-top:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #s ubmit:hover( background-color:#80cdf5; border-color:#52b1e2; )

U drugom dijelu postavljamo stilove za komentare i elemente forme. Zabilježimo selektora unos, koji ističe elemente ovisno o atributu tip.

Korak 4 - jQuery

Sada pređimo na jQuery.

script.js

$(document).ready(function()( /* Sljedeći kod se izvršava tek nakon što se DOM učita */ /* Ova zastavica sprječava slanje više komentara: */ var working = false; /* Hvatanje obrasca za slanje događaj: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) vrati false; work = true; $("#submit").val("Working.. "); $("span .error").remove(); /* Pošaljite polja obrasca u submit.php: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Ako je umetanje bilo uspješno, dodajte komentar / ispod posljednjeg na stranici sa efekat slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Ako postoji su greške, prođite kroz objekt / msg.errors i iznesite ih na stranicu /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Koristimo poziv funkcije $(document).ready() A koji vezuje funkciju za događaj. Varijabilna radi djeluje kao zastavica koja signalizira da je AJAX zahtjev u toku (čime se sprječava dupliciranje istog komentara).

U povratnoj funkciji za POST AJAX zahtjev provjeravamo svojstvo status da utvrdite da li je komentar uspješno umetnut. Ako je odgovor da, rezultat dodajemo na stranicu nakon posljednjeg komentara s animacijom slideDown.

Ako je bilo problema, prikazujemo poruke o grešci dodavanjem raspon greška na odgovarajući element etiketa(atribut elementa etiketa sadrži id unos koji ima grešku).

Spremni!

Zaključak

Da biste pokrenuli skriptu na vašem serveru, potrebno je da kreirate tabelu komentari u vašoj MySQL bazi podataka. To možete učiniti pomoću SQL koda iz datoteke table.sql, koji se mora unijeti na kartici SQL u phpMyAdmin. Zatim morate postaviti parametre veze MySQL baze podataka u datoteci connect.php .

Komentari u PHP-u su slični komentarima koji se koriste u HTML-u. U PHP sintaksi, komentari uvijek počinju posebnim nizom znakova, a tumač će zanemariti svaki tekst koji se pojavi između ovih specijalnih znakova.

U HTML-u, glavna svrha komentara je da služi kao bilješka programerima koji mogu vidjeti izvorni kod vaše stranice. PHP komentari se razlikuju po tome što neće biti prikazani posjetiteljima. Jedini način da vidite PHP komentare je da otvorite datoteku za uređivanje. Ovo čini PHP komentare korisnim samo za PHP programere.

U slučaju da ste zaboravili ili niste znali kako se komentari prave u HTML-u, pogledajte primjer ispod.

php sintaksa komentara: komentar u jednom redu

Dok html ima samo jednu vrstu komentara, PHP ima dva tipa. Prva vrsta o kojoj ćemo razgovarati je komentar u jednom redu. To jest, komentar koji govori tumaču da ignoriše sve što se dešava u tom redu desno od komentara. Da biste koristili ovaj komentar, koristite znakove "//" ili "#" i PHP interpreter će zanemariti sav tekst sa desne strane.

Psst...Ne možete vidjeti moje PHP komentare!"; // echo "ništa"; // echo "Moje ime je Humperdinkle!"; # echo "Ni ja ne radim ništa"; ?>

rezultat:

Zdravo svijete! Psst...Ne možete vidjeti moje PHP komentare!

Imajte na umu da nekoliko naših eho komandi nije obrađeno jer smo ih prokomentirali posebnim znakovima komentara. Ova vrsta komentara se često koristi za brzo pisanje o složenom i zamagljenom kodu ili za privremeno uklanjanje reda PHP koda (u svrhu otklanjanja grešaka).

php sintaksa komentara: višelinijski komentar

Kao i HTML komentari, višelinijski komentari u PHP-u se mogu koristiti za komentarisanje velikih blokova koda ili za pisanje komentara na više redova. Višeredni komentari u PHP-u počinju sa "/*" i završavaju sa "*/". Sve između ovih znakova bit će zanemareno.

Rezultat.