Komentar berani php. Sistem komentar sederhana menggunakan AJAX. sintaks komentar php: komentar satu baris

Saya pernah menulis tentang. Jadi, kami hanya mempertimbangkan di sana " tamak"perwakilan. Namun, tidak selalu mereka " ketamakan"Ini membantu kami, sangat sering menyakitkan. Sedikit lebih rendah saya akan menunjukkan contoh di mana Anda dapat dengan jelas melihat apa yang kadang-kadang mereka lakukan, dan juga menunjukkan bagaimana mengurangi semangat mereka dan membuat bilangan pengulangan adalah "malas".

Mari kita lihat contoh sederhana dan sudah klasik:

$str = "Kecil garis c berani pilihan.";
.*<\/b>
gema $hasil_str;
?>

Mungkin Anda mengharapkan sesuatu seperti ini: bold_highlight kecil di sini dengan bold_highlight di sini". Artinya, hanya mengganti konten di dalam tag<b> ke string yang kami tentukan bersama dengan tag itu sendiri. Namun, ini tidak sepenuhnya benar, karena di sinilah " keserakahan bilangan". Dan akibatnya, penggantiannya tidak ada di dalam setiap tag<b>, tetapi dari tag pembuka pertama hingga tag penutup terakhir. Inilah keserakahan.

Berikut cara menulis kode ini agar penggantian terjadi seperti yang kita inginkan:

$str = "Kecil garis c berani pilihan.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
gema $hasil_str;
?>

Yang kami ubah hanyalah regex setelah quantifier pengulangan " .* "tanda tanya, yang adil membuat quantifier "malas". Sekarang hasilnya akan menjadi: " Sebuah bold_highlight kecil di sini dengan bold_highlight di sini. yang kami coba capai.

Saya sangat berharap Anda memahami masalahnya. pengukur "keserakahan". dan memahami cara kerjanya. Dan juga menyadari bagaimana ini bisa diperbaiki dengan tanda sederhana " ? ". Topik ini sangat penting, dan sejumlah besar pendatang baru dalam ekspresi reguler membuat kesalahan yang sama terkait "keserakahan" dari bilangan pengulangan, jadi jika Anda belum menyadari arti keseluruhannya sampai akhir, maka baca kembali artikel tersebut.

25.04.2017


Halo!
Kami terus mempelajari dasar-dasar PHP dari awal!
Dalam pelajaran ini saya akan memberi tahu Anda apa itu komentar di PHP dan dalam praktiknya kami akan mencoba menulis komentar Anda dalam kode. Tapi itu belum semuanya. Saya juga ingin memberi tahu Anda cara mengomentari kode dan mengapa itu harus dilakukan.

Apa itu komentar diPHP
Komentar diPHP adalah petunjuk php-developer untuk orientasi cepat dalam kode, serta untuk mengedit.

Komentar dalam PHP tidak dapat dilihat oleh pengguna yang membuka halaman web untuk dilihat. Bahkan jika pengguna memutuskan untuk melihat sumber halaman, komentar masih tidak akan terlihat, karena semua file php.

komentar kode PHP

Ada 2 jenis komentar untuk kode PHP:

→ satu baris
→ multi baris

⇒ Komentar baris tunggal untuk PHP
Untuk komentar satu baris, gunakan karakter "//" atau "#"

Setelah karakter ini, semua yang ditulis dalam satu baris akan diabaikan dan diperlakukan sebagai komentar.

Berlangganan untuk memperbarui"; # berlangganan (ini adalah komentar) ?>


Berlangganan pembaruan

⇒ Komentar multibaris untuk PHP
Komentar multibaris untuk PHP dimulai dengan "/*" dan diakhiri dengan "*/".
Apa pun di antara karakter ini akan diabaikan dan diperlakukan sebagai komentar.
Komentar multi-baris digunakan jika ada beberapa baris dalam entri.

Di layar, Anda hanya akan melihat teks berikut:

Halo pembaca blog - situs !!!

PS: Selalu komentari kode Anda. Jika Anda berpikir bahwa Anda akan mengingat semua yang Anda lakukan dalam kode dalam 1-2 tahun, Anda salah, kemungkinannya sangat kecil. Bahkan jika Anda ingat, Anda harus menghabiskan banyak waktu untuk belajar - apa, di mana dan mengapa ...
Jadikan masa depan menyenangkan untuk diri Anda sendiri - komentari kodenya dan kemudian Anda akan berkata pada diri sendiri "TERIMA KASIH!!!".
Tinggalkan komentar di kode, ini akan memakan waktu 1 menit dari waktu Anda, tetapi ini akan menghemat satu hari penuh di masa mendatang.

Komentari kode PHP

Katakanlah Anda menulis kode php, tetapi karena alasan tertentu Anda perlu menghapus 2 baris dari kode tersebut.
Saya tidak terburu-buru untuk menghapus sesuatu dari kode, terutama jika itu kode php, lebih baik saya berkomentar. Dan tiba-tiba perlu mengembalikan kodenya. Lebih mudah untuk menghapus komentar daripada menulis kode dengan cara baru.

Cara mengomentari kode diPHP
Contoh dengan komentar satu baris:

Berlangganan untuk memperbarui"; ?>

Contoh dengan komentar multi-baris.

Langkah 1 - XHTML

Pertama, mari kita lihat markup komentar. Kode yang diberikan dihasilkan oleh PHP dengan kelas Komentar .

demo.php

Nama belakang
30 Juni 2010

Teks komentar

div avatar berisi tautan (jika pengguna memasukkan URL yang benar saat memposting komentar) dan gambar avatar yang kami dapatkan dari gravatar.com . Kami akan kembali membuat markup di langkah PHP. Pada akhirnya ikuti div nama div waktu dan teks komentar.

Lainnya elemen penting di XHTML adalah formulir komentar. Dia mengirim dengan POS. Semua kolom kecuali URL harus diisi.

demo.php

Tambahkan komentar

Formulir dikirimkan menggunakan AJAX. Pemeriksaan dilakukan di latar belakang kirim.php. Setiap bidang memiliki elemen yang sesuai label, dengan set atribut untuk .

Langkah 2 - PHP

PHP menangani komunikasi dengan database data MySQL dan menghasilkan markup untuk komentar. Itu juga mendapatkan akhir dari permintaan AJAX dan memasukkan data komentar ke dalam tabel komentar.

demo.php

/* / Pilih semua komentar dan isi array $comments dengan objek */ $comments = array(); $result = mysql_query("SELECT * FROM comments ORDER BY id ASC"); while($baris = mysql_fetch_assoc($hasil)) ( $komentar = Komentar baru($baris); )

Kueri MySQL memilih semua rekaman dari tabel dan mengisi larik $komentar objek kelas komentar. Array ini dihasilkan lebih lanjut saat skrip dijalankan.

demo.php

/* / Cetak komentar satu per satu: */ foreach($comments as $c)( echo $c->markup(); )

Setiap komentar memiliki metode markup(), yang menghasilkan kode HTML yang benar, siap ditampilkan di halaman. Berikut ini adalah definisi kelas dan metode.

Kelas menerima baris dari database (diperoleh menggunakan mysql_fetch_assoc()) dan menyimpannya dalam sebuah variabel $data. Ini hanya tersedia untuk metode kelas.

comment.class.php - Bagian 1

class Comment ( private $data = array(); public function __construct($row) ( /* / Constructor */ $this->data = $row; ) public function markup() ( /* / Metode ini menampilkan markup XHTML untuk */ // Tetapkan alias untuk menghindari penulisan $this->data setiap saat: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Jika URL dimasukkan saat menambahkan komentar, // tentukan tag tautan pembuka dan penutup $link_open = ""; $link_close = ""; ) // Ubah waktu ke format UNIX: $d["dt" ] = strtotime ($d["dt"]); // Diperlukan untuk mengatur gambar default: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; return "
".$link_buka." ".$link_close."
".$link_open.$d["nama"].$link_close."
".tanggal("d SAYA",$d["dt"])."

".$d["tubuh"]."

"; }

Skrip menggunakan gravatar untuk mewakili avatar di komentar. Gravatar adalah layanan yang sangat berguna yang mencocokkan avatar dengan alamat email. Gambar avatar dapat dengan mudah diperoleh dengan melewati fungsi yang disandikan md5() alamat email Anda di gravatar.com.

Script menentukan URL yang dieksekusi dan menentukan alamat yang tepat dari gambar default_avatar.gif. Gambar ini diteruskan bersama hash md5, dan jika tidak ada avatar yang ditemukan untuk alamat email yang diberikan, maka gambar alternatif akan ditampilkan.

comment.class.php - Bagian 2

public static function validate(&$arr) ( /* / Metode ini digunakan untuk memvalidasi data yang dikirim melalui AJAX. / / Mengembalikan true/false tergantung pada validitas data, dan mengisi / array $arr, yang diteruskan sebagai parameter dengan data atau */ $errors = array(); $data = array(); // Gunakan fungsi filter_input yang diperkenalkan di PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Masukkan Email yang valid."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Jika URL yang dimasukkan tidak valid di bidang URL, // bertindak seolah-olah tidak ada URL yang dimasukkan: $url = ""; ) // Gunakan filter dengan fungsi callback: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Silakan masukkan teks komentar."; ) if(!( $data["nama"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["name"] = "Please enter a name."; ) if(!empty($errors))( // Jika ada error, salin array $errors ke $arr: $arr = $errors; return false; ) // Jika input benar, bersihkan data dan salin ke $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // email harus huruf kecil: $arr["email"] = strtolower( trim($arr["email"])); kembali benar; )

metode mengesahkan()(juga bagian dari kelas) didefinisikan sebagai statis. Ini berarti dapat dipanggil langsung dengan konstruk komentar::validasi(), tanpa membuat objek kelas. Metode ini memvalidasi data yang dilewatkan melalui AJAX.

Metodenya menggunakan fitur baru filter, yang tersedia di PHP 5.2.0. Dengan cara ini kita dapat dengan mudah memeriksa dan memfilter data yang diteruskan ke skrip. Sebagai contoh, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) berarti kita memeriksa apakah $_POST["url"] URL yang benar. Jika demikian, maka fungsi mengembalikan nilai variabel, jika tidak maka mengembalikan nilai Salah.

Sebelum menggunakan fungsi seperti itu, perlu menggunakan ekspresi reguler untuk memvalidasi data (menggunakan serangkaian konstruksi jika). Manfaat tambahannya adalah kami mendapatkan data sebelum melakukan transformasi tertentu.

Dimungkinkan juga untuk menentukan fungsi yang akan melakukan modifikasi data tambahan.

comment.class.php - Bagian 3

fungsi statis pribadivalidasi_teks($str) ( /* / Metode ini digunakan sebagai FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. dll) dan konversi // karakter baris baru menjadi tag
: $str = nl2br(htmlspecialchars($str)); // Hapus baris baru yang tersisa $str = str_replace(array(chr(10),chr(13)),"",$str); return $str; )

Metode terakhir validasi_teks dilewatkan sebagai fungsi pengembalian dalam dua panggilan filter_input. Itu mengubah semua karakter HTML khusus, yang secara efektif memblokir serangan XSS. Juga menggantikan baris baru dengan tag
.

kirim.php

/* / Array ini akan diisi dengan data / yang diteruskan ke skrip, / atau pesan kesalahan. /*/ $arr = larik(); $validasi = Komentar::validasi($arr); if($validates) ( /* Baiklah, masukkan data ke database: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Data di $arr disiapkan untuk mysql query, / tapi kita perlu menampilkannya, jadi / kami sedang mempersiapkan semua elemen dalam array: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Cetak markup dari komentar yang baru saja dimasukkan: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Menampilkan pesan error */ echo "("status":0,"errors":". json_encode($arr )")"; )

kirim.php mengambil komentar dari data melalui permintaan AJAX. Memvalidasinya dan menampilkan objek JSON yang berisi markup XHTML dengan komentar tersemat atau daftar kesalahan. jQuery menggunakan properti status untuk menentukan apa yang harus ditampilkan - baik pesan kesalahan atau menambahkan markup komentar ke halaman.

Di bawah ini adalah dua contoh.

Tanggapan sukses

( "status": 1, "html": "Kode Komentar Html Datang Di Sini..." )

Properti html berisi kode komentar.

Respons kesalahan

( "status": 0, "errors": ("email": "Masukkan Email yang valid.", "body": "Silakan masukkan isi komentar.", "name": "Silakan masukkan nama." ) )

Ketika ada kesalahan, jQuery mengulang melalui objek kesalahan dan menampilkan pesan di sebelah bidang yang memiliki kesalahan.

Langkah 3 - CSS

Sekarang setelah markup dibuat dan ditampilkan dengan benar di halaman, kita dapat beralih ke penataan gaya.

styles.css - Bagian 1

.comment, #addCommentContainer( /* Gaya untuk komentar */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * CSS3 membulatkan sudut dan bayangan */ -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 diposisikan secara absolut. / Outer offset untuk div komentar /*/ height:50px; left:- 70px; posisi :absolut; lebar:50px; latar belakang:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Tengah vertikal: */ margin-top:-25px; top:50%; -moz- kotak-bayangan :1px 1px 0 #c2c2c2; -webkit-kotak-bayangan:1px 1px 0 #c2c2c2; kotak-bayangan:1px 1px 0 #c2c2c2; )

div .komentar dan #addCommentContainer memiliki gaya yang sama. Beberapa aturan CSS3 digunakan untuk membulatkan sudut dan memantulkan bayangan.

styles.css - Bagian 2

.comment .avatar img( display:block; ) .comment .name( font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date( font-size:10px; padding:6px 0; position:absolute; kanan:15px; atas:10px; warna:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; line-height:1.5; overflow-x:hidden; ) #addCommentContainer masukan, # addCommentContainer textarea( /* Input style */ 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( /* tombol "Kirim" " */ background-color:#58B9EB; border:1px solid #40A2D4; color:#FFFFFF; kursor:penunjuk; 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; ) #s kirim:hover( background-color:#80cdf5; border-color:#52b1e2; )

Di bagian kedua, kita mengatur gaya untuk komentar dan elemen formulir. Mari perhatikan pemilihnya memasukkan, yang menyoroti elemen tergantung pada atribut Tipe.

Langkah 4 - jQuery

Sekarang mari beralih ke jQuery.

script.js

$(document).ready(function()( /* Kode berikut dijalankan hanya setelah DOM dimuat */ /* Bendera ini mencegah pengiriman banyak komentar: */ var working = false; /* Menangkap pengiriman formulir acara: */ $(" #addCommentForm").kirim(fungsi(e)( e.preventDefault(); jika(bekerja) return false; bekerja = true; $("#kirim").val("Bekerja.. "); $("span .error").remove(); /* Kirim kolom formulir ke submit.php: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Jika penyisipan berhasil, tambahkan komentar / di bawah yang terakhir pada halaman dengan efek slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Jika ada adalah kesalahan, ulangi objek / msg.errors dan tampilkan ke halaman /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Kami menggunakan panggilan fungsi $(dokumen).siap() A yang mengikat fungsi ke acara tersebut. Variabel bekerja bertindak sebagai flag yang menandakan bahwa permintaan AJAX sedang berlangsung (sehingga mencegah duplikasi dari komentar yang sama).

Dalam fungsi pengembalian untuk permintaan POST AJAX, kami memeriksa properti status untuk menentukan apakah komentar berhasil dimasukkan. Jika ya, kami menambahkan markup yang dihasilkan ke halaman setelah komentar terakhir dengan animasi meluncur ke bawah.

Jika ada masalah, maka kami menampilkan pesan kesalahan dengan menambahkan menjangkau kesalahan ke elemen yang sesuai label(atribut elemen label mengandung Indo masukan yang error).

Siap!

Kesimpulan

Untuk menjalankan skrip di server Anda, Anda perlu membuat tabel komentar dalam database MySQL Anda. Anda dapat melakukannya dengan kode SQL dari file table.sql, yang harus dimasukkan pada tab SQL di phpMyAdmin. Maka Anda perlu mengatur parameter koneksi database MySQL di file connect.php .

Komentar dalam PHP mirip dengan komentar yang digunakan dalam HTML. Dalam sintaks PHP, komentar selalu dimulai dengan urutan karakter khusus, dan teks apa pun yang muncul di antara karakter khusus ini akan diabaikan oleh penafsir.

Dalam HTML, tujuan utama komentar adalah sebagai catatan bagi pengembang yang dapat melihat kode sumber situs Anda. Komentar PHP berbeda karena tidak akan ditampilkan kepada pengunjung. Satu-satunya cara untuk melihat komentar PHP adalah membuka file untuk diedit. Ini membuat komentar PHP hanya berguna untuk pemrogram PHP.

Jika Anda lupa atau tidak tahu bagaimana komentar dibuat dalam HTML, lihat contoh di bawah ini.

sintaks komentar php: komentar satu baris

Sedangkan html hanya memiliki satu jenis komentar, PHP memiliki dua jenis. Tipe pertama yang akan kita bahas adalah single line comment. Artinya, sebuah komentar yang memberitahu juru bahasa untuk mengabaikan apapun yang terjadi pada baris di sebelah kanan komentar. Untuk menggunakan komentar ini, gunakan karakter "//" atau "#" dan semua teks di sebelah kanan akan diabaikan oleh penerjemah PHP.

Psst...Anda tidak dapat melihat komentar PHP saya!"; // gema "tidak ada"; // gema "Nama saya Humperdinkle!"; # echo "Saya juga tidak melakukan apapun"; ?>

Hasil:

Halo Dunia! Psst...Anda tidak dapat melihat komentar PHP saya!

Perhatikan bahwa beberapa perintah gema kami tidak diproses karena kami mengomentarinya dengan karakter komentar khusus. Jenis komentar ini sering digunakan untuk menulis dengan cepat tentang kode yang rumit dan dikaburkan, atau untuk menghapus sementara baris kode PHP (untuk tujuan debugging).

sintaks komentar php: komentar multiline

Seperti komentar HTML, komentar multiline dalam PHP dapat digunakan untuk mengomentari blok kode yang besar, atau untuk menulis komentar pada banyak baris. Komentar multibaris di PHP dimulai dengan "/*" dan diakhiri dengan "*/". Apa pun di antara karakter ini akan diabaikan.

Hasil.