Pelottomia kommentteja php. Yksinkertainen AJAX-kommentointijärjestelmä. php-kommentin syntaksi: yksirivinen kommentti

Kirjoitin joskus aiheesta. Joten harkitsimme vain siellä " ahne"edustajia. Ei kuitenkaan aina heidän " ahneus"Se auttaa meitä, hyvin usein se sattuu. Hieman alempana näytän esimerkin, jossa näet selvästi, mitä he joskus tekevät, ja myös kuinka vähentää intoaan ja tehdä toistokvantorit ovat "laiskoja".

Katsotaanpa yksinkertaista ja jo klassista esimerkkiä:

$str = "Pieni linja c lihavoitu valinta.";
.*<\/b>
echo $tulos_str;
?>

Ehkä odotat jotain tällaista: Pieni bold_highlight täällä ja bold_highlight täällä Toisin sanoen vain sisällön korvaaminen tunnisteen sisällä<b> merkkijonoon, jonka määritimme itse tagin kanssa. Tämä ei kuitenkaan ole täysin totta, koska tämä on paikka " kvantorien ahneus Ja sen seurauksena vaihtoa ei ollut jokaisen tunnisteen sisällä<b>, mutta ensimmäisestä aloittavasta tagista viimeiseen sulkevaan tagiin. Tätä on ahneus.

Näin kirjoitat tämän koodin, jotta vaihto tapahtuu haluamallamme tavalla:

$str = "Pieni linja c lihavoitu valinta.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $tulos_str;
?>

Olemme muuttaneet vain säännöllisen lausekkeen toiston kvantisaattorin jälkeen " .* "kysymysmerkki, joka on vain tekee kvantorista "laiska". Nyt tulos on: " Pieni bold_highlight täällä ja bold_highlight täällä. jota yritimme saavuttaa.

Toivon todella, että ymmärrät ongelman. "ahneuden" kvantisoijat ja ymmärtää kuinka ne toimivat. Ja tajusi myös kuinka tämä voidaan korjata yksinkertaisella merkillä " ? ". Tämä aihe on todella tärkeä, ja valtava määrä uusia tulokkaita säännöllisiin lausekkeisiin tekee samat virheet liittyvät toiston kvantisoijien "ahneus"., joten jos et ole vielä ymmärtänyt koko merkitystä loppuun asti, lue artikkeli uudelleen.

25.04.2017


Hei kaikki!
Jatkamme PHP:n perusteiden oppimista tyhjästä!
Tällä oppitunnilla kerron sinulle mitä kommentti on PHP:ssä ja käytännössä yritämme kirjoittaa kommenttisi koodiin. Mutta siinä ei vielä kaikki. Haluan myös kertoa, kuinka koodia kommentoida ja miksi se ylipäätään pitäisi tehdä.

Mikä on kommenttiPHP
Kommentoi sisäänPHP on php-kehittäjävinkki koodin nopeaan perehtymiseen sekä muokkaamiseen.

PHP:n kommentti ei näy käyttäjälle, joka avasi verkkosivun katselua varten. Vaikka käyttäjä päättää katsoa lähde sivulla, kommentti ei silti näy, koska kaikki php.

PHP-koodin kommentti

PHP-koodille on olemassa kahdenlaisia ​​kommentteja:

→ yksivuori
→ monirivinen

⇒ Yksirivinen kommentti PHP:lle
Käytä yksirivisessä kommentissa merkkejä "//" tai "#"

Näiden merkkien jälkeen kaikki yhdelle riville kirjoitettu jätetään huomioimatta ja käsitellään kommenttina.

Tilaa päivitys"; # tilaa (tämä on kommentti) ?>


Tilaa päivitys

⇒ Monirivinen kommentti PHP:lle
PHP:n monirivinen kommentti alkaa kirjaimella "/*" ja päättyy merkkiin "*/".
Kaikki näiden merkkien välillä ohitetaan ja käsitellään kommentina.
Monirivistä kommenttia käytetään, jos merkinnässä on useita rivejä.

Näet näytöllä vain seuraavan tekstin:

Hei blogin lukijat - sivusto !!!

P.S.: Kommentoi aina koodiasi. Jos luulet muistavasi kaiken, mitä teit koodissa 1-2 vuoden kuluttua, olet väärässä, mahdollisuus on hyvin pieni. Vaikka muistatkin, joudut viettämään paljon aikaa opiskeluun - mitä, missä ja miksi ...
Tee tulevaisuudesta itsellesi miellyttävä - kommentoi koodi ja sanot sitten itsellesi "KIITOS!!!".
Jätä kommentti koodiin, se vie 1 minuutin ajastasi, mutta säästät koko päivän tulevaisuudessa.

Kommentoi PHP-koodi

Oletetaan, että kirjoitit php-koodin, mutta jostain syystä sinun on poistettava koodista 2 riviä.
Minulla ei ole kiire poistaa jotain koodista, varsinkin jos se on php-koodi, on parempi kommentoida sitä. Ja yhtäkkiä koodi on palautettava. On helpompi poistaa kommentteja kuin kirjoittaa koodia uudella tavalla.

Kuinka kommentoida koodia sisäänPHP
Esimerkki yhden rivin kommentilla:

Tilaa päivitys"; ?>

Esimerkki monirivisellä kommentilla.

Vaihe 1 – XHTML

Katsotaanpa ensin kommenttimerkintää. Annettu koodi luonut PHP luokan kanssa Kommentti .

demo.php

Käyttäjätunnus
30. kesäkuuta 2010

Kommentin teksti

div hahmo sisältää linkin (jos käyttäjä antoi oikean URL-osoitteen kommentin lähettämisen yhteydessä) ja avatar-kuvan, jonka saamme osoitteesta gravatar.com . Palaamme merkintöjen luomiseen PHP-vaiheessa. Lopussa seuraa div nimi div aika ja kommenttiteksti.

Muut tärkeä elementti XHTML:ssä on kommenttilomake. Hän lähettää mukana LÄHETTÄÄ. Kaikki kentät URL-osoitetta lukuun ottamatta on täytettävä.

demo.php

Lisää kommentti

Lomake toimitetaan AJAXin avulla. Tarkastus suoritetaan taustalla lähetä.php. Jokaisessa kentässä on vastaava elementti etiketti, määritteillä varten .

Vaihe 2 - PHP

PHP hoitaa tiedonsiirron tietokannan kanssa MySQL-tiedot ja luo kommentin merkinnät. Se saa myös AJAX-pyynnön lopun ja lisää kommenttitiedot taulukkoon kommentteja.

demo.php

/* / Valitse kaikki kommentit ja täytä $comments -taulukko objekteilla */ $comments = array(); $result = mysql_query("SELECT * FROM kommenteista ORDER BY id ASC"); while($rivi = mysql_fetch_assoc($tulos)) ( $kommentit = uusi kommentti($rivi); )

MySQL-kysely valitse kaikki tietueet taulukosta ja täytä taulukko $kommentteja luokan esineitä kommentti. Tämä matriisi tulostetaan edelleen, kun komentosarja suoritetaan.

demo.php

/* / Tulosta kommentit yksitellen: */ foreach($comments as $c)( echo $c->markup(); )

Jokaisella kommentilla on menetelmä markup(), joka luo oikean HTML-koodin, joka on valmis näytettäväksi sivulla. Seuraavassa on luokan ja menetelmän määritelmät.

Luokka saa tietokannasta rivin (saatu käyttämällä mysql_fetch_assoc()) ja tallenna se muuttujaan $data. Se on käytettävissä vain luokkamenetelmälle.

comment.class.php - Osa 1

class Kommentti ( yksityinen $data = array(); julkinen funktio __construct($row) ( /* / Rakentaja */ $this->data = $rivi; ) public function markup() ( /* / Tämä menetelmä tulostaa XHTML-merkinnät */ // Aseta alias, jotta et kirjoita $this->data joka kerta: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Jos URL annettiin kommenttia lisättäessä, // määritä linkin avaus- ja sulkemistunnisteet $link_open = ""; $link_close = ""; ) // Muunna aika UNIX-muotoon: $d["dt" ] = strtotime ($d["dt"]); // Tarvitaan oletuskuvan asettamiseen: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; return "
".$link_open." ".$link_close."
".$link_open.$d["nimi"].$link_close."
".date("d M Y",$d["dt"])."

".$d["body"]."

"; }

Käsikirjoitus käyttää gravataria edustamaan avataria kommenteissa. Gravatar on erittäin hyödyllinen palvelu, joka yhdistää avatarin sähköpostiosoitteeseen. Avatar-kuva voidaan helposti saada ohittamalla koodattu toiminto md5() sähköpostiosoitteesi osoitteessa gravatar.com.

Skripti määrittää URL-osoitteen, jossa se suoritetaan, ja määrittää kuvan tarkan osoitteen oletus_avatar.gif. Tämä kuva välitetään md5 hashin mukana, ja jos annetulle sähköpostiosoitteelle ei löydy avataria, näytetään vaihtoehtoinen kuva.

comment.class.php - Osa 2

julkinen staattinen funktio valide(&$arr) ( /* / Tätä menetelmää käytetään AJAX:n kautta lähetettyjen tietojen tarkistamiseen. / / Se palauttaa tosi/epätosi tietojen oikeellisuudesta riippuen ja täyttää / välitettävän $arr-taulukon parametrina joko datalla tai */ $errors = array(); $data = array(); // Käytä PHP 5.2.0:ssa käyttöön otettua filter_input-funktiota if(!($data["email"] = filter_input(INPUT_POST) "email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Anna kelvollinen sähköpostiosoite."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Jos URL-kenttään syötettiin virheellinen URL-osoite, // toimi ikään kuin URL-osoitetta ei olisi syötetty: $url = ""; ) // Käytä suodatinta takaisinsoittotoiminnolla: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Kommentti::validate_text")))) ( $errors["body"] = "Anna kommentin teksti."; ) jos anna nimi."; ) if(!empty($errors))( // Jos on virheitä, kopioi $errors-taulukko hakemistoon $arr: $arr = $errors; return false; ) // Jos syöte on oikein, puhdista tiedot ja kopioi se $arr : foreach($data muodossa $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // sähköpostin on oltava pienillä kirjaimilla: $arr["email"] = strtolower( trim($ arr["sähköposti"])); palauttaa tosi; )

Menetelmä validoi()(myös osa luokkaa) määritellään seuraavasti staattinen. Tämä tarkoittaa, että sitä voidaan kutsua suoraan konstruktin kanssa kommentti::validate(), luomatta luokkaobjektia. Tämä menetelmä vahvistaa AJAXin kautta välitetyt tiedot.

Menetelmä käyttää uusi ominaisuus suodatin, joka tuli saataville PHP 5.2.0. Tällä tavalla voimme helposti tarkistaa ja suodattaa skriptille välitetyt tiedot. Esimerkiksi, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) tarkoittaa, että tarkistamme jos $_POST["url"] oikea URL-osoite. Jos näin on, funktio palauttaa muuttujan arvon, muuten se palauttaa arvon väärä.

Ennen tällaisen funktion käyttöä oli tarpeen käyttää säännöllisiä lausekkeita tietojen validoimiseksi (käyttämällä konstruktiosarjaa jos). Lisäetuna on, että saamme tiedot ennen kuin teemme mitään tiettyjä muunnoksia.

On myös mahdollista määrittää toiminto, joka suorittaa lisämuutoksia dataan.

comment.class.php - Osa 3

yksityinen staattinen funktio valide_text($str) ( /* / Tätä menetelmää käytetään FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. jne.) ja muuntaa // rivinvaihtomerkin tunnisteeksi
: $str = nl2br(htmlerikoismerkit($str)); // Poista kaikki jäljellä olevat rivinvaihdot $str = str_replace(array(chr(10),chr(13)),"",$str); palauttaa $str; )

Viimeinen menetelmä validate_text välitetty paluufunktiona kahdessa kutsussa filter_input. Se muuntaa kaikki erikoiset HTML-merkit, mikä estää tehokkaasti XSS-hyökkäykset. Lisäksi se korvaa rivinvaihdot tunnisteilla
.

lähetä.php

/* / Tämä matriisi täytetään joko skriptille välitetyillä tiedoilla / tai virheilmoituksilla. /*/ $arr = array(); $validates = Kommentti::validate($arr); if($validates) ( /* Selvä, lisää tiedot tietokantaan: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["nimi"]."", "".$arr["url"]."", "".$arr["sähköposti"]."", "".$arr["body"]."")"); $arr["dt" "] = päivämäärä("r",aika()); $arr["id"] = mysql_insert_id(); /* / $arr:n tiedot on valmistettu mysql-kyselyä varten, / mutta meidän on näytettävä se, joten / valmistelemme kaikkia taulukon elementtejä: /*/ $arr = array_map("strislashes",$arr); $insertedComment = new Comment($arr); /* Tulosta juuri lisätyn kommentin merkintä: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Näytä virheilmoitukset */ echo "("status":0,"errors":". json_encode($arr ).")"; )

lähetä.php hakee kommentin tiedoista AJAX-pyynnön kautta. Vahvistaa sen ja tulostaa JSON-objektin, joka sisältää joko XHTML-merkinnän upotetulla kommentilla tai virheluettelon. jQuery-käyttöominaisuus Tila määrittääksesi, mitä pitäisi näyttää - joko virheilmoituksen tai kommenttimerkinnän lisäämistä sivulle.

Alla on kaksi esimerkkiä.

Onnistunut vastaus

( "status": 1, "html": "Html-koodi kommentin tulee tänne..." )

Omaisuus html sisältää kommenttikoodin.

Virhevastaus

( "status": 0, "errors": ( "sähköposti": "Anna kelvollinen sähköpostiosoite.", "body": "Anna kommentin teksti.", "nimi": "Anna nimi." ) )

Kun tapahtuu virhe, jQuery käy läpi errors-objektin ja näyttää viestejä virheitä sisältävien kenttien vieressä.

Vaihe 3 – CSS

Nyt kun merkinnät on luotu oikein ja näkyvät sivulla, voimme siirtyä tyyliin.

styles.css – Osa 1

.comment, #addCommentContainer( /* Kommenttien tyyli */ täyttö: 12px; leveys: 400px; sijainti: suhteellinen; taustaväri: #fcfcfc; reunus: 1px tasainen valkoinen; väri: #888; marginaali-ala: 25px; / * CSS3 pyöristetyt kulmat ja varjot */ -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 on sijoitettu ehdottomasti. / Kommentin ulkopoikkeama /*/ korkeus:50px; vasen:- 70px; sijainti :absoluuttinen; leveys:50px; background:url("img/default_avatar.gif") ei toistoa #fcfcfc; /* Keskitä pystysuunnassa: */ margin-top: -25px; yläosa: 50%; -moz- box-shadow: 1px 1px 0 #c2c2c2; -webkit-box-shadow: 1px 1px 0 #c2c2c2; box-shadow: 1px 1px 0 #c2c2c2; )

div .kommentti Ja #addCommentContainer on sama tyyli. Kulmien pyöristämiseen ja varjojen heijastamiseen käytetään useita CSS3-sääntöjä.

styles.css – Osa 2

.comment .avatar img( display:block; ) .comment .name( font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date( font-size:10px; padding:6px 0; sijainti:absoluuttinen; oikea:15px; yläosa:10px; väri:#bbb; ) .comment p, #addCommentContainer p( font-size: 18px; line-height: 1.5; overflow-x:hidden; ) #addCommentContainer input, # addCommentContainer textarea( /* Syöttötyyli */ 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(leveys:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* "Lähetä"-painike " */ 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; täyttö: 4px; margin-top:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #submit:hover( background-color:# 80cdf5; border-color:#52b1e2; )

Toisessa osassa asetimme tyylit kommenteille ja lomakeelementeille. Huomioikaa valitsin syöttö, joka korostaa elementtejä määritteen mukaan tyyppi.

Vaihe 4 - jQuery

Siirrytään nyt jQueryyn.

script.js

$(document).ready(function()( /* Seuraava koodi suoritetaan vasta kun DOM on ladattu */ /* Tämä lippu estää useiden kommenttien lähettämisen: */ var working = false; /* Lähettää lomakkeen tapahtuma: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(työ) return false; working = true; $("#submit").val("Toimii.. "); $("span .error").remove(); /* Lähetä lomakekentät send.php:lle: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Lähetä"); if(msg.status)( /* / Jos lisäys onnistui, lisää kommentti / sivun viimeisen kommentin alle. slideDown-tehoste /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Jos on ovat virheitä, kierrä objektin / msg.errors läpi ja tulosta ne sivulle /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Käytämme funktiokutsua $(asiakirja).ready() A, joka sitoo funktion tapahtumaan. Muuttuva työskentelee toimii lippuna, joka ilmoittaa, että AJAX-pyyntö on käynnissä (täten estetään saman kommentin päällekkäisyys).

Tarkistamme ominaisuuden POST AJAX -pyynnön palautustoiminnossa Tila määrittääksesi, onko kommentin lisääminen onnistunut. Jos kyllä, lisäämme tuloksena saadun merkinnän sivulle viimeisen kommentin jälkeen animaatiolla liukua alas.

Jos ongelmia esiintyi, näytämme virheilmoitukset lisäämällä jänneväli virhe vastaavaan elementtiin etiketti(elementtiattribuutti etiketti sisältää id syöte, jossa on virhe).

Valmis!

Johtopäätös

Jotta voit suorittaa komentosarjan palvelimellasi, sinun on luotava taulukko kommentteja MySQL-tietokannassasi. Voit tehdä sen SQL-koodilla tiedostosta table.sql, joka on syötettävä phpMyAdminin SQL-välilehdelle. Sitten sinun on asetettava tiedostoon MySQL-tietokantayhteysparametrit connect.php .

PHP:n kommentit ovat samanlaisia ​​kuin HTML:ssä käytetyt kommentit. PHP-syntaksissa kommentit alkavat aina erityisellä merkkijonolla, ja tulkki jättää huomioimatta kaiken tekstin, joka näkyy näiden erikoismerkkien välissä.

HTML:ssä kommentin päätarkoitus on toimia huomautuksena kehittäjille, jotka voivat tarkastella sivustosi lähdekoodia. PHP-kommentit eroavat toisistaan ​​siinä, että niitä ei näytetä vierailijoille. Ainoa tapa tarkastella PHP-kommentteja on avata tiedosto muokkausta varten. Tämä tekee PHP-kommenteista hyödyllisiä vain PHP-ohjelmoijille.

Jos unohdit tai et tiennyt, kuinka kommentit tehdään HTML:ssä, katso alla oleva esimerkki.

php-kommentin syntaksi: yksirivinen kommentti

Kun html:ssä on vain yksi kommenttityyppi, PHP:ssä on kaksi tyyppiä. Ensimmäinen tyyppi, josta keskustelemme, on yksirivinen kommentti. Toisin sanoen kommentti, joka käskee tulkkia jättämään huomioimatta sen, mitä tapahtuu kommenttien oikealla puolella olevalla rivillä. Käytä tätä kommenttia käyttämällä merkkejä "//" tai "#", jolloin PHP-tulkki ohittaa kaiken oikealla olevan tekstin.

Psst...Et näe PHP-kommenttejani!"; // echo "ei mitään"; // echo "Nimeni on Humperdinkle!"; # echo "En minäkään tee mitään"; ?>

Tulos:

Hei maailma! Psst...Et näe PHP-kommenttejani!

Huomaa, että useita kaikukomentojamme ei käsitelty, koska kommentoimme niitä erityisillä kommenttimerkeillä. Tämän tyyppisiä kommentteja käytetään usein kirjoittamaan nopeasti monimutkaisesta ja hämärästä koodista tai poistamaan väliaikaisesti PHP-koodirivi (virheenkorjaustarkoituksiin).

php-kommenttien syntaksi: monirivinen kommentti

Kuten HTML-kommentteja, monirivisiä kommentteja PHP:ssä voidaan käyttää kommentoimaan suuria koodilohkoja tai kirjoittamaan kommentteja useille riveille. Moniriviset kommentit PHP:ssä alkavat kirjaimella "/*" ja päättyvät kirjaimeen "*/". Kaikki näiden merkkien välillä jätetään huomioimatta.

Tulos.