Nieustraszone komentarze php. Prosty system komentowania wykorzystujący AJAX. Składnia komentarza php: komentarz jednowierszowy

kiedyś pisałem o. Więc rozważaliśmy tylko tam ” chciwy„przedstawiciele. Jednak nie zawsze ich” chciwość„Nam to pomaga, bardzo często boli. Nieco niżej pokażę przykład, na którym można wyraźnie zobaczyć, co czasami robią, a także pokazać, jak zmniejszyć ich zapał i sprawić, by kwantyfikatory powtórzeń są „leniwe”.

Spójrzmy na prosty i już klasyczny przykład:

$str = "Mały linia C pogrubiony wybór.";
.*<\/b>
echo $wynik_str;
?>

Być może oczekujesz czegoś takiego: Małe pogrubienie tutaj z pogrubieniem tutaj„. To znaczy po prostu zastąpienie treści wewnątrz tagu<B> do ciągu, który określiliśmy wraz z samym tagiem. Jednak nie jest to do końca prawdą, ponieważ w tym miejscu „ chciwość kwantyfikatorów„. W rezultacie zamiennik nie znajdował się w każdym tagu<B>, ale od pierwszego znacznika otwierającego do ostatniego znacznika zamykającego. Oto czym jest chciwość.

Oto jak napisać ten kod, aby zamiana przebiegła tak, jak chcemy:

$str = "Mały linia C pogrubiony wybór.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $wynik_str;
?>

Wszystko, co zmieniliśmy, to wyrażenie regularne po kwantyfikatorze powtórzeń " .* „znak zapytania, który jest sprawiedliwy sprawia, że ​​kwantyfikator jest „leniwy”. Teraz wynikiem będzie: „ Małe pogrubienie tutaj z pogrubieniem tutaj. co staraliśmy się osiągnąć.

Naprawdę mam nadzieję, że rozumiesz problem. kwantyfikatory „chciwości”. i zrozumieć, jak działają. Zdałem sobie również sprawę, jak można to naprawić za pomocą prostego znaku ” ? ". Ten temat jest naprawdę ważny, a ogromna liczba nowicjuszy w dziedzinie wyrażeń regularnych popełnia te same błędy z tym związane „chciwość” kwantyfikatorów powtórzeń, więc jeśli jeszcze nie zrozumiałeś całego znaczenia do końca, ponownie przeczytaj artykuł.

25.04.2017


Cześć wszystkim!
Nadal uczymy się podstaw PHP od podstaw!
W tej lekcji opowiem Ci, czym jest komentarz w PHP, aw praktyce spróbujemy zapisać Twój komentarz w kodzie. Ale to nie wszystko. Chcę również powiedzieć, jak komentować kod i dlaczego w ogóle powinno się to robić.

Co zawiera komentarzPHP
Skomentuj wPHP to wskazówka php-developera do szybkiej orientacji w kodzie, a także do edycji.

Komentarz w PHP nie jest widoczny dla użytkownika, który otworzył stronę internetową do przeglądania. Nawet jeśli użytkownik zdecyduje się spojrzeć źródło strona, komentarz nadal nie będzie widoczny, ponieważ wszystkie pliki php.

Komentarz do kodu PHP

Istnieją 2 rodzaje komentarzy do kodu PHP:

→ jednolinijkowy
→ multilinii

⇒ Jednowierszowy komentarz dla PHP
W przypadku komentarza jednowierszowego użyj znaków „//” lub „#”

Po tych znakach wszystko napisane w jednym wierszu zostanie zignorowane i potraktowane jako komentarz.

Subskrybuj aktualizację"; # subskrybuj (to jest komentarz) ?>


Subskrybuj aktualizację

⇒ Wielowierszowy komentarz dla PHP
Komentarz wielowierszowy dla PHP zaczyna się od "/*" i kończy na "*/".
Wszystko pomiędzy tymi znakami będzie ignorowane i traktowane jako komentarz.
Komentarz wielowierszowy jest używany, jeśli wpis zawiera kilka wierszy.

Na ekranie zobaczysz tylko następujący tekst:

Witajcie czytelnicy bloga - strona !!!

PS: Zawsze komentuj swój kod. Jeśli myślisz, że za 1-2 lata będziesz pamiętał wszystko, co zrobiłeś w kodzie, to się mylisz, szansa jest bardzo mała. Nawet jeśli pamiętasz, będziesz musiał spędzić dużo czasu na nauce - co, gdzie i dlaczego ...
Uprzyjemnij sobie przyszłość - skomentuj kod, a wtedy powiesz sobie "DZIĘKUJĘ!!!".
Zostaw komentarz w kodzie, zajmie to 1 minutę Twojego czasu, ale zaoszczędzi cały dzień w przyszłości.

Skomentuj kod PHP

Powiedzmy, że napisałeś kod php, ale z jakiegoś powodu musisz usunąć 2 linie z kodu.
Nie spieszę się, aby usunąć coś z kodu, zwłaszcza jeśli jest to kod php, lepiej to skomentuję. I nagle konieczne będzie zwrócenie kodu. Łatwiej jest odkomentować niż napisać kod w nowy sposób.

Jak skomentować kod wPHP
Przykład z komentarzem jednowierszowym:

Zapisz się do aktualizacji”; ?>

Przykład z wielowierszowym komentarzem.

Krok 1 — XHTML

Najpierw spójrzmy na znaczniki komentarzy. Podany kod wygenerowany przez PHP z klasą Komentarz .

demo.php

Nazwa użytkownika
30 czerwca 2010 r

Tekst komentarza

dz awatara zawiera link (jeśli użytkownik podał poprawny adres URL podczas publikowania komentarza) oraz obraz awatara, który otrzymujemy z gravatar.com. Wrócimy do generowania znaczników w kroku PHP. Na koniec śledź dz nazwa dz czas i tekst komentarza.

Inny ważny element w XHTML jest formularz komentarza. Wysyła z POST. Wszystkie pola oprócz adresu URL muszą być wypełnione.

demo.php

Dodaj komentarz

Formularz jest przesyłany za pomocą AJAX. Kontrola jest wykonywana w tle prześlij.php. Każde pole ma odpowiedni element etykieta, z ustawionym atrybutem Do .

Krok 2 — PHP

PHP obsługuje komunikację z bazą danych Dane MySQL i generuje znaczniki dla komentarza. Otrzymuje również koniec żądania AJAX i wstawia dane komentarza do tabeli uwagi.

demo.php

/* / Zaznacz wszystkie komentarze i zapełnij tablicę $comments obiektami */ $comments = array(); $result = mysql_query("WYBIERZ * Z komentarzy ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = new Comment($wiersz); )

Zapytanie MySQL wybiera wszystkie rekordy z tabeli i wypełnia tablicę $komentarze obiekty klasy komentarz. Ta tablica jest wyświetlana dalej, gdy skrypt jest wykonywany.

demo.php

/* / Wydrukuj komentarze jeden po drugim: */ foreach($comments as $c)( echo $c->markup(); )

Każdy komentarz ma swoją metodę narzut(), który generuje poprawny kod HTML, gotowy do wyświetlenia na stronie. Poniżej znajdują się definicje klas i metod.

Klasa otrzymuje wiersz z bazy danych (uzyskany za pomocą mysql_fetch_assoc()) i zapisać go w zmiennej $dane. Jest dostępna tylko dla metody klasowej.

comment.class.php - Część 1

class Comment ( private $data = array(); public function __construct($row) ( /* / Constructor */ $this->data = $row; ) public function markup() ( /* / Ta metoda generuje znaczniki XHTML dla */ // Ustaw alias, aby uniknąć zapisywania $this->data za każdym razem: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Jeśli adres URL został wprowadzony podczas dodawania komentarza, // określ otwierające i zamykające tagi łącza $link_open = ""; $link_close = ""; ) // Konwersja czasu do formatu UNIX: $d["dt" ] = strtotime ($d["dt"]); // Potrzebne do ustawienia obrazu domyślnego: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; powrót "
".$link_otwarty." ".$link_close."
".$link_open.$d["nazwa"].$link_close."
".date("d M Y",$d["dt"])."

".$d["treść"]."

"; }

Skrypt używa gravatara do reprezentowania awatara w komentarzach. Gravatar to bardzo przydatna usługa, która dopasowuje awatar do adresu e-mail. Obraz awatara można łatwo uzyskać, przekazując zakodowaną funkcję md5() Twój adres e-mail na gravatar.com.

Skrypt określa adres URL, na którym jest wykonywany, oraz określa dokładny adres obrazu default_avatar.gif. Ten obraz jest przekazywany wraz z hashem md5, a jeśli dla podanego adresu e-mail nie zostanie znaleziony awatar, zostanie wyświetlony alternatywny obraz.

comment.class.php - Część 2

public static function validate(&$arr) ( /* / Ta metoda służy do sprawdzania poprawności danych przesłanych przez AJAX. / / Zwraca true/false w zależności od poprawności danych i wypełnia / przekazaną tablicę $arr jako parametr z data lub */ $errors = array(); $data = array(); // Użyj funkcji filter_input wprowadzonej w PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Wprowadź prawidłowy adres e-mail."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Jeśli w polu adresu URL został wprowadzony nieprawidłowy adres URL, // działaj tak, jakby adres URL nie został wprowadzony: $url = ""; ) // Użyj filtra z funkcją wywołania zwrotnego: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Proszę wprowadzić tekst komentarza."; ) if(!( $data["nazwa"] = filter_input(INPUT_POST,"name",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["name"] = "Proszę wpisz imię. "; ) if(!empty($errors))( // Jeśli są błędy, skopiuj tablicę $errors do $arr: $arr = $errors; return false; ) // Jeśli dane wejściowe są poprawne, wyczyść dane i skopiuj go do $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // e-mail musi być pisany małymi literami: $arr["email"] = strtolower( trim($ arr["e-mail"])); zwróć prawdę; )

metoda uprawomocnić()(również część klasy) jest zdefiniowany jako statyczny. Oznacza to, że można go wywołać bezpośrednio z konstrukcją komentarz::walidacja(), bez tworzenia obiektu klasy. Ta metoda sprawdza poprawność danych przekazywanych przez AJAX.

Metoda wykorzystuje Nowa cecha filtr, który stał się dostępny w PHP 5.2.0. W ten sposób możemy łatwo sprawdzić i przefiltrować dane, które są przekazywane do skryptu. Na przykład, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) oznacza, że ​​sprawdzamy, czy $_POST["URL"] poprawny URL. Jeśli tak, to funkcja zwraca wartość zmiennej, w przeciwnym razie zwraca wartość FAŁSZ.

Przed użyciem takiej funkcji konieczne było użycie wyrażeń regularnych do walidacji danych (za pomocą szeregu konstrukcji Jeśli). Dodatkową korzyścią jest to, że uzyskujemy dane przed wykonaniem jakichkolwiek konkretnych przekształceń.

Możliwe jest również zdefiniowanie funkcji, która wykona dodatkowe modyfikacje danych.

comment.class.php - Część 3

prywatna funkcja statyczna validate_text($str) ( /* / Ta metoda jest używana jako FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. itp.) i przekonwertuj // znak nowej linii na znacznik
: $str = nl2br(htmlspecialchars($str)); // Usuń wszystkie pozostałe znaki nowej linii $str = str_replace(array(chr(10),chr(13)),"",$str); zwróć $str; )

Ostatnia metoda sprawdź_poprawność_tekstu przekazana jako funkcja zwracająca w dwóch wywołaniach wejście_filtra. Konwertuje wszystkie znaki specjalne HTML, co skutecznie blokuje ataki XSS. Zastępuje również znaki nowej linii znacznikami
.

prześlij.php

/* / Ta tablica zostanie wypełniona danymi / przekazanymi do skryptu lub / lub komunikatami o błędach. /*/ $tablica = tablica(); $waliduje = Komentarz::waliduje($arr); if($validates) ( /* W porządku, wstaw dane do bazy danych: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"].", "".$arr["e-mail"].", ".$arr["treść"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Dane w $arr są przygotowane do zapytania mysql, / ale musimy je wyświetlić, więc / przygotowujemy wszystkie elementy w tablicy: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Wydrukuj znaczniki właśnie wstawionego komentarza: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Wyświetl komunikaty o błędach */ echo "("status": 0,"błędy":". json_encode($arr).""; )

prześlij.php pobiera komentarz z danych za pośrednictwem żądania AJAX. Sprawdza poprawność i generuje obiekt JSON zawierający znaczniki XHTML z osadzonym komentarzem lub listę błędów. właściwość użycia jQuery status aby określić, co powinno zostać wyświetlone - komunikat o błędzie lub dodanie znaczników komentarza do strony.

Poniżej znajdują się dwa przykłady.

Pomyślna odpowiedź

( "status": 1, "html": "Kod HTML komentarza znajduje się tutaj..." )

Nieruchomość HTML zawiera kod komentarza.

Odpowiedź na błąd

( "status": 0, "errors": ( "email": "Wprowadź prawidłowy adres e-mail.", "body": "Wprowadź treść komentarza.", "name": "Wprowadź nazwę." ) )

Gdy wystąpi błąd, jQuery przechodzi przez obiekt błędów i wyświetla komunikaty obok pól zawierających błędy.

Krok 3 — CSS

Po poprawnym wygenerowaniu i wyświetleniu znaczników na stronie możemy przejść do stylizacji.

style.css — część 1

.comment, #addCommentContainer( /* Styl komentarzy */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * CSS3 zaokrąglone rogi i cienie */ -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( /* / Awatar jest ustawiony bezwzględnie. / Przesunięcie zewnętrzne komentarza div /*/ height:50px; left:- 70px; pozycja: bezwzględna; szerokość: 50 pikseli; tło: url („img/default_avatar.gif”) bez powtórzeń #fcfcfc; /* Wyśrodkuj w pionie: */ 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; )

dz .komentarz I #addCommentContainer mieć ten sam styl. Kilka reguł CSS3 jest używanych do zaokrąglania rogów i odbijania cieni.

style.css — część 2

.comment .avatar img( display:block; ) .comment .name(rozmiar-czcionki:20px; dopełnienie-dolne:10px; kolor:#ccc; ) .comment .date(rozmiar-czcionki:10px; dopełnienie:6px 0; pozycja: bezwzględna; prawa: 15 pikseli; góra: 10 pikseli; kolor: #bbb; ) .comment p, #addCommentContainer p (rozmiar czcionki: 18 pikseli; wysokość linii: 1,5; przepełnienie-x: ukryta; ) #addCommentContainer wejście, # addCommentContainer textarea( /* Styl wprowadzania */ 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( /* Przycisk „Prześlij” " */ kolor tła: #58B9EB; obramowanie: jednolity 1px #40A2D4; kolor: #FFFFFF; kursor: wskaźnik; rodzina czcionek: "Myriad Pro", Arial, Helvetica, bezszeryfowa; rozmiar czcionki: 14 pikseli; czcionka -waga: pogrubienie; dopełnienie: 4px; margines-góra: 5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #prześlij:hover(kolor-tła:# 80cdf5; kolor obramowania:#52b1e2; )

W drugiej części ustawiamy style dla komentarzy i elementów formularzy. Zwróćmy uwagę na selektor wejście, który wyróżnia elementy w zależności od atrybutu typ.

Krok 4 — jQuery

Przejdźmy teraz do jQuery.

skrypt.js

$(document).ready(function()( /* Poniższy kod jest wykonywany dopiero po załadowaniu DOM */ /* Ta flaga zapobiega przesyłaniu wielu komentarzy: */ var working = false; /* Przechwytywanie formularza wysyłania zdarzenie: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Working.. "); $("span .error").remove(); /* Prześlij pola formularza do send.php: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Jeśli wstawienie się powiodło, dodaj komentarz / pod ostatnim na stronie z efekt slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Jeśli istnieje są błędami, przejdź przez obiekt / msg.errors i wyślij je na stronę /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ), "json"); )); ));

Używamy wywołania funkcji $(dokument).gotowy() A, które wiąże funkcję ze zdarzeniem. Zmienny pracujący działa jak flaga, która sygnalizuje, że żądanie AJAX jest w toku (zapobiegając w ten sposób powielaniu tego samego komentarza).

W funkcji zwracającej dla żądania POST AJAX sprawdzamy właściwość status w celu ustalenia, czy komentarz został pomyślnie wstawiony. Jeśli tak, dodajemy wynikowy znacznik na stronę po ostatnim komentarzu z animacją zjechać w dół.

Jeśli wystąpiły problemy, wyświetlamy komunikaty o błędach, dodając Zakres błąd do odpowiedniego elementu etykieta(atrybut elementu etykieta zawiera ID wejście, które zawiera błąd).

Gotowy!

Wniosek

Aby uruchomić skrypt na swoim serwerze, musisz utworzyć tabelę uwagi w swojej bazie danych MySQL. Możesz to zrobić za pomocą kodu SQL z pliku tabela.sql, który należy wprowadzić w zakładce SQL w phpMyAdmin. Następnie musisz ustawić parametry połączenia z bazą danych MySQL w pliku połącz.php .

Komentarze w PHP są podobne do komentarzy używanych w HTML. W składni PHP komentarze zawsze zaczynają się od specjalnej sekwencji znaków, a każdy tekst, który pojawi się pomiędzy tymi znakami specjalnymi, zostanie zignorowany przez interpreter.

W HTML głównym celem komentarza jest informacja dla programistów, którzy mogą przeglądać kod źródłowy Twojej witryny. Komentarze PHP różnią się tym, że nie będą wyświetlane odwiedzającym. Jedynym sposobem wyświetlenia komentarzy PHP jest otwarcie pliku do edycji. To sprawia, że ​​komentarze PHP są przydatne tylko dla programistów PHP.

Jeśli zapomniałeś lub nie wiedziałeś, jak tworzy się komentarze w HTML, zobacz poniższy przykład.

Składnia komentarza php: komentarz jednowierszowy

Podczas gdy HTML ma tylko jeden typ komentarza, PHP ma dwa typy. Pierwszym typem, który omówimy, jest komentarz jednowierszowy. To znaczy komentarz, który mówi tłumaczowi, aby zignorował wszystko, co dzieje się w tej linii po prawej stronie komentarzy. Aby użyć tego komentarza, użyj znaków „//” lub „#”, a cały tekst po prawej stronie zostanie zignorowany przez interpreter PHP.

Psst...Nie możesz zobaczyć moich komentarzy PHP!"; // echo "nic"; // echo "Nazywam się Humperdinkle!"; # echo "Ja też nic nie robię"; ?>

Wynik:

Witaj świecie! Psst... Nie widzisz moich komentarzy PHP!

Zauważ, że kilka naszych poleceń echa nie zostało przetworzonych, ponieważ skomentowaliśmy je specjalnymi znakami komentarza. Ten typ komentarza jest często używany do szybkiego pisania o skomplikowanym i zaciemnionym kodzie lub do tymczasowego usunięcia wiersza kodu PHP (w celu debugowania).

Składnia komentarza php: komentarz wielowierszowy

Podobnie jak komentarze HTML, komentarze wielowierszowe w PHP mogą być używane do komentowania dużych bloków kodu lub pisania komentarzy w wielu wierszach. Komentarze wielowierszowe w PHP zaczynają się od "/*" i kończą na "*/". Wszystko między tymi znakami zostanie zignorowane.

Wynik.