Şərhlər üçün sadə skript necə yaradılır. AJAX istifadə edərək sadə şərh sistemi. Facebook-dan şərhlər: müsbət və mənfi cəhətləri

Bu dərsdə HTML, CSS, PHP-də şərhlərin necə edildiyindən danışacağam. Şərhlər veb səhifəsində görünməyən mətndir. Onlar sənədi strukturlaşdırmağa imkan verən hər cür izahatlar, xatırlatmalar, veb-masterlər üçün təsvirlər üçün istifadə olunur. Şərhlər kodu sazlayarkən əvəzolunmazdır, onlar sizə veb səhifənin işarələməsini tez bir zamanda gəzdirməyə və istədiyiniz bloku tapmağa imkan verir. Şərhlər tez-tez HTML kodunu sazlamaq üçün istifadə olunur. Məsələn, yerinə yetirilməməsi üçün müəyyən bir kod blokunu müvəqqəti olaraq şərh edə bilərsiniz və lazım olduqda onu bərpa etmək asandır.

HTML-də şərhlər

HTML-də şərhlər simvollardan istifadə etməklə formalaşır: . Beləliklə, bu simvollar arasındakı istənilən mətn şərhdir. Məsələni nəzərdən keçirək:

HTML-də şərh nümunəsi

CSS-də şərhlər

CSS-də şərhlər aşağıdakı simvollardan istifadə etməklə yaradılır: /* və */. Şərh yaratmaq üçün sadəcə veb səhifənin kodunu bu simvollar arasına qoymalısınız:

/* Bədən üçün üslublarla blokun başlanğıcı*/ bədən ( fon: #efeded; şrift ailəsi: Verdana, Helvetica, sans-serif; şrift ölçüsü: 12px; kənar: 0px; doldurma: 0px; ) /* Blokun sonu Body*/ PHP-də Şərhlər üçün üslublarla

PHP-də şərhlər tək sətirli və ya çoxsətirli ola bilər:

1) PHP-də tək sətirli şərhlər aşağıdakı simvollardan istifadə etməklə yaradılır: //. Sadəcə bu simvolu sətirdən əvvəl qoymaq kifayətdir və o şərh olunacaq.Bu seçim şərh yalnız bir sətirdən ibarət olduqda istifadə olunur.

2) Çoxsətirli şərhləri həyata keçirmək üçün aşağıdakı simvollardan istifadə olunur: /* və */. Şərh çoxlu sətirləri əhatə edərsə, bu seçim faydalıdır.

Beləliklə, öyrəndik

Bu dəfə sadə bir AJAX şərh sistemi hazırlayırıq. Bu, JSON istifadə edərək jQuery və PHP/MySQL arasında səmərəli qarşılıqlı fəaliyyətə necə nail olmağı nümayiş etdirəcək. Sistem elə işləyir ki, əlavə edilmiş şərhlər onsuz da səhifəyə yerləşdirilir. tam yenidən başladın, saytın yalnız istifadəçinin kompüterində işlədilməsi təəssüratı yaradır və bununla da əlavə şərhlə səhifəni yenidən yükləmək üçün tələb olunan bir müddət gözləmək ehtiyacından qaçır.

Həyata keçirməyi planlaşdırdığımız şeylərin təxmini demosunu təqdim edirik:

Addım 1 - XHTML

Əvvəlcə şərh işarəsinə nəzər salaq. Bu kod bir anda baxacağımız şərhdə PHP tərəfindən yaradılır.

Demo.php Adı 30 iyul 2010-cu il

Şərh

Avatar sinfinin div-də avatarla uyğun hiperlink var (istifadəçi şərh göndərərkən avatara etibarlı keçid göstəribsə), deyək ki, gravatar.com saytından. Yaxşı, biz PHP ilə işləyərkən buna qayıdacayıq. Nəhayət, DIV-lərdə ad və vaxt, eləcə də şərh, yəni paraqrafdakı mətnin özü var.

XHTML hissəsindəki digər vacib element şərhlərin təqdim edilməsi formasının özüdür (URL sahəsindən başqa bütün sahələr tələb olunur).

Demo.php

Şərh əlavə edin

Adınız? E-poçtunuz? Avatarınız? (isteğe bağlı) Nə demək istəyirdiniz?

Addım 2 - PHP

PHP verilənlər bazası bağlantılarını idarə edir MySQL məlumatları və işarələmə şərhi yaradır. Həmçinin, qəbul AJAX ilə bitir və şərhi şərhlər cədvəlinə daxil edir. Aşağıdakı səhifə şərhlərini çap edən kodu görə bilərsiniz.

Demo.php /* / Bütün şərhləri seçin və $comments massivini doldurun */ $comments = array(); $nəticə = mysql_query("SEÇ * şərhlərdən SİFARİŞ İD ASC ilə"); while($sətir = mysql_fetch_assoc($nəticə)) ( $şərhlər = yeni Şərh($sətir); )

MySQL sorğusu verilənlər bazasından bütün qeydləri seçir və $comments massivini aşağıda gördüyünüz şərh sinfi obyekti ilə doldurur. Bu massiv skript icra edildikdən sonra çıxarılır.

Demo.php /* / Şərhləri bir-bir çap edin */ foreach($şərhlər $c)( echo $c->markup(); )

Hər şərhdə səhifəni çap etmək üçün HTML kodu yaradan markup() metodu var. Bu metodu və sinfi aşağıda görə bilərsiniz.

Sinif verilənlər bazasından bir sıra götürür (mysql_fetch_assoc() ilə gətirilir) və onu $data dəyişənində saxlayır. O, yalnız bu sinfin metodları üçün əlçatandır və kənardan daxil olmaq mümkün deyil.

Comment.class.php - Addım 1 sinif Şərh ( şəxsi $data = massiv(); ictimai funksiya __construct($sətir) ( /* / Konstruktor */ $this->data = $row; ) ictimai funksiya işarəsi() ( / */ Bu üsul XHTML şərh işarələməsini çıxarır */ // Təxəllüs yaradın ki, // hər dəfə $this->data datası yazmalı deyilik: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"])( // Əgər şəxs şərh əlavə edərkən URL-i doldurubsa // Hiperlink təyin edin $link_open = ""; $link_close = ""; ) // Zamana çevrilmə $d[ "dt"] = strtotime($d["dt"]); // Defolt Gravatar şəkilləri üçün tələb olunur: $url = "http://".dirname($_SERVER["SERVER_NAME"]. $ _SERVER["REQUEST_URI "])."/img/default_avatar.gif"; " ".$link_open" qaytarın. ".$link_close." ".$link_open.$d["ad"]. $link_close." 1, "html"=>$insertedComment->markup())); ) else ( /* Səhv mesajlarını çap edin */ echo "("status":0,"errors":". json_encode($arr).")"; )

submit.php şərh məlumatlarını AJAX sorğusu kimi qəbul edir. O, onu təsdiq edir və ya uğurla təqdim edilmiş XHTML işarələməsinin JSON obyektini və ya səhv mesajlarının siyahısını qaytarır. jQuery xəta mesajlarının göstərilib-göstərilməyəcəyini və ya səhifə işarələmə şərhinin əlavə ediləcəyini müəyyən etmək üçün status xassəsindən istifadə edir.

Aşağıda iki nümunə görə bilərsiniz.

Addım 1 - XHTML

Əvvəlcə şərh işarəsinə baxaq. Verilmiş kod sinfi ilə PHP tərəfindən yaradılmışdır Şərh .

demo.php İstifadəçi adı 30 iyun 2010-cu il

Şərh mətni

div avatar link (istifadəçi şərh yazarkən düzgün URL daxil edibsə) və gravatar.com saytından əldə etdiyimiz avatar şəklini ehtiva edir. Biz PHP addımında işarələmə yaratmağa qayıdacağıq. Sonda izləyin div ad div vaxt və şərh mətni.

XHTML-də digər vacib element şərh formasıdır. POST istifadə edərək göndərilir. URL-dən başqa bütün sahələr doldurulmalıdır.

demo.php

Şərh əlavə edin

Ad E-poçt Vebsayt (isteğe bağlı) Şərhin məzmunu

Forma AJAX istifadə edərək təqdim olunur. Yoxlama həyata keçirilir fon submit.php-də. Hər bir sahənin müvafiq elementi var etiket, atribut dəsti ilə üçün.

Addım 2 - PHP

PHP MySQL verilənlər bazası ilə əlaqəni idarə edir və şərh üçün işarələmə yaradır. O, həmçinin AJAX sorğusunun sonunu alır və şərh məlumatlarını şərhlər cədvəlinə daxil edir.

demo.php /* / Bütün şərhləri seçin və $comments massivini obyektlərlə doldurun */ $comments = array(); $nəticə = mysql_query("SEÇ * şərhlərdən SİFARİŞ İD ASC ilə"); while($sətir = mysql_fetch_assoc($nəticə)) ( $şərhlər = yeni Şərh($sətir); )

MySQL sorğusu cədvəldəki bütün qeydləri seçir və $comments massivini sinif obyektləri ilə doldurur Şərh. Verilmiş massiv skript icra edildikdə daha da çıxış.

demo.php /* / Şərhləri bir-bir çap edin: */ foreach($c kimi şərhlər)( echo $c->markup(); )

Hər şərhdə düzgün HTML kodu yaradan, səhifədə göstərilməyə hazır olan işarələmə() metodu var. Aşağıda sinif və metod tərifləri verilmişdir.

Sinif verilənlər bazasından bir sıra gətirir (mysql_fetch_assoc() ilə əldə edilir) və onu $data dəyişənində saxlayır. Yalnız sinif metodu üçün mövcuddur.

comment.class.php - Hissə 1 sinif Şərh ( şəxsi $data = massiv(); ictimai funksiya __construct($sətir) ( /* / Konstruktor */ $this->data = $row; ) ictimai funksiya işarələməsi() ( / */ Bu üsulşərh üçün XHTML işarələməsini çıxarır */ // Hər dəfə onu yazmaq məcburiyyətində qalmamaq üçün ləqəb təyin edin $this->data: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"])( // Şərh əlavə edərkən URL daxil edilibsə, // açılış və bağlanış link teqlərini müəyyənləşdirin $link_open = ""; $link_close = ""; ) // Vaxtı çevirin UNIX formatına: $d["dt"] = strtotime($d["dt"]); // Defolt şəkli qurmaq üçün lazımdır: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"])."/img/default_avatar.gif"; " ".$link_open" qaytarın. ".$link_close." ".$link_open.$d["name"].$link_close." ".date("d M Y",$d["dt"])."

".$d["bədən"]."

"; }

Ssenari şərhlərdə avatarı təmsil etmək üçün qravatardan istifadə edir. Gravatar e-poçt ünvanı olan avatarla uyğun gələn çox faydalı xidmətdir. Avatar şəklini md5() kodlu e-poçt ünvanınızı gravatar.com saytına ötürməklə asanlıqla əldə etmək olar.

Skript icra olunduğu URL-i müəyyən edir və default_avatar.gif şəklinin dəqiq ünvanını müəyyən edir. Bu şəkil md5 hash ilə birlikdə ötürülür və əgər verilmiş e-poçt ünvanı üçün heç bir avatar tapılmadısa, alternativ şəkil göstəriləcək.

comment.class.php - Part 2 ictimai statik funksiya validate(&$arr) ( /* / Bu üsul AJAX vasitəsilə göndərilən məlumatı yoxlamaq üçün istifadə olunur. / / Verilənlərin etibarlılığından asılı olaraq doğru/yanlış qaytarır və doldurur / parametr kimi verilənlərə və ya xəta mesajına ötürülən $arr massivi */ $errors = array(); $data = array(); // PHP 5.2.0-da təqdim edilmiş filter_input funksiyasından istifadə edin if(!() $data["email" ] = filter_input(INPUT_POST,"email",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Lütfən düzgün E-poçt daxil edin."; ) if(!($data["url"] = filter_input(INPUT_POST," url",FILTER_VALIDATE_URL))) ( // URL sahəsinə etibarsız URL daxil edilibsə, // heç bir URL daxil edilməmiş kimi hərəkət edin: $url = ""; ) // Filtrdən istifadə edin geri çağırış funksiyası: if(!( $data["body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Şərh::validate_text")))) ( $errors["body" ] = "Şərh mətnini daxil edin ."; ) if(!($data["ad"] = filter_input(INPUT_POST,"name",FILTER_CALLBACK,array("options"=>"Şərh::validate_text")))) ( $errors["name" ] = "Lütfən, ad daxil edin."; ) if(!empty($errors))( // Əgər xətalar varsa, $errors massivini $arr-a köçürün: $arr = $errors; return false; ) // Əgər giriş düzgündürsə, məlumatları təmizləyin və onu kopyalayın $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // e-poçt kiçik hərflə yazılmalıdır: $arr["email"] = strtolower( trim($ arr["e-poçt"])); doğru qayıt; )

validate() metodu (həmçinin sinfin bir hissəsi) statik kimi müəyyən edilir. Bu o deməkdir ki, o, sinif obyekti yaratmadan birbaşa Comment::validate() konstruktu ilə çağırıla bilər. Bu üsul AJAX vasitəsilə ötürülən məlumatları təsdiqləyir.

Metod istifadə edir yeni xüsusiyyət PHP 5.2.0-da mövcud olan filtr. Bu yolla skriptə ötürülən məlumatları asanlıqla yoxlaya və filtrləyə bilərik. Misal üçün, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) o deməkdir ki, biz $_POST["url"]-nin etibarlı URL olub-olmadığını yoxlayırıq. Əgər belədirsə, onda funksiya dəyişənin dəyərini qaytarır, əks halda false qaytarır.

Belə bir funksiyadan istifadə etməzdən əvvəl istifadə etmək lazım idi müntəzəm ifadələr məlumatların yoxlanılması üçün (bir sıra konstruksiyalardan istifadə etməklə əgər). Əlavə fayda ondan ibarətdir ki, biz hər hansı bir xüsusi transformasiya etməzdən əvvəl məlumatları əldə edirik.

Əlavə məlumat dəyişikliklərini həyata keçirəcək funksiyanı müəyyən etmək də mümkündür.

comment.class.php - Hissə 3 şəxsi statik funksiya validate_text($str) ( /* / Bu üsul FILTER_CALLBACK */ if(mb_strlen($str,"utf8") kimi istifadə olunur