Comentariu privat de drepturi php. Sistem simplu de comentare folosind AJAX. Sintaxa comentariului PHP: comentariu pe o singură linie

25.04.2017


Salutare tuturor!
Să continuăm să învățăm elementele de bază ale PHP de la zero!
În această lecție vă voi spune ce este un comentariu în PHP și în practică vom încerca să scriem propriul comentariu în cod. Dar asta nu este tot. De asemenea, vreau să vă spun cum să comentați codul și de ce trebuie să faceți acest lucru.

În ce este un comentariuPHP
Comentează înPHP– acesta este un indiciu pentru un dezvoltator PHP pentru a naviga rapid prin cod, precum și pentru editări.

Un comentariu în PHP nu este vizibil pentru utilizatorul care a deschis pagina web pentru vizualizare. Chiar dacă utilizatorul decide să se uite la codul sursă al paginii, comentariul tot nu va fi vizibil, deoarece întregul cod php nu va fi vizibil.

Comentariu cod PHP

Există 2 tipuri de comentarii pentru codul PHP:

→ cu o singură linie
→ multilinie

⇒ Comentariu pe un rând pentru PHP
Pentru un comentariu pe un rând, utilizați caracterele „//” sau „#”

După aceste caractere, tot ce este scris pe un rând va fi ignorat și considerat ca un comentariu.

Abonați-vă la actualizare"; # abonament (acesta este un comentariu) ?>


Abonați-vă pentru actualizare

⇒ Comentariu pe mai multe linii pentru PHP
Un comentariu pe mai multe rânduri pentru PHP începe cu un caracter „/*” și se termină cu un caracter „*/”.
Orice lucru dintre aceste caractere va fi ignorat și tratat ca un comentariu.
Un comentariu pe mai multe linii este folosit dacă există mai multe rânduri într-o postare.

Pe ecran veți vedea doar acest text:

Salutare cititori blog - site!!!

P.S.: Comentează întotdeauna codul tău. Daca crezi ca iti vei aminti tot ce ai facut in cod peste 1-2 ani, te inseli, sansa este foarte mica. Chiar dacă îți amintești, va trebui să petreci mult timp studiind - ce, unde și de ce...
Fă ceva frumos pentru viitorul tău - comentează codul și apoi îți vei spune „MULȚUMESC!!!”
Lăsați un comentariu în cod, va dura 1 minut, dar vă va economisi o zi întreagă în viitor.

Comentați codul PHP

Să presupunem că ați scris cod PHP, dar din anumite motive trebuie să eliminați 2 linii din cod.
Nu mă grăbesc să elimin ceva din cod, mai ales dacă este cod PHP, aș prefera să-l comentez. Ce se întâmplă dacă trebuie să returnezi codul? Este mai ușor să anulați comentariile decât să scrieți codul într-un mod nou.

Cum să comentați codul înPHP
Exemplu cu un comentariu pe o linie:

Abonați-vă pentru actualizare"; ?>

Exemplu cu un comentariu pe mai multe rânduri.

Comentariile în PHP sunt similare cu comentariile folosite în HTML. În sintaxa PHP, comentariile încep întotdeauna cu o secvență specială de caractere și tot textul care apare între aceste caractere speciale va fi ignorat de interpret.

În HTML, scopul principal al unui comentariu este de a servi drept notă pentru dezvoltatorii care pot vedea codul sursă al site-ului dvs. Comentariile PHP sunt diferite prin aceea că nu vor fi afișate vizitatorilor. Singura modalitate de a vizualiza comentariile PHP este să deschideți fișierul pentru editare. Acest lucru face comentariile PHP utile numai pentru programatorii PHP.

În cazul în care ați uitat sau nu știați cum se fac comentariile în HTML, atunci vedeți exemplul de mai jos.

Sintaxa comentariului PHP: comentariu pe o singură linie

În timp ce html are un singur tip de comentariu, PHP are două tipuri. Primul tip pe care îl vom discuta este comentariul pe o linie. Adică un comentariu care îi spune interpretului să ignore tot ce se întâmplă pe această linie din dreapta comentariilor. Pentru a utiliza acest comentariu, utilizați caracterele „//” sau „#” și tot textul din dreapta va fi ignorat de interpretul PHP.

Psst...Nu poți să-mi vezi comentariile PHP!"; // ecou „nimic”; // echo "Numele meu este Humperdinkle!"; # echo „Nici eu nu fac nimic”; ?>

Rezultat:

Salut Lume! Psst...Nu puteți vedea comentariile mele PHP!

Observați că mai multe dintre comenzile noastre de eco nu au fost procesate deoarece le-am comentat folosind caractere speciale de comentariu. Acest tip de comentariu este adesea folosit pentru a scrie rapid cod complex și confuz sau pentru a elimina temporar o linie de cod PHP (pentru depanare).

Sintaxa comentariului PHP: comentariu pe mai multe linii

La fel ca comentariile HTML, comentariile pe mai multe linii în PHP pot fi folosite pentru a comenta blocuri mari de cod sau pentru a scrie comentarii pe mai multe rânduri. Comentariile pe mai multe linii în PHP încep cu „/*” și se termină cu „*/”. Orice dintre aceste caractere va fi ignorat.

Rezultat.

Pasul 1 - XHTML

Mai întâi, să ne uităm la marcajul de comentarii. Acest cod este generat de PHP cu clasa cometariu .

demo.php

Nume de utilizator
30 iunie 2010

Text de comentariu

div avatar conține un link (dacă utilizatorul a introdus adresa URL corectă când a postat un comentariu) și o imagine avatar, pe care o obținem de la gravatar.com. Vom reveni la generarea markupului în pasul PHP. Urmează în sfârșit div Nume div timp și comentariu text.

Un alt element important în XHTML este formularul de comentarii. Ea este trimisă cu POST. Toate câmpurile, cu excepția URL-ului, trebuie completate.

demo.php

Adauga un comentariu

Formularul este trimis folosind AJAX. Cecul rulează în fundal în trimite.php. Fiecare câmp are un element corespunzător eticheta, cu atributul setat pentru .

Pasul 2 - PHP

PHP se ocupă de comunicarea cu baza de date MySQL și generează marcarea comentariilor. De asemenea, primește sfârșitul solicitării AJAX și inserează datele comentariilor în tabel comentarii.

demo.php

/* / Selectați toate comentariile și umpleți tabloul $comments cu obiecte */ $comments = array(); $rezultat = mysql_query("SELECT * FROM comments ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ($comments = new Comment($row); )

Interogarea MySQL selectează toate înregistrările din tabel și umple matricea $comentarii obiecte de clasă cometariu. Această matrice este scoasă mai departe atunci când scriptul este executat.

demo.php

/* / Printează comentariile unul câte unul: */ foreach($comentarii ca $c)( echo $c->markup(); )

Fiecare comentariu are o metodă marcaj(), care generează codul HTML corect, gata să fie afișat pe pagină. Mai jos sunt definițiile clasei și metodei.

Clasa primește un rând din baza de date (obținut folosind mysql_fetch_assoc()) și îl stochează într-o variabilă $date. Este disponibil numai pentru metoda clasei.

comment.class.php - Partea 1

clasa Comentariu ( private $date = array(); public function __construct($row) ( /* / Constructor */ $this->data = $row; ) public function markup() ( /* / Aceasta metoda produce markup XHTML pentru comentarii */ // Setați un alias pentru a nu scrie $this->data de fiecare dată: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url) "] )( // Dacă a fost introdusă o adresă URL la adăugarea unui comentariu, // determinați etichetele de deschidere și de închidere ale linkului $link_open = " "; $link_close = ""; ) // Convertiți ora în format UNIX: $d["dt"] = strtotime($d["dt"]); // Este necesară setarea imaginii implicite: $url = "http://". dirname ($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"])."/img/default_avatar.gif"; returnează "
„.$link_open”. „.$link_close.”
„.$link_open.$d[„nume”].$link_close.”
".date("d M Y",$d["dt"])."

„.$d[„corp”]”.

"; }

Scriptul folosește gravatar pentru a reprezenta avatarul în comentarii. Gravatar este un serviciu foarte util care potrivește un avatar cu o adresă de e-mail. Imaginea avatarului poate fi obținută cu ușurință prin trecerea funcției codificate md5() adresa ta de e-mail pe gravatar.com.

Scriptul determină adresa URL unde este executat și determină adresa exactă a imaginii default_avatar.gif. Această imagine este transmisă în paralel cu hash-ul md5, iar dacă nu a fost găsit niciun avatar pentru adresa de e-mail transmisă, va fi afișată o imagine alternativă.

comment.class.php - Partea 2

funcția publică statică validate(&$arr) ( /* / Această metodă este folosită pentru a valida datele trimise prin AJAX. / / Returnează adevărat/fals în funcție de corectitudinea datelor și completează / tabloul $arr, care este transmis ca parametru fie cu date, fie cu mesaj de eroare. */ $errors = array(); $data = array(); // Folosiți funcția filter_input introdusă în PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Vă rugăm să introduceți un e-mail valid."; ) if(!($data["url"] = filter_input(INPUT_POST,"url" ,FILTER_VALIDATE_URL))) ( // Dacă a fost introdusă o adresă URL incorectă în câmpul URL, // acționați ca și cum URL-ul nu ar fi fost introdus: $url = ""; ) // Folosiți un filtru cu o funcție de apel invers: if(! ($data["body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options" =>"Comment::validate_text")))) ( $errors["body"] = "Vă rugăm să introduceți comentariul text."; ) if(!( $date["name"] = filter_input(INPUT_POST,"name",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["name "] = "Vă rugăm să introduceți un nume."; ) if(!empty($erori))( // Dacă există erori, copiați tabloul $errors în $arr: $arr = $erori; returnează fals; ) // Dacă datele sunt introduse corect, ștergeți datele și copiați-l în $arr : foreach($date ca $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // e-mailul trebuie să fie cu litere mici: $arr["email"] = strtolower (trim($ arr["email"])); returnează adevărat; )

Metodă valida()(de asemenea, parte a unei clase) definit ca static. Aceasta înseamnă că poate fi apelat direct folosind constructul Comentariu::validate(), fără a crea un obiect de clasă. Această metodă verifică datele care sunt trimise prin AJAX.

Metoda folosește o nouă funcție de filtru care a devenit disponibilă în PHP 5.2.0. În acest fel putem verifica și filtra cu ușurință datele care sunt transmise scriptului. De exemplu, filter_input(INPUT_POST,’url’,FILTER_VALIDATE_URL)înseamnă că verificăm dacă $_POST[„url”] URL-ul corect. Dacă da, atunci funcția returnează valoarea variabilei, în caz contrar returnează valoarea fals.

Înainte de a utiliza o astfel de funcție, a fost necesar să se utilizeze expresii regulate pentru a valida datele (folosind o serie de constructe dacă). Un avantaj suplimentar este că primim datele înainte de efectuarea oricăror transformări specifice.

De asemenea, este posibil să specificați o funcție care va efectua modificări suplimentare de date.

comment.class.php - Partea 3

funcție statică privată validate_text($str) ( /* / Această metodă este folosită ca FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etc) și convertiți // caracterul newline într-o etichetă
: $str = nl2br(htmlspecialchars($str)); // Eliminați orice linii noi rămase $str = str_replace(array(chr(10),chr(13)),"",$str); returnează $str; )

Ultima metoda validate_text transmisă ca funcție de returnare în două apeluri intrare_filtru. Convertește toate caracterele speciale HTML, care blochează efectiv atacurile XSS. De asemenea, înlocuiește liniile noi cu etichete
.

trimite.php

/* / Această matrice va fi completată fie cu date / care sunt transmise scriptului, fie cu mesaje de eroare. /*/ $arr = matrice(); $validates = Comentariu::validate($arr); if($validates) ( /* Totul este în regulă, introduceți datele în baza de date: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["nume"]")." ", "".$arr["url"].", "".$arr["email"].", "".$arr["body"]."")"); $arr["dt "] = data("r",time()); $arr["id"] = mysql_insert_id(); /* / Datele din $arr sunt pregătite pentru interogarea mysql, / dar trebuie să ieșim pe ecran , deci / pregătește toate elementele din matrice: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Afișează marcajul comentariului nou introdus: */ echo json_encode(array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Afișează mesaje de eroare */ echo "("stare":0,"erori":" .json_encode($arr )")"; )

trimite.php primește un comentariu de la date printr-o solicitare AJAX. Îl validează și emite un obiect JSON care conține fie marcaj XHTML cu un comentariu inserat, fie o listă de erori. jQuery folosește proprietatea stare pentru a determina ce trebuie să fie scos - fie un mesaj de eroare, fie adăugarea unui marcaj de comentariu la pagină.

Mai jos sunt două exemple.

Răspuns de succes

( „starea”: 1, „html”: „Codul HTML al comentariului vine aici...” )

Proprietate html conține codul de comentariu.

Răspuns de eroare

( „stare”: 0, „erori”: ( „e-mail”: „Vă rugăm să introduceți un e-mail valid.”, „body”: „Vă rugăm să introduceți un corp de comentariu.”, „nume”: „Vă rugăm să introduceți un nume.” ) )

Dacă există o eroare, jQuery parcurge obiectul erori și afișează mesaje lângă câmpurile care au erori.

Pasul 3 - CSS

Acum că marcajul este corect generat și afișat pe pagină, putem trece la setarea stilurilor.

styles.css - Partea 1

.comment, #addCommentContainer( /* Stil pentru comentarii */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * Colțuri și umbre rotunjite CSS3 */ -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( /* / Avatarul este poziționat absolut. / Offset exterior pentru comentariul div /*/ înălțime: 50px; stânga:- 70px; poziție:absolut; lățime:50px; background:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Centru vertical: */ margin-top:-25px; top:50%; -moz- box-shadow:1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; box-shadow:1px 1px 0 #c2c2c2; )

div .cometariu Și #addCommentContainer au acelasi stil. Utilizează mai multe reguli CSS3 pentru rotunjirea colțurilor și reflectarea umbrelor.

styles.css - Partea 2

.comment .avatar img( display:block; ) .comment .name( font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date( font-size:10px; padding:6px 0; poziție:absolut; dreapta:15px; sus:10px; culoare:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; line-height:1.5; overflow-x:hidden; ) #addCommentContainer intrare, # addCommentContainer textarea( /* Stil de intrare */ 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( /* Butonul de trimitere " * / culoare de fundal:#58B9EB; chenar:1px solid #40A2D4; culoare:#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; ) #submit:hover( background-color:# 80cdf5; culoarea chenarului:#52b1e2; )

În a doua parte am stabilit stiluri pentru comentarii și elemente de formular. Observați selectorul intrare care evidențiază elemente în funcție de atribut tip.

Pasul 4 - jQuery

Acum să trecem la jQuery.

script.js

$(document).ready(function())( /* Următorul cod este executat numai după ce DOM-ul este încărcat */ /* Acest flag împiedică trimiterea mai multor comentarii: */ var working = false; /* Prindeți formularul eveniment de trimitere: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Working. ."); $("span .error").remove(); /* Trimite câmpuri de formular către submit.php: */ $.post("submit.php",$(this).serialize(),function( msg)( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Dacă inserarea a avut succes, adăugați un comentariu / sub ultimul de pe pagină cu efectul slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Dacă există erori, parcurgeți obiectul / msg.errors și afișați-le pe pagina /*/ $.each(msg.errors,function(k,v)( $("label").append(" „+v+”"); )); ) ),"json"); )); ));

Folosim un apel de funcție $(document).gata(), care leagă o funcție de un eveniment. Variabil lucru acționează ca un flag care semnalează că o solicitare AJAX este în curs (prevenind astfel duplicarea aceluiași comentariu).

În funcția de returnare pentru cererea AJAX POST verificăm proprietatea stare pentru a determina dacă comentariul a fost inserat cu succes. Dacă da, adăugăm markupul rezultat în pagină după ultimul comentariu cu animație glisați în jos.

Dacă au apărut probleme, afișăm mesaje de eroare prin adăugare span eroare la elementul corespunzător eticheta(atributul elementului eticheta conţine id intrare care are o eroare).

Gata!

Concluzie

Pentru a rula scriptul pe serverul dvs. trebuie să creați un tabel comentarii în baza de date MySQL. Puteți face acest lucru folosind codul SQL dintr-un fișier tabel.sql, care trebuie introdus în fila SQL din phpMyAdmin. Apoi trebuie să setați parametrii de conectare la baza de date MySQL din fișier conectați.php .

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva