Talk to me about anything. If you’d like to work with me, or
even if you just need a hug, I’ll get back to you shortly.

Please enter your name


Say something!

Shoutbox
[Software Akuntansi Laporan Keuangan Terbaik ]
Software Akuntansi Laporan Keuangan Terbaik
06/02/12Gravatar
[Kata Kata Lucu ]
http://hujangede.blogspot.com/2011/12/kata-kata-lucu-2012.html
06/02/12Gravatar
[souvenir pernikahan ]
http://www.souvenirku182.blogspot.com/ menyediAKAN souvenir pernikahan MURAH
03/02/12Gravatar
[kursi tamu ]
http://www.rotankita.com/ menyediakan kursi tamu dari rotan.
03/02/12Gravatar
[kopi luwak ]
menyediakan kopi luwak. http://www.kopiluwakbandung.com/
03/02/12Gravatar
[cream anisa ]
cream anisa memutihkan wajah yang penuh dengan flex... http://www.cantikherbal.com/
03/02/12Gravatar
[kursus bahasa korea ]
mau kursus bahasa korea online?? kli ini http://tki-mandiri.com/
03/02/12Gravatar

Arsip Shoutbox

Bikin Ajax Shoutbox

20-11-2008 | By : Po3nX

Jika anda mempunyai web, entah itu blog, portal, forum atau apapun pasti akan lebih menarik dan interaktif jika terdapat shoutbox panel, buat apa? ya biar pengunjung bisa berinteraksi disitu, sekedar menyapa, tanya kabar, atau komentar apa aja. banyak penyedia widget shoutbox gratisan, kita tinggal daftar trus pasang kodenya di web kita, tapi rasanya akan lebih nyaman kalo kita bikin sendiri, sehingga databasenya juga tersimpandi server sendiri.

Lewat tulisan pertama saya ini, saya akan mencoba menyampaikan trik membuat shoutbox sendiri, sebagaimana yang ada pada web ini, dengan memanfaatkan teknlogi ajax, dengan harapan akan terkesan lebih dinamis dan menarik.



Sebelum menyiapkan code phpnya pertama yang kita butuhkan adalah sebuah database yang akan menampung isi shoutbox.

Langkah - langkah untuk membuat ajax shoutbox adalah sebagai berikut

1.) Buat database dengan nama 'shoutbox'
2.) Buat tabel pada mysql anda dengan nama 'shoutbox' dengan struktur sebagai berikut :
CODE
  1.  
  2. CREATE TABLE `shoutbox` (
  3.   `id` smallint(5) NOT NULL auto_increment,
  4.   `nama` varchar(100) NOT NULL,
  5.   `tanggal` date NOT NULL,
  6.   `pesan` varchar(200) NOT NULL,
  7.   `ip` varchar(50) NOT NULL,
  8.   PRIMARY KEY  (`id`)
  9. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  10.  


3.) Buat script ajax engine berikut, simpan dengan nama 'ajax.js' :

CODE
  1.  
  2. var xmlHttp
  3. function shout(nama,pesan)
  4. {
  5. xmlHttp=GetXmlHttpObject()
  6. if (xmlHttp==null)
  7.         {
  8.         alert ("Browser tidak support HTTP Request")
  9.         }
  10. var url="shoutbox.php"
  11. url=url+"?cmd=save&nama="+nama
  12. url=url+"&pesan="+pesan
  13. url=url+"&sid="+Math.random()
  14. xmlHttp.onreadystatechange=stateChanged
  15. xmlHttp.open("GET",url,true)
  16. xmlHttp.send(null)
  17. }
  18. function stateChanged()
  19. {
  20. if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  21.         {
  22.         document.getElementById("output").innerHTML=xmlHttp.responseText
  23.         }
  24. }
  25. function GetXmlHttpObject()
  26. {
  27. var xamlHttp=null;
  28. try
  29.         {
  30.         // ngecek buat browser firefox, opera 8.0+, safari
  31.         xmlHttp=new XMLHttpRequest();
  32.         }
  33.         catch (e)
  34.                 {
  35.                 // browser Internet Explorer
  36.                 try
  37.                         {
  38.                         // IE 6.0+
  39.                         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  40.                         }
  41.                         catch (e)
  42.                                 {
  43.                                 // IE 5.0
  44.                                 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  45.                                 }
  46.                 }                      
  47. return xmlHttp;
  48. }
  49.  

4.) Terakhir, inilah script shoutboxnya, simpan dengan nama 'shoutbox.php' :

CODE
  1.  
  2. <?
  3. //koneksi ke mysq, isikan dengan host, user dan pass anda
  4. $connection = mysql_connect("localhost","root","");
  5. mysql_select_db("shoutbox",$connection);
  6. if ($_GET[cmd]=='save'){
  7.         $adre=getenv("REMOTE_ADDR");
  8.         $tgl=date("Y-m-d");
  9.         if($_GET[nama]==""||$_GET[pesan]==""){
  10.                 echo "<font color='red'><b>PERHATIAN...!!</b><br><br>Nama dan Pesan Tidak Boleh Kosong</font><br>";
  11.         }else{
  12.                 mysql_query("insert into shoutbox ( tanggal,nama, pesan, ip) values ( '$tgl','$_GET[nama]', '$_GET[pesan]', '$adre')",$connection);
  13.                 echo "<font color='red'><b>TERIMAKASIH...!!</b>Pesan anda telah tersimpan</font>";
  14.         }
  15.         echo "<table>";
  16.         $shouts=mysql_query("select * from shoutbox order by id desc limit 0,10",$connection) or die(mysql_error());
  17.         while($row_shout = mysql_fetch_array($shouts))
  18.         {
  19.                 echo "<tr><td align='left'><small>$row_shout[tanggal]</small> >";
  20.                 echo "<b>".$row_shout[nama]." :</b><br>";
  21.                 echo "$row_shout[pesan]</td></tr>";
  22.         }
  23.         echo "</table>";
  24.        
  25. } else {
  26.         echo "
  27.         <script language=\"JavaScript\" src=\"ajax.js\"></script>
  28.         <table width='100%'><tr><td><b>SHOUTBOX</b></td></tr><tr><td>
  29.         <form name='shoutbox' method='post' action='shoutbox.php'>
  30.         <table border='0'>
  31.         <tr><td>Nama :<input type='text' name='nama' size='20'></td></tr>
  32.         <tr><td valign='top'>Pesan :<textarea name='pesan' cols='20' rows='2'></textarea></td></tr>
  33.         <tr><td><br><input type='button' onclick='shout(nama.value,pesan.value)' value='Kirim'> <input type='reset' name='reset' value='Reset'></td></tr>
  34.         </table>
  35.         </form>
  36.         </td></tr></table>
  37.         ";
  38.         $shout=mysql_query("select * from shoutbox order by id desc limit 0,10",$connection) or die(mysql_error());
  39.         $jumlah=mysql_num_rows($shout);
  40.         if ($jumlah==0){
  41.                 echo "<div id='output'>Shoutbox Kosong</table></div>";
  42.         }else{
  43.                 echo "<div id='output'>
  44.                 <table>";
  45.                 while($row_shout = mysql_fetch_array($shout))
  46.                 {
  47.                         echo "<tr><td align='left'><small>$row_shout[tanggal]</small> >";
  48.                         echo "<b>".$row_shout[nama]." :</b><br>";
  49.                         echo "$row_shout[pesan]</td></tr>";
  50.                 }
  51.                 echo "</table></div>";
  52.         }
  53. }
  54. ?>
  55.  

Selesai, Anda bisa mempercantik tampilan dengan menggunakan CSS.
atau bisa juga menambahkan smilley, supaya lebih menarik.

Selamat mencoba , semoga bermanfaat.

Regards,


Po3nX
>> Arsip Artikel <<



Comment
[om onny ]
wah tutorial yang sangat bermanfaat. ijin bokkmark.
09/09/11Gravatar
[aCieL ]
kalo untuk banned/hapus orang orang yang menyalah gunakan shout kita gimana?
04/07/11Gravatar
[Po3nX ]
@All: Makasih kunjungannya, maaf baru sempat balas,
@poer: harusnya ga ada masalah pakai browser FF, asalkan javascriptnya enable
@Mercedez: ok semoga bermanfaat
20/06/11Gravatar
[Mercedes-Benz Mobil Mewah Terbaik Indonesia ]
Mohon izin copy scriptynya gan, mau saya coba. semoga berhasil
20/06/11Gravatar
[poer ]
from newbie

dah coba di firefox kok gak mau muncul nya
apa kudu pakai IE ?
23/05/11Gravatar
[scriptskirt.blogspot.com ]
langsung copas! kodenya hehehe
03/09/09Gravatar
[ok ]

25/07/09Gravatar
[wesy ]
mantaap shoutbox-nya, langsung jalan gak ada error. thankyu Om..
21/07/09Gravatar
[kenshi ]
wedew mantep juga nih..
makasih y om po3nx :P
mudah-mudahan amal ibadah om po3nx diterima di sisinya.. :))
wkwkwkwkwkwk


07/06/09Gravatar
[noname ]
bingung tapi makasih triknya ak pelajarin lagi, coz otakku ini dah jubel ga masuk2
05/06/09Gravatar
[Slebraefferly ]
I like your work
26/05/09Gravatar
[anonymous ]
wah, rasanya senang sekali masukan saya didengarkan.. makasih mas po3nk.

cuma mo nambahin, code paling bawah buat xss attack itu ngga perlu panjang2 pake eregi gitu (setahu saya regex pake ereg itu lambat, lebih baik pake preg), pake strip_tags saja sudah cukup.

terus berkarya ya mas.
05/04/09Gravatar
[anonymous ]
wah, rasanya senang sekali masukan saya didengarkan.. makasih mas po3nk.

cuma mo nambahin, code paling bawah buat xss attack itu ngga perlu panjang2 pake eregi gitu (setahu saya regex pake ereg itu lambat, lebih baik pake preg), pake strip_tags saja sudah cukup.

terus berkarya ya mas.
05/04/09Gravatar
[Po3nX ]
thanks anonymous atas masukannya, point saya sebenarnya pada ajaxnya,
tujuan saya biar scriptnya mudah di fahami, jadi saya hilangkan pada bagian sanitize-nya, hehe...

ok deh bagi yang pengen lebih safe silahkan tambahin sanitize sebelum form disimpan ke database, caranya bermacam2 bisa menggunakan html_special_char ato seperti yang dikatakan anonymous dengan menggunakan mysql_real_escape_string

ato boleh coba function berikut:



function stripinput($text) {
if (QUOTES_GPC) $text = stripslashes($text);
$search = array(""", "'", "", '"', "'", "<", ">", " ");
$replace = array(""", "'", "", """, "'", "<", ">", " ");
$text = str_replace($search, $replace, $text);
return $text;
}




tambahkan function diatas sebelum $connection pada file "shoutbox.php"

kemudian cara pakainya:
pada line 12 code "shoutbox.php" diatas ganti code

mysql_query("insert into shoutbox ( tanggal,nama, pesan, ip) values ( '$tgl','$_GET[nama]', '$_GET[pesan]', '$adre')",$connection);


menjadi


$nama=trim(stripinput($_GET[nama]));
$pesan=trim(stripinput($_GET[pesan]));
mysql_query("insert into shoutbox ( tanggal,nama, pesan, ip) values ( '$tgl','$nama', '$pesan', '$adre')",$connection);


ato lebih extreme lagi anda bisa menggunakan code berikut untuk prevent xss attack, tambahkan sebelum function stripinput diatas


foreach ($_GET as $check_url) {
if (!is_array($check_url)) {
$check_url = str_replace(""", "", $check_url);
if ((eregi("<[^>]*script*"?[^>]*>", $check_url)) || (eregi("<[^>]*object*"?[^>]*>", $check_url)) ||
(eregi("<[^>]*iframe*"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*"?[^>]*>", $check_url)) ||
(eregi("<[^>]*meta*"?[^>]*>", $check_url)) || (eregi("<[^>]*style*"?[^>]*>", $check_url)) ||
(eregi("<[^>]*form*"?[^>]*>", $check_url)) || (eregi("([^>]*"?[^)]*)", $check_url)) ||
(eregi(""", $check_url))) {
die ();
}
}
}
unset($check_url);


ok selamat mencoba, mohon dikoreksi kalo masih ada yang salah, dan sekali lagi terimakasih atas segala masukannya.
07/03/09Gravatar
[anonymous ]
hari gini emang ada host yang masih register global ON?? jadul amat?

Trus ini skrip gak ada sanitize user input gini kok di post sih mas?? klo nyubi gak ngerti masang ginian trus dibongkar servernya siapa yang tanggung jawab?
Coba diutak2 lagi, minimal pake mysql_real_escape_string gitu atau apa-lah..

On second thought, makasih buat scriptnya.. nutrisi yang berguna buat saya yang lagi belajar nge-ajax.. hehe
07/03/09Gravatar
[Po3nX ]
bisa lebih spesifik, gak jalannya karena apa?
ada pesan error apa?
harusnya kalo mengikuti langkah demi langkah ga ada masalah,
perhatikan penamaan filenya karena ini saling berhubungan, juga seting koneksi databasenya..
18/02/09Gravatar
[tegar ]
koq gak jalan ya mas???? tolong dong... thanks
17/02/09Gravatar
[sh4d0w ]
yupz, register global direkomendasikan off. kl register globalnya off ya ga jalan scriptnya. hheu.
10/01/09Gravatar
[Po3nX ]
Yup betul sekali om sh4dow,
Thanks atas koreksinya

Pengaruh sekali terutama jika Register Globalnya off ya om? CMIIW
makasih banget kunjunganya
10/01/09Gravatar
[sh4d0W ]
mas, boleh ngoreksi dikit g ?

ini perintah "if ($cmd=='save')" pada shoutbox.php

seharusnya kan "if($_GET[cmd]=='save')"

thx.
10/01/09Gravatar
[sn1ff3r ]
thx om ... mang akunya yang error
07/01/09Gravatar
[Po3nX ]

Kang kok aku ra iso connect ke mysqlnya


koneksinya kan disini:
$connection = mysql_connect("localhost","root","");
mysql_select_db("shoutbox",$connection);


pastikan host, user dan passnya benar :$connection=mysql_connect("host","user","pass");
terus nama databasenya juga : mysql_select_db("databasenya",$connection);

om klw di coba jadi double kenapa yah


Double gemana yaa?
03/01/09Gravatar
[sn1ff3r ]
om klw di coba jadi double kenapa yah
02/01/09Gravatar
[sn1ff3r ]
Kang kok aku ra iso connect ke mysqlnya
02/01/09Gravatar
[Po3nX ]
terimakasih semuanya atas kunjunganya, selamat mencoba
semoga bermanfaat
25/11/08Gravatar
[Eko ]
Wuah muanteb euy....
coba ach....
24/11/08Gravatar
[Bure' ]

24/11/08Gravatar
[Aley ]
Tetep selalu berkarya boz...
24/11/08Gravatar
[Tom Gembus ]
lanjut kang, makasih triknya
20/11/08Gravatar