Komentet e pakuptimta php. Sistemi i thjeshtë i komentimit duke përdorur AJAX. Sintaksa e komentit php: koment me një rresht

Një herë kam shkruar për. Pra, ne konsideruam vetëm atje " i pangopur"Përfaqësuesit. Megjithatë, jo gjithmonë e tyre" lakmia"Na ndihmon, shumë shpesh dhemb. Pak më poshtë do të tregoj një shembull ku mund të shihni qartë se çfarë bëjnë ndonjëherë, dhe gjithashtu të tregoj se si të zvogëloni aromën e tyre dhe të bëni Kuantifikuesit e përsëritjes janë "dembelë".

Le të shohim një shembull të thjeshtë dhe tashmë klasik:

$str = "E vogël linjë c të guximshme përzgjedhja.";
.*<\/b>
echo $rezultat_str;
?>

Ndoshta ju prisni diçka të tillë: Small bold_highlight këtu me bold_highlight këtu". Kjo do të thotë, thjesht duke zëvendësuar përmbajtjen brenda etiketës<b> te vargu që specifikuam së bashku me vetë etiketën. Megjithatë, kjo nuk është plotësisht e vërtetë, pasi këtu " lakmia e sasive Dhe si rezultat, zëvendësimi nuk ishte brenda çdo etikete<b>, por nga etiketa e parë e hapjes deri në etiketën e fundit mbyllëse. Kjo është ajo që është lakmia.

Ja se si ta shkruajmë këtë kod në mënyrë që zëvendësimi të ndodhë ashtu siç duam:

$str = "E vogël linjë c të guximshme përzgjedhja.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $rezultat_str;
?>

Gjithçka që kemi ndryshuar është regex pas sasisë së përsëritjes " .* “Pikëpyetje, e cila është e drejtë e bën kuantifikuesin "dembel". Tani rezultati do të jetë: " Një bold_highlight i vogël këtu me një bold_highlight këtu. që është ajo që ne po përpiqeshim të arrinim.

Unë me të vërtetë shpresoj se ju e kuptoni problemin. Kuantifikuesit e "lakmisë". dhe kuptoni se si funksionojnë. Dhe gjithashtu kuptoi se si mund të rregullohet kjo me një shenjë të thjeshtë " ? Kjo temë është me të vërtetë e rëndësishme dhe një numër i madh i të sapoardhurve në shprehjet e rregullta bëjnë të njëjtat gabime në lidhje me të "lakmia" e kuantifikuesve të përsëritjes, kështu që nëse nuk e keni kuptuar ende të gjithë kuptimin deri në fund, atëherë rilexoni artikullin përsëri.

25.04.2017


Përshëndetje!
Ne vazhdojmë të mësojmë bazat e PHP nga e para!
Në këtë mësim do t'ju tregoj se çfarë është një koment në PHP dhe në praktikë do të përpiqemi të shkruajmë komentin tuaj në kod. Por kjo nuk është e gjitha. Unë gjithashtu dua t'ju tregoj se si të komentoni kodin dhe pse duhet të bëhet fare.

Çfarë është një koment nëPHP
Komentoni nëPHPështë një aluzion për zhvilluesin php për orientim të shpejtë në kod, si dhe për redaktim.

Një koment në PHP nuk është i dukshëm për përdoruesin që hapi faqen e internetit për shikim. Edhe nëse përdoruesi vendos të shikojë burimi faqe, komenti nuk do të jetë ende i dukshëm, si të gjithë php.

Komenti i kodit PHP

Ekzistojnë 2 lloje komentesh për kodin PHP:

→ një linjë
→ shumë linjë

⇒ Koment me një rresht për PHP
Për një koment me një rresht, përdorni karakteret "//" ose "#"

Pas këtyre personazheve, gjithçka e shkruar në një rresht do të shpërfillet dhe do të trajtohet si koment.

Regjistrohu për të përditësuar"; # subscribe (ky është një koment) ?>


Abonohu ​​për të përditësuar

⇒ Koment me shumë rreshta për PHP
Një koment me shumë rreshta për PHP fillon me "/*" dhe përfundon me "*/".
Çdo gjë mes këtyre personazheve do të injorohet dhe do të trajtohet si koment.
Një koment me shumë rreshta përdoret nëse ka disa rreshta në hyrje.

Në ekran, do të shihni vetëm tekstin e mëposhtëm:

Përshëndetje lexues të blogut - faqes !!!

P.S.: Gjithmonë komentoni kodin tuaj. Nëse mendoni se do të mbani mend gjithçka që keni bërë në kod në 1-2 vjet, gaboheni, shansi është shumë i vogël. Edhe nëse mbani mend, do t'ju duhet të kaloni shumë kohë duke studiuar - çfarë, ku dhe pse ...
Bëjeni të ardhmen të këndshme për veten tuaj - komentoni kodin dhe më pas do t'i thoni vetes "FALEMINDERIT!!!".
Lini një koment në kod, do t'ju marrë 1 minutë nga koha juaj, por do t'ju kursejë një ditë të tërë në të ardhmen.

Komentoni kodin PHP

Le të themi se keni shkruar një kod php, por për ndonjë arsye ju duhet të hiqni 2 rreshta nga kodi.
Nuk po nxitoj të heq diçka nga kodi, veçanërisht nëse është kodi php, më mirë ta komentoj. Dhe papritmas do të jetë e nevojshme të ktheni kodin. Është më e lehtë të mos komentosh sesa të shkruash kodin në një mënyrë të re.

Si të komentoni kodin nëPHP
Një shembull me një koment të vetëm:

Regjistrohu për përditësim"; ?>

Një shembull me një koment me shumë rreshta.

Hapi 1 - XHTML

Së pari, le të shohim shënimin e komenteve. Kodi i dhënë gjeneruar nga PHP me klasë Komentoni .

demo.php

Emri i përdoruesit
30 qershor 2010

Teksti i komentit

div avatar përmban një lidhje (nëse përdoruesi ka futur URL-në e saktë kur poston komentin) dhe imazhin e avatarit që marrim nga gravatar.com. Ne do të kthehemi te gjenerimi i shënimit në hapin PHP. Në fund ndiqni div emri div koha dhe tekstin e komentit.

Të tjera element i rëndësishëm në XHTML është forma e komentit. Ajo dërgon me POST. Të gjitha fushat përveç URL-së duhet të plotësohen.

demo.php

Shto një koment

Formulari dorëzohet duke përdorur AJAX. Kontrolli kryhet në sfond paraqes.php. Çdo fushë ka një element përkatës etiketë, me grup atributesh për .

Hapi 2 - PHP

PHP trajton komunikimin me bazën e të dhënave Të dhënat e MySQL dhe gjeneron shënimin për komentin. Ai gjithashtu merr fundin e kërkesës AJAX dhe fut të dhënat e komenteve në tabelë komentet.

demo.php

/* / Zgjidhni të gjitha komentet dhe mbushni grupin $comments me objekte */ $comments = array(); $rezultat = mysql_query("ZGJEDHJE * NGA komentet ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = koment i ri($row); )

Pyetja e MySQL zgjedh të gjitha të dhënat nga tabela dhe plotësoni grupin $komente objektet e klasës koment. Ky grup del më tej kur ekzekutohet skripti.

demo.php

/* / Printoni komentet një nga një: */ foreach($komenton si $c)( echo $c->markup(); )

Çdo koment ka një metodë shënimi (), i cili gjeneron kodin e saktë HTML, gati për t'u shfaqur në faqe. Më poshtë janë përkufizimet e klasës dhe metodës.

Klasa merr një rresht nga baza e të dhënave (i marrë duke përdorur mysql_fetch_assoc()) dhe ruajeni atë në një ndryshore $të dhëna. Është i disponueshëm vetëm për metodën e klasës.

comment.class.php - Pjesa 1

class Koment ( private $data = array(); funksion publik __construct($row) ( /* / Constructor */ $this->data = $row; ) markup funksioni publik() ( /* / Kjo metodë nxjerr shënimin XHTML për */ // Vendosni një pseudonim për të shmangur shkrimin e $this->data çdo herë: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Nëse një URL është futur gjatë shtimit të një komenti, // përcaktoni etiketat e lidhjes hapëse dhe mbyllëse $link_open = ""; $link_close = ""; ) // Konvertoni kohën në formatin UNIX: $d["dt" ] = strtotime ($d["dt"]); // Nevojitet për të vendosur imazhin e paracaktuar: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; kthe "
".$link_open." ".$link_close."
".$link_open.$d["name"].$link_close."
".date("d M Y",$d["dt"])."

".$d["trupi"]."

"; }

Skripti përdor gravatarin për të përfaqësuar avatarin në komente. Gravatar është një shërbim shumë i dobishëm që përputhet me një avatar me një adresë emaili. Imazhi i avatarit mund të merret lehtësisht duke kaluar funksionin e koduar md5 () adresën tuaj të emailit në gravatar.com.

Skripti përcakton URL-në në të cilën është ekzekutuar dhe përcakton adresën e saktë të imazhit default_avatar.gif. Ky imazh kalon së bashku me hash-in md5 dhe nëse nuk u gjet asnjë avatar për adresën e dhënë të emailit, atëherë do të shfaqet një imazh alternativ.

comment.class.php - Pjesa 2

funksioni publik statik validate(&$arr) ( /* / Kjo metodë përdoret për të vërtetuar të dhënat e dërguara përmes AJAX. / / Ai kthen true/false në varësi të vlefshmërisë së të dhënave dhe mbush / grupin $arr, i cili kalohet si parametër me të dhëna ose */ $errors = array(); $data = array(); // Përdorni funksionin filter_input të prezantuar në PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Ju lutemi shkruani një email të vlefshëm."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Nëse një URL e pavlefshme është futur në fushën e URL-së, // veproni sikur nuk është futur asnjë URL: $url = ""; ) // Përdorni një filtër me një funksion kthimi të thirrjes: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Koment::validate_text")))) ($errors["body"] = "Ju lutemi shkruani tekstin e komentit."; ) if(!( $data["name"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("options"=>"Koment::validate_text")))) ( $errors["name"] = "Ju lutemi shkruani një emër."; ) if(!empty($errors))( // Nëse ka gabime, kopjoni grupin $errors në $arr: $arr = $errors; ktheni false; ) // Nëse hyrja është e saktë, pastroni të dhënat dhe kopjojeni atë në $arr : foreach($data si $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // emaili duhet të jetë i vogël: $arr["email"] = strtolower( trim($ arr["email"])); kthehu i vërtetë; )

Metoda vërtetoj ()(gjithashtu pjesë e një klase) përkufizohet si statike. Kjo do të thotë se mund të thirret drejtpërdrejt me konstruktin koment::validate(), pa krijuar një objekt të klasës. Kjo metodë vërteton të dhënat që kalohen përmes AJAX.

Metoda përdor veçori e re filtri, i cili u bë i disponueshëm në PHP 5.2.0. Në këtë mënyrë ne mund të kontrollojmë dhe filtrojmë lehtësisht të dhënat që i kalohen skriptit. Për shembull, hyrja_filtri(INPUT_POST,'url',FILTER_VALIDATE_URL) do të thotë që ne kontrollojmë nëse $_POST["url"] URL e saktë. Nëse po, atëherë funksioni kthen vlerën e ndryshores, përndryshe kthen vlerën i rremë.

Para se të përdorni një funksion të tillë, ishte e nevojshme të përdorni shprehje të rregullta për të vërtetuar të dhënat (duke përdorur një seri konstruktesh nëse). Një përfitim i shtuar është se ne marrim të dhënat përpara se të bëjmë ndonjë transformim specifik.

Është gjithashtu e mundur të përcaktohet një funksion që do të kryejë modifikime shtesë të të dhënave.

comment.class.php - Pjesa 3

funksioni statik privat validate_text($str) ( /* / Kjo metodë përdoret si FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etj) dhe konvertoni // karakterin e linjës së re në një etiketë
: $str = nl2br(htmlspecialchars($str)); // Hiq çdo linjë të re të mbetur $str = str_replace(array(chr(10),chr(13)),"",$str); kthej $str; )

Metoda e fundit vërtetoj_tekstin kalohet si funksion kthimi në dy thirrje hyrje_filtri. Ai konverton të gjithë karakteret e veçanta HTML, të cilat në mënyrë efektive bllokojnë sulmet XSS. Gjithashtu ai zëvendëson linjat e reja me etiketa
.

paraqes.php

/* / Ky grup do të mbushet ose me të dhëna / që i kalohen skriptit, / ose me mesazhe gabimi. /*/ $arr = array(); $validates = Koment::validate($arr); if($validates) ( /* Në rregull, futni të dhënat në bazën e të dhënave: */ mysql_query(" INSERT INTO komentet(emri,url,email,body) VALUES ("".$arr["emri"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Të dhënat në $arr përgatiten për pyetjen mysql, / por ne duhet ta shfaqim atë, kështu që / ne po përgatisim të gjithë elementët në grup: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Printoni shënimin e komentit të sapo futur: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Shfaq mesazhet e gabimit */ echo "("status":0,"gabime":". json_encode ($arr ).")";)

paraqes.php merr një koment nga të dhënat nëpërmjet një kërkese AJAX. E vërteton atë dhe nxjerr një objekt JSON që përmban ose shënimin XHTML me një koment të integruar ose një listë gabimesh. Vetia e përdorimit të jQuery statusi për të përcaktuar se çfarë duhet të shfaqet - ose një mesazh gabimi ose duke shtuar shënimin e komenteve në faqe.

Më poshtë janë dy shembuj.

Përgjigje e suksesshme

( "status": 1, "html": "Kodi HTML i komentit vjen këtu...")

Prona html përmban kodin e komentit.

Përgjigje gabimi

( "status": 0, "gabime": ( "email": "Ju lutemi shkruani një email të vlefshëm.", "body": "Ju lutemi shkruani një trup koment.", "emri": "Ju lutemi shkruani një emër." ) )

Kur ka një gabim, jQuery kalon nëpër objektin e gabimeve dhe shfaq mesazhe pranë fushave që kanë gabime.

Hapi 3 - CSS

Tani që shënjimi është krijuar dhe shfaqur saktë në faqe, ne mund të kalojmë te stilimi.

styles.css - Pjesa 1

.comment, #addCommentContainer( /* Stili për komentet */ mbushje:12px; gjerësia:400px; pozicioni:relativ; ngjyra e sfondit:#fcfcfc; kufiri:1px e bardhë e fortë; ngjyra:#888; margin-fund:25px; / * CSS3 qoshet dhe hijet e rrumbullakosura */ -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; -moz-box-shadow:2px 2px 0 #c2c2c2; -webkit-box- hije:2px 2px 0 #c2c2c2; box-hije:2px 2px 0 #c2c2c2; ) .comment .avatar( /* / Avatari është pozicionuar absolutisht. / Zhvendosja e jashtme për komentin div /*/ lartësia: 50 px; majtas:- 70px; pozicioni:absolute; gjerësia:50px; sfondi:url("img/default_avatar.gif") pa përsëritje #fcfcfc; /* Qendra vertikalisht: */ margin-top:-25px; lart:50%; -moz- box-shadow :1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; box-hije:1px 1px 0 #c2c2c2; )

div .koment dhe #addCommentContainer kanë të njëjtin stil. Disa rregulla CSS3 përdoren për të rrumbullakosur qoshet dhe për të pasqyruar hijet.

styles.css - Pjesa 2

.koment .avatar img( shfaqja:blloku; ) .komenti .emri( madhësia e shkronjave:20px; mbushja e poshtme:10px; ngjyra:#ccc; ) .komenti .data( madhësia e shkronjave:10px; mbushja:6px 0; pozicion:absolute; djathtas:15px; sipër:10px; ngjyra:#bbb; ) .koment p, #addCommentContainer p(madhësia e shkronjave:18px; lartësia e rreshtit:1.5; tejmbushja-x:hidden; ) #addCommentContainer hyrje, # addCommentContainer textarea( /* Stili i hyrjes */ shfaqja:blloku; kufiri:1px solid #cccc; diferenca:5px 0 5px; mbushja:3px; madhësia e shkronjave:12px; ngjyra:#555; font-familja:Arial, Helvetica, sans -serif; ) #addCommentContainer textarea( gjerësia:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* Butoni "Dërgo" " */ ngjyra e sfondit:#58B9EB; kufiri: 1 px solid #40A2D4; ngjyra:#FFFFFF; kursori: treguesi; font-familja:"Myriad Pro",Arial,Helvetica,sans-serif; madhësia e shkronjave:14px; font -pesha: bold; mbushje: 4 px; margin-lart: 5 px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #s ubmit:hover( background-color:#80cdf5; kufiri-ngjyra:#52b1e2; )

Në pjesën e dytë, ne vendosëm stilet për komentet dhe elementët e formës. Le të shënojmë përzgjedhësin hyrje, i cili nxjerr në pah elementet në varësi të një atributi lloji.

Hapi 4 - jQuery

Tani le të kalojmë te jQuery.

skript.js

$(document).ready(function()( /* Kodi i mëposhtëm ekzekutohet vetëm pasi të jetë ngarkuar DOM */ /* Ky flamur parandalon paraqitjen e komenteve të shumta: */ var duke punuar = false; /* Kapja e formularit dërgo ngjarja: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Punon.. "); $("span .error").remove(); /* Paraqisni fushat e formularit te submit.php: */ $.post("submit.php",$(this).serialize(),function(msg )(work = false; $ ("#submit").val ("Submit"); if(msg.status)( /* / Nëse futja ishte e suksesshme, shtoni një koment / poshtë të fundit në faqe me një efekti slideDown /*/ $(msg.html).fshih ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) other ( /* / Nëse ka janë gabime. "+v+""); )); )) ),"json"); )); ));

Ne përdorim një thirrje funksioni $(dokument).ready() A që lidh një funksion me ngjarjen. E ndryshueshme duke punuar vepron si një flamur që sinjalizon se një kërkesë AJAX është në proces (duke parandaluar dyfishimin e të njëjtit koment).

Në funksionin e kthimit për kërkesën POST AJAX, kontrollojmë pronën statusi për të përcaktuar nëse komenti është futur me sukses. Nëse po, ne shtojmë shënimin që rezulton në faqe pas komentit të fundit me animacion rrëshqit poshtë.

Nëse ka pasur probleme, atëherë ne shfaqim mesazhe gabimi duke shtuar shtrirje gabim tek elementi përkatës etiketë(atributi i elementit etiketë përmban id hyrje që ka një gabim).

Gati!

konkluzioni

Për të ekzekutuar skriptin në serverin tuaj, duhet të krijoni një tabelë komentet në bazën tuaj të të dhënave MySQL. Mund ta bëni me kodin SQL nga skedari tabela.sql, e cila duhet të futet në skedën SQL në phpMyAdmin. Pastaj ju duhet të vendosni parametrat e lidhjes së bazës së të dhënave MySQL në skedar lidh.php .

Komentet në PHP janë të ngjashme me komentet e përdorura në HTML. Në sintaksën PHP, komentet gjithmonë fillojnë me një sekuencë të veçantë karakteresh dhe çdo tekst që shfaqet midis këtyre karaktereve speciale do të injorohet nga interpretuesi.

Në HTML, qëllimi kryesor i një komenti është të shërbejë si një shënim për zhvilluesit që mund të shikojnë kodin burimor të faqes suaj. Komentet e PHP ndryshojnë në atë që nuk do t'u shfaqen vizitorëve. Mënyra e vetme për të parë komentet PHP është hapja e skedarit për redaktim. Kjo i bën komentet PHP të dobishme vetëm për programuesit PHP.

Në rast se keni harruar ose nuk e dini se si bëhen komentet në HTML, shihni shembullin më poshtë.

Sintaksa e komentit php: koment me një rresht

Ndërsa html ka vetëm një lloj komenti, PHP ka dy lloje. Lloji i parë që do të diskutojmë është komenti me një rresht. Kjo do të thotë, një koment që i thotë përkthyesit të injorojë çdo gjë që ndodh në atë rresht në të djathtë të komenteve. Për të përdorur këtë koment, përdorni karakteret "//" ose "#" dhe i gjithë teksti në të djathtë do të injorohet nga interpretuesi PHP.

Psst...Nuk mund t'i shihni komentet e mia në PHP!"; // jehonë "asgjë"; // jehonë "Emri im është Humperdinkle!"; # jehonë "As unë nuk bëj asgjë"; ?>

Rezultati:

Përshendetje Botë! Psst...Ju nuk mund t'i shihni komentet e mia në PHP!

Vini re se disa nga komandat tona echo nuk u përpunuan sepse ne i komentuam ato me karaktere të veçanta komentesh. Ky lloj komenti përdoret shpesh për të shkruar shpejt për kodin kompleks dhe të turbullt, ose për të hequr përkohësisht një rresht kodi PHP (për qëllime korrigjimi).

Sintaksa e komentit php: koment me shumë rreshta

Ashtu si komentet HTML, komentet me shumë rreshta në PHP mund të përdoren për të komentuar blloqe të mëdha kodi ose për të shkruar komente në rreshta të shumtë. Komentet me shumë rreshta në PHP fillojnë me "/*" dhe mbarojnë me "*/". Çdo gjë mes këtyre personazheve do të injorohet.

Rezultati.