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

Jednom sam pisao o. Dakle, samo smo tamo razmatrali " pohlepan"predstavnici. Međutim, ne uvijek njihovi " pohlepa"Pomaže nam, vrlo često šteti. Malo niže pokazat ću primjer na kojem se jasno vidi što oni ponekad rade, a također ću pokazati kako smanjiti njihov žar i učiniti kvantifikatori ponavljanja su "lijeni".

Pogledajmo jednostavan i već klasičan primjer:

$str = "Mala crta c podebljano izbor.";
.*<\/b>
echo $result_str;
?>

Možda očekujete nešto poput ovoga: Mali bold_highlight ovdje s bold_highlight ovdje". Odnosno, samo zamjena sadržaja unutar oznake<b> na niz koji smo naveli zajedno sa samom oznakom. Međutim, to nije sasvim točno, budući da je ovdje " pohlepa kvantifikatora". Kao rezultat toga, zamjena nije bila unutar svake oznake<b>, ali od prve početne oznake do posljednje završne oznake. To je ono što je pohlepa.

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

$str = "Mala crta c podebljano izbor.";
$result_str = preg_replace("/ .*?<\/b>/i", "podebljano_istaknuto_ovdje", $str);
echo $result_str;
?>

Sve što smo promijenili je regularni izraz nakon kvantifikatora ponavljanja " .* "upitnik, što je samo čini kvantifikator "lijenim". Sada će rezultat biti: " Mali bold_highlight ovdje s bold_highlight ovdje.što smo i pokušavali postići.

Stvarno se nadam da razumijete problem. kvantifikatori "pohlepe". i razumjeti kako rade. I također shvatio kako se to može popraviti jednostavnim znakom " ? ". Ova je tema doista važna i velik broj novopridošlica s regularnim izrazima čini iste pogreške u vezi s "pohlepa" kvantifikatora ponavljanja, pa ako još niste shvatili cijelo značenje do kraja, ponovno pročitajte članak.

25.04.2017


Bok svima!
Nastavljamo učiti osnove PHP-a od nule!
U ovoj lekciji ću vam reći što je komentar u PHP-u iu praksi ćemo pokušati napisati vaš komentar u kodu. Ali to nije sve. Također vam želim reći kako komentirati kod i zašto bi to uopće trebalo učiniti.

Što je komentar uPHP
Ostavite komentarPHP je php-developer savjet za brzo snalaženje 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 stranicu, komentar i dalje neće biti vidljiv, kao i svi php.

Komentar PHP koda

Postoje 2 vrste komentara za PHP kod:

→ jednolinijski
→ višeredni

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

Nakon ovih znakova, sve što je napisano u jednom retku 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šeredni komentar za PHP počinje s "/*" i završava s "*/".
Sve između ovih znakova bit će zanemareno i tretirano kao komentar.
Komentar s više redaka koristi se ako unos ima više redaka.

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 sjećati svega što ste radili u kodu, varate se, šansa je vrlo mala. Čak i ako se sjećate, morat ćete potrošiti puno vremena na proučavanje - što, gdje i zašto ...
Učinite budućnost ugodnom za sebe - komentirajte kod i tada ćete sebi reći "HVALA!!!".
Ostavite komentar u kodu, oduzet će vam 1 minutu 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 retka iz koda.
Ne žuri mi se maknuti nešto iz koda, pogotovo ako je u pitanju php kod, bolje da to komentiram. I odjednom će biti potrebno vratiti kod. Lakše je odkomentirati nego pisati kod na nov način.

Kako komentirati kodPHP
Primjer s komentarom u jednom retku:

Pretplatite se na ažuriranje"; ?>

Primjer s višerednim komentarom.

Korak 1 - XHTML

Prvo, pogledajmo oznaku komentara. Dani kod generiran PHP-om s klasom Komentar .

demo.php

Korisničko ime
30. lipnja 2010

Tekst komentara

div avatar sadrži poveznicu (ako je korisnik unio točan URL prilikom postavljanja komentara) i sliku avatara koju dobivamo s gravatar.com. Vratit ćemo se generiranju markupa u PHP koraku. Na kraju slijedi div Ime div vrijeme i tekst komentara.

ostalo važan element u XHTML-u je obrazac za komentar. Ona šalje sa sobom POST. Sva polja osim URL-a moraju biti ispunjena.

demo.php

Dodaj komentar

Obrazac se podnosi pomoću AJAX-a. Provjera se izvodi u pozadini podnijeti.php. Svako polje ima odgovarajući element označiti, s postavljenim atributima za .

Korak 2 - PHP

PHP upravlja komunikacijom s bazom podataka MySQL podaci i generira oznake za komentar. Također dobiva kraj AJAX zahtjeva i umeće podatke komentara u tablicu komentari.

demo.php

/* / Odaberite sve komentare i popunite polje $comments s objektima */ $comments = array(); $result = mysql_query("SELECT * FROM komentara ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = new Comment($row); )

MySQL upit odabire sve zapise iz tablice i popunjava niz $komentari objekti klase komentar. Ovaj niz se dalje ispisuje kada se skripta izvrši.

demo.php

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

Svaki komentar ima metodu markup(), koji generira ispravan HTML kod, spreman za prikaz na stranici. Slijede definicije klasa i metoda.

Klasa prima red iz baze podataka (dobiven pomoću mysql_fetch_assoc()) i pohranite ga u varijablu $podaci. Dostupan je samo metodi klase.

comment.class.php - 1. dio

klasa Komentar ( privatni $data = array(); javna funkcija __construct($row) ( /* / Konstruktor */ $this->data = $row; ) javna funkcija markup() ( /* / Ova metoda daje XHTML oznaku za */ // Postavite alias kako biste izbjegli pisanje $this->data svaki put: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Ako je URL unesen prilikom dodavanja komentara, // odredite početnu i završnu oznaku 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"; return "
".$link_open." ".$link_close."
".$link_open.$d["ime"].$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 može se lako dobiti prolaskom kodirane funkcije md5() svoju adresu e-pošte na gravatar.com.

Skripta određuje URL na kojem se izvršava i određuje točnu adresu slike zadani_avatar.gif. Ova se slika prosljeđuje zajedno s md5 hashom, a ako nije pronađen avatar za danu adresu e-pošte, prikazat će se alternativna slika.

comment.class.php - 2. dio

javna statička funkcija validate(&$arr) ( /* / Ova se metoda koristi za provjeru valjanosti podataka poslanih putem AJAX-a. / / Vraća true/false ovisno o valjanosti podataka i popunjava / polje $arr koje se prosljeđuje kao parametar s podacima ili */ $errors = array(); $data = array(); // Koristite funkciju filter_input uvedenu u PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST) ,"e-pošta ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Molimo unesite valjanu e-poštu."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Ako je nevažeći URL unesen u URL polje, // ponašajte se kao da URL nije unesen: $url = ""; ) // Koristite filtar s 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"=>"Comment::validate_text")))) ( $errors["name"] = "Molimo unesite ime."; ) if(!empty($errors))( // Ako postoje pogreške, kopirajte polje $errors u $arr: $arr = $errors; return false; ) // Ako je unos točan, očistite podatke i kopirajte ga u $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // e-pošta mora biti mala slova: $arr["email"] = strtolower( trim($ arr["e-mail"])); vratiti istinito; )

metoda potvrdi()(također dio klase) definiran je kao statički. To znači da se može pozvati izravno s konstrukcijom komentar::potvrdi(), bez stvaranja objekta klase. Ova metoda provjerava valjanost podataka koji se prosljeđuju kroz AJAX.

Metoda koristi nova značajka filtar, koji je postao dostupan u PHP 5.2.0. Na taj način možemo jednostavno provjeriti i filtrirati podatke koji se prosljeđuju skripti. Na primjer, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) znači da provjeravamo je li $_POST["url"] ispravan URL. Ako je tako, tada funkcija vraća vrijednost varijable, inače vraća vrijednost lažno.

Prije korištenja takve funkcije bilo je potrebno koristiti regularne izraze za provjeru valjanosti podataka (koristeći niz konstrukata ako). Dodatna prednost je što dobivamo podatke prije bilo kakvih specifičnih transformacija.

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

comment.class.php - 3. dio

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

Posljednja metoda potvrdi_tekst proslijeđeno kao povratna funkcija u dva poziva filter_input. Pretvara sve posebne HTML znakove, što učinkovito blokira XSS napade. Također zamjenjuje nove retke s oznakama
.

podnijeti.php

/* / Ovaj niz će biti ispunjen podacima / koji se prosljeđuju skripti / ili porukama o pogreškama. /*/ $arr = array(); $validates = Komentar::validate($arr); if($validates) ( /* U redu, umetnite podatke u bazu podataka: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt "] = datum("r",vrijeme()); $arr["id"] = mysql_insert_id(); /* / Podaci u $arr su pripremljeni za mysql upit, / ali ih moramo prikazati, pa / pripremamo sve elemente u nizu: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Ispis oznake upravo umetnutog komentara: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Prikaži poruke o pogrešci */ echo "("status":0,"greške":". json_encode($arr ).")"; )

podnijeti.php dohvaća komentar iz podataka putem AJAX zahtjeva. Provjerava ga i ispisuje JSON objekt koji sadrži XHTML oznake s ugrađenim komentarom ili popis pogrešaka. jQuery koristi svojstvo status kako biste odredili što bi trebalo biti prikazano - ili poruku o pogrešci ili dodavanje oznake komentara na stranicu.

Ispod su dva primjera.

Uspješan odgovor

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

Vlasništvo html sadrži šifru komentara.

Odgovor na pogrešku

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

Kada postoji pogreška, jQuery prolazi kroz objekt pogreške i prikazuje poruke pored polja koja sadrže pogreš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 full white; color:#888; margin-bottom:25px; / * CSS3 zaobljeni kutovi 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. / Vanjski pomak za komentar div /*/ visina:50px; lijevo:- 70px; pozicija :apsolutna; širina:50px; pozadina:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Središte okomito: */ margin-top:-25px; gore:50%; -moz- box-shadow :1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; box-shadow:1px 1px 0 #c2c2c2; )

div .komentar I #addCommentContainer imaju isti stil. Nekoliko CSS3 pravila koristi se za zaokruživanje kutova i odražavanje sjena.

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:absolute; 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; 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( /* gumb "Pošalji" " */ boja pozadine:#58B9EB; granica:1px solid #40A2D4; boja:#FFFFFF; kursor:pokazivač; obitelj-fontova:"Myriad Pro",Arial,Helvetica,sans-serif; veličina-fonta:14px; font -weight:bold; padding:4px; margin-top:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #s ubaciti:lebdjeti (boja-pozadine:#80cdf5; boja obruba:#52b1e2; )

U drugom dijelu postavljamo stilove za komentare i elemente forme. Istaknimo i izbornika ulazni, koji ističe elemente ovisno o atributu tip.

Korak 4 - jQuery

Sada prijeđimo na jQuery.

skripta.js

$(document).ready(function()( /* Sljedeći kod se izvršava tek nakon što se DOM učita */ /* Ova zastavica sprječava podnošenje više komentara: */ var working = false; /* Hvatanje slanja obrasca događaj: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = 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 uspješno, dodajte komentar / ispod zadnjeg na stranici s slideDown efekt /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Ako postoji su pogreške, prođite kroz objekt / msg.errors i ispišite ih na stranicu /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Koristimo poziv funkcije $(dokument).ready() A koji vezuje funkciju za događaj. Varijabilna radeći djeluje kao oznaka koja signalizira da je AJAX zahtjev u tijeku (čime se sprječava dupliciranje istog komentara).

U povratnoj funkciji za POST AJAX zahtjev provjeravamo svojstvo status kako biste utvrdili je li komentar uspješno umetnut. Ako da, dodajemo rezultirajuću oznaku na stranicu nakon zadnjeg komentara s animacijom spusti se.

Ako je bilo problema, tada prikazujemo poruke o pogrešci dodavanjem raspon greška na odgovarajući element označiti(atribut elementa označiti sadrži iskaznica unos koji ima grešku).

Spreman!

Zaključak

Da biste pokrenuli skriptu na svom poslužitelju, trebate izraditi tablicu komentari u vašoj MySQL bazi podataka. Možete to učiniti sa SQL kodom iz datoteke tablica.sql, koji se mora unijeti na kartici SQL u phpMyAdmin. Zatim u datoteci trebate postaviti parametre povezivanja MySQL baze podataka povezivanje.php .

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

U HTML-u, glavna svrha komentara je poslužiti kao bilješka programerima koji mogu vidjeti izvorni kod vaše web stranice. PHP komentari se razlikuju po tome što neće biti prikazani posjetiteljima. Jedini način za pregled PHP komentara je otvaranje datoteke za uređivanje. Zbog toga su PHP komentari korisni samo za PHP programere.

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

sintaksa php komentara: komentar u jednom redu

Dok html ima samo jednu vrstu komentara, PHP ima dvije vrste. Prva vrsta o kojoj ćemo raspravljati je komentar u jednom retku. To jest, komentar koji tumaču govori da zanemari sve što se događa u onom retku desno od komentara. Da biste koristili ovaj komentar, koristite znakove "//" ili "#" i sav tekst s desne strane zanemarit će PHP tumač.

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

Proizlaziti:

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

Imajte na umu da nekoliko naših echo naredbi nije obrađeno jer smo ih komentirali posebnim znakovima komentara. Ova vrsta komentara često se koristi za brzo pisanje o složenom i zamagljenom kodu ili za privremeno uklanjanje retka PHP koda (za potrebe otklanjanja pogrešaka).

sintaksa php komentara: višeredni komentar

Poput HTML komentara, višeredni komentari u PHP-u mogu se koristiti za komentiranje velikih blokova koda ili za pisanje komentara u više redaka. Višeredni komentari u PHP-u počinju s "/*" i završavaju s "*/". Sve između ovih znakova bit će zanemareno.

Proizlaziti.