Loading halaman Tutorial Visual Basic, Delphi, PHP - Calon Programer : PHP Form Register & Login ...

Kali ini saya memberikan tips dan trik bagaimana cara membuat form untuk meregister sekaligus login untuk member terdaftar, dan sudah tentu kita akan menggunakan database MySQL untuk menyimpan data para member terdaftar.Perlu diingat source PHP yang saya tulis ini berjalan pada PHP 4.2.3 atau lebih disarankan untuk menggunakan PHP versi 4.3 atau lebih.
Mari kita mulai! Pertama-tama siapkan terlebih dulu databasenya. Silahkan jalankan mysql Client kamu. Masih bingung atau lupa menjalankan mysql client ?
Ok saya coba ingat-ingatkan kembali… Mysql client yang digunakan disini adalah yang berbasis teks dan di eskusi pada shell.
Dengan kata lain mysql client dijalankan dengan perintah sebagai berikut : mysql
Perintah ini dlakukan jika server MySQL berada pada localhost dan tidak ada password untuk user yang sedang aktif pada saat itu.
Untuk perintah yang lebih kompleks dapat menggunakan perintah sebagai berikut mysql –h hosttarget –u username –ppasswordaccess hosttarget adalah lokasi server MySQL berada, username adalah user untuk mengakses kedalam database dan passwordaccess adalah password username untuk mengakses kedalam database.
Setelah itu shell akan berganti seperti :
mysql>
Nah selanjutnya silahkan pilih database yang akan digunakan. Jika belum memiliki database atau ingin menggunakan database lain dari yang sudah ada berarti harus membuat database baru.
Cara membuat database :
mysql> create database namadatabase;
Query OK, 1 row affected <0.00 sec>
sedangkan untuk menggunakan database yang sudah ada
mysql> use namadatabase;
database changed

Sebagai catatan, dalam pembuatan database jangan menggunakan tanda “-“ atau spasi untuk nama database yang terdiri lebih dari dua kata sebaiknya gunakan tanda “_” Contoh nama database yang salah :
calon-Programer calon Programer calon^Programer
Contoh nama database yang benar :
Calon_Programer CalonProgramer
Setalah database sudah disiapkan kita akan membuat tablenya. Berikut cara membuat tablenya, ingat ini masih pada shell MySQL.
  1. CREATE TABLE phpschool_user ( 
  2. id bigint(20) unsigned NOT NULL auto_increment, 
  3. user_name varchar(255) NOT NULL default ''
  4. user_pass varchar(80) default NULL
  5. user_mode varchar(5) default NULL
  6. admin enum('yes','no') default 'no'
  7. user_email varchar(60) default NULL
  8. user_fullname varchar(80) default NULL
  9. user_address varchar(120) default NULL
  10. user_telepon varchar(30) default NULL
  11. tempat_lahir varchar(60) default NULL
  12. tgl_lahir varchar(12) default NULL
  13. date_register varchar(70) default NULL
  14. user_ipaddress varchar(20) default NULL
  15. user_hostname varchar(120) default NULL
  16. note tinytext, 
  17. last_login varchar(60) default NULL
  18. PRIMARY KEY (user_name), 
  19. KEY id (id) 
  20. ) TYPE=MyISAM; 
  21. Query OK, 0 row affected <0.00 sec> 
Selesai sudah persiapan database sekarang kita pindah ke bagian php sourcenya.
Disini kita akan membuat beberapa file untuk proses pendaftaran dan login yang sudah terdaftar.
1. daftar.php, adalah file yang berisi form untuk pendaftaran bagi yang belum terdaftar
2. login.php, adalah file yang berisi form untuk proses login bagi yang sudah terdaftar sekarang kita mulai dengan daftar.php lumayan panjang sih… disini saya juga memberikan beberapa tips untuk javascript bagaimana untuk validasi penulisan email yang benar.
  1. <?php 
  2. session_start(); 
  3. //your mysql access for host user password, database and table prefix 
  4. $prefix="phpschool_"
  5. $sqlhost="localhost"
  6. $sqluser="ipen"
  7. $sqlpasswd="n0limited"
  8. $sqldb="stieven"
  9. $conn=mysql_connect("$sqlhost","$sqluser","$sqlpasswd") or die("<p align=center>CAN NOT 
  10. CONNECT TO MYSQL SERVER"); 
  11. mysql_query("use $sqldb"); 
  12. //Global variable register PHP 4.23 or more only 
  13. extract($_SERVER,"EXTR_PREFIX_SAME"); 
  14. extract($HTTP_ENV_VARS,"EXTR_PREFIX_SAME"); 
  15. extract($HTTP_GET_VARS,"EXTR_PREFIX_SAME"); 
  16. extract($HTTP_POST_VARS,"EXTR_PREFIX_SAME"); 
  17. $file_name=$HTTP_POST_FILES["file"]["name"]; 
  18. $file_size=$HTTP_POST_FILES["file"]["size"]; 
  19. $file_tmp=$HTTP_POST_FILES["file"]["tmp_name"]; 
  20. $file_type=$HTTP_POST_FILES["file"]["type"]; 
  21. if ($logout) { 
  22. unset($HTTP_SESSION_VARS["userakses"]); 
  23. unset($HTTP_SESSION_VARS["userfullname"]); 
  24. unset($HTTP_SESSION_VARS["usermode"]); 
  25. unset($HTTP_SESSION_VARS["useremail"]); 
  26. unset($HTTP_SESSION_VARS["useradmin"]); 
  27. unset($HTTP_SESSION_VARS["userlastlogin"]); 
  28. $thisVersion=phpversion(); 
  29. $php_version=explode(".",$thisVersion); 
  30. $phpversion=$php_version[0] . $php_version[1]; 
  31. $gmt=date("Z"); 
  32. $namaBulan=array("null","Januari","Februari","Maret","April","Mei","Juni","Juli","Agustu 
  33. s","September","Oktober","November","Desember"); 
  34. if (!$HTTP_SESSION_VARS["userakses"]) { 
  35. if ($submitdaftar) { 
  36. $user_name=strtolower(strip_tags(trim($user_name))); 
  37. $user_pass=strip_tags(trim($user_pass)); 
  38. $user_fullname=strip_tags(trim($user_fullname)); 
  39. $user_address=strip_tags(trim($user_address)); 
  40. $user_telepon=strip_tags(trim($user_telepon)); 
  41. $tempat_lahir=strip_tags(trim($tempat_lahir)); 
  42. $nama_status=strip_tags(trim($nama_status)); 
  43. $alamat_status=strip_tags(trim($alamat_status)); 
  44. $hostname=gethostbyaddr($REMOTE_ADDR); 
  45. $note=strip_tags(trim($note)); 
  46. //ceking 
  47. $getUser=mysql_query("insert into ". $prefix ."user 
  48. (user_name, user_pass, user_mode, user_email, user_fullname, user_address, 
  49. user_telepon, tempat_lahir, 
  50. tgl_lahir, date_register, user_ipaddress, user_hostname, note, last_login) 
  51. values 
  52. ('$user_name','$user_pass','$mode','$user_email','$user_fullname','$user_address','$user 
  53. _telepon','$tempat_lahir', 
  54. '$thn_lahir-$bln_lahir-$tgl_lahir','". date("U") ."','". $REMOTE_ADDR ."', 
  55. '$hostname','$note', '". date("U") ."' 
  56. ) 
  57. "); 
  58. if ($getUser) { 
  59. $regOK="ok"
  60. $msgError="<br><p align=center>$user_fullname Selamat Bergabung dengan 
  61. Kami<p>"
  62. else
  63. $fname=str_replace(".","",$user_fullname); 
  64. $fname=str_replace(",","",$fname); 
  65. $fname=explode(" ",$fname); 
  66. $username[0]=strtolower($user_name . rand(1000,2000)); 
  67. $username[1]=strtolower($fname[0]. "_" .$fname[1]); 
  68. $username[2]=strtolower($fname[count($fname)-1]. "_" .$fname[0]); 
  69. $msgError=" 
  70. <br><p align=center><b>$user_name</b> tidak dapat di 
  71. daftar<br>Kemungkinan terbesar sudah pernah didaftar Coba Pilih yang lain misalkan<br> 
  72. <ul> 
  73. <li>$username[0] 
  74. <li>$username[1] 
  75. <li>$username[2] 
  76. </ul> 
  77. <p>"
  78. unset($user_name); 
  79. ?> 
  80. <script> 
  81. function cekuser() { 
  82. if ((document.daftar.user_name.value.length < 4) || 
  83. (document.daftar.user_name.value.length > 255)) { 
  84. alert('Panjang Karakter untuk username harus minimal 4'); 
  85. document.daftar.user_name.focus(); 
  86. return false; 
  87. else
  88. if (document.daftar.user_name.value.indexOf(" ") >= 0) { 
  89. alert('Jangan ada spasi pada isian username dan password'); 
  90. document.daftar.user_name.focus(); 
  91. return false; 
  92. else { return emailbenar(document.daftar.user_email.value); } 
  93. function ceknotchar(ftr) { 
  94. var charnot=new Array 
  95. ('*','%','@','`','"',"'",'$','#','~','(',')','!','^','&','.',',','*',';',':','<','>','[' 
  96. ,']','{','}','|','\\','+','=','?','/'); 
  97. for (i=0;i<=charnot.length;i++) { 
  98. charsek1=ftr.indexOf(charnot[i]); 
  99. if (charsek1 >= 0) { alert('Tidak di ijinkan menggunakan karakter "' + 
  100. charnot[i] + '"');document.daftar.user_name.focus();return false; } 
  101. } 
  102. return cekFmValid(); 
  103. } 
  104. function cekFmValid() { 
  105. if ( 
  106. (document.daftar.user_fullname.value.length < 1) || 
  107. (document.daftar.user_address.value.length < 1) || 
  108. (document.daftar.nama_status.value.length < 1) || 
  109. (document.daftar.alamat_status.value.length < 1) || 
  110. (document.daftar.tempat_lahir.value.length < 1) || (document.daftar.status.value 
  111. == "") 
  112. ) { 
  113. alert('Ada form yang belum diisi, kamu harus mengisi semua form'); 
  114. return false; 
  115. } 
  116. else { 
  117. if (document.daftar.mode.value == "none") { 
  118. alert('Mode Daftar belum di pilih'); 
  119. document.daftar.mode.focus(); 
  120. return false; 
  121. } 
  122. } 
  123. } 
  124. function emailbenar(str) { 
  125. var cek1=str.indexOf("@"); 
  126. if (cek1 <= 0) { 
  127. alert('Alamat Email harus disi dengan benar. Kesalahan pada tanda "@"'); 
  128. document.daftar.user_email.focus(); 
  129. return false; 
  130. } 
  131. else { 
  132. var cek2=str.lastIndexOf("."); 
  133. //alert(cek2 + '-' + cek1); 
  134. if (cek2 <= cek1+1) { 
  135. alert('Alamat Email harus disi dengan benar. Kesalahan pada tanda 
  136. "."'); 
  137. document.daftar.user_email.focus(); 
  138. return false; 
  139. } 
  140. else { 
  141. cek3=document.daftar.user_email.value.length; 
  142. if (cek2 == cek3-1) { 
  143. alert('Anda masih salah dalam penulisan email setalah tanda "." 
  144. masih belum lengkap!'); 
  145. document.daftar.user_email.focus(); 
  146. return false; 
  147. } 
  148. else { 
  149. if (str.indexOf(" ") >= 0) { 
  150. alert('Tidak boleh ada spasi dalam penulisan 
  151. email'); 
  152. return false; 
  153. } 
  154. } 
  155. //alert('True'); 
  156. return ceknotchar(document.daftar.user_name.value); 
  157. } 
  158. return false; 
  159. } 
  160. return false; 
  161. } 
  162. function setMode() { 
  163. if (document.daftar.mode.value >=1) { 
  164. document.daftar.tahun_masuk.disabled=false; 
  165. } 
  166. else { 
  167. document.daftar.tahun_masuk.disabled=true; 
  168. document.daftar.tahun_lulus.disabled=true; 
  169. } 
  170. } 
  171. function setTahunlulus(defTahun) { 
  172. if (document.daftar.tahun_masuk.value < defTahun) { 
  173. document.daftar.tahun_lulus.disabled=false; 
  174. } 
  175. else { 
  176. document.daftar.tahun_lulus.disabled=true; 
  177. } 
  178. if ((document.daftar.mode.value == "none") || (document.daftar.mode.value == "")) 
  179. { 
  180. document.daftar.tahun_lulus.disabled=true; 
  181. } 
  182. } 
  183. </script> 
  184. <table width="98%" border="0" align="center" cellpadding="4" cellspacing="2"> 
  185. <tr> 
  186. <td align="left" valign="top" style="border:1px solid #363635;text-align:justify"> 
  187. <?php 
  188. echo $msgError; 
  189. if ($regOK != "ok") { 
  190. ?> 
  191. <form name="daftar" method="post" action="" onSubmit="return cekuser();"> 
  192. <table width="100%" border="0" cellspacing="1" cellpadding="3"> 
  193. <tr align="left" valign="top"> 
  194. <td width="25%">Username</td> 
  195. <td width="75%"><input name="user_name" value="<?php echo $user_name; ?>" 
  196. type="text" id="user_name" style="width:180" maxlength="12"> 
  197. <br> <font color="#666666">Minimal 4 karakter, gunakan kombinasi 
  198. huruf dan angka dan tanda &quot;_&quot; (underline)</font></td> 
  199. </tr> 
  200. <tr align="left" valign="top"> 
  201. <td>Password</td> 
  202. <td><input name="user_pass" type="password" id="user_pass" style="width:180"> 
  203. <br> <font color="#666666">Minumal 8 karakter, case sensitif (Huruf 
  204. besar/Kapital) memiliki perbedaan dengan huruf kecil</font></td> 
  205. </tr> 
  206. <tr align="left" valign="top"> 
  207. <td>Email</td> 
  208. <td><input name="user_email" type="text" id="user_email" value="<?php echo 
  209. $user_email; ?>" style="width:180"> 
  210. <br> <font color="#666666">Penulisan bentuk email harus tepat Contoh 
  211. : ipen22@yahoo.com dan email harus yang masih aktif</font></td> 
  212. </tr> 
  213. <tr align="left" valign="top"> 
  214. <td>&nbsp;</td> 
  215. <td>&nbsp;</td> 
  216. </tr> 
  217. <tr align="left" valign="top"> 
  218. <td>Nama Lengkap</td> 
  219. <td><input name="user_fullname" value="<?php echo $user_fullname; ?>" 
  220. type="text" id="user_fullname" style="width:180"></td> 
  221. </tr> 
  222. <tr align="left" valign="top"> 
  223. <td>Alamat</td> 
  224. <td><input name="user_address" type="text" value="<?php echo 
  225. $user_address; ?>" id="user_name6" style="width:180"></td> 
  226. </tr> 
  227. <tr align="left" valign="top"> 
  228. <td>Telepon</td> 
  229. <td><input name="user_telepon" type="text" value="<?php echo $user_telepon; ?>" 
  230. id="user_name7" style="width:180"></td> 
  231. </tr> 
  232. <tr align="left" valign="top"> 
  233. <td>Tempat Lahir</td> 
  234. <td><input name="tempat_lahir" type="text" value="<?php echo $tempat_lahir; ?>" 
  235. id="user_name8" style="width:180"> 
  236. </td> 
  237. </tr> 
  238. <tr align="left" valign="top"> 
  239. <td>Tanggal Lahir</td> 
  240. <td><select name="tgl_lahir"> 
  241. <?php 
  242. for ($t=1;$t<=31;$t++) { 
  243. $tt=date("d"); 
  244. $tt=$tgl_lahir; 
  245. if ($t == $tt) { echo "<option value=\"$t\" 
  246. selected>$t</option>"; } 
  247. else { echo "<option 
  248. value=\"$t\">$t</option>"; } 
  249. ?> 
  250. </select> <select name="bln_lahir"
  251. <?php 
  252. for ($t=1;$t<=12;$t++) { 
  253. $tt=date("m"); 
  254. $tt=$bln_lahir
  255. if ($t == $tt) { echo "<option value=\"$t\" 
  256. selected>$namaBulan[$t]</option>"; } 
  257. else { echo "<option 
  258. value=\"$t\">$namaBulan[$t]</option>"; } 
  259. ?> 
  260. </select> <select name="thn_lahir"
  261. <?php 
  262. for ($t=1940;$t<=date("Y")-10;$t++) { 
  263. $tt=date("Y")-22; 
  264. $tt=$thn_lahir
  265. if ($t == $tt) { echo "<option value=\"$t\" 
  266. selected>$t</option>"; } 
  267. else { echo "<option 
  268. value=\"$t\">$t</option>"; } 
  269. ?> 
  270. </select> </td> 
  271. </tr> 
  272. <tr align="left" valign="top"
  273. <td>Note</td> 
  274. <td><textarea name="note" id="note" style="width:180;height:70"><?php echo 
  275. $note; ?></textarea></td> 
  276. </tr> 
  277. <tr align="left" valign="top"
  278. <td>&nbsp;</td> 
  279. <td><input name="submitdaftar" type="submit" id="submitdaftar" value="D A F T 
  280. A R"></td> 
  281. </tr> 
  282. </table> 
  283. </form> 
  284. <script> 
  285. setTahunlulus(<?php echo date("Y"); ?>); 
  286. setMode(); 
  287. </script> 
  288. <?php 
  289. ?> 
  290. </td> 
  291. </tr> 
  292. </table> 
  293. <?php 
  294. else
  295. echo "<p align=center>Kamu sudah terdaftar dengan akses "
  296. $HTTP_SESSION_VARS["userakses"] ."! <p align=center> <a href=\"?logout=1\">Logout</a>"
  297. ?> 
Sekarang kita beralih ke login.php
  1. <?php 
  2. session_start(); 
  3. //your mysql access for host user password, database and table prefix 
  4. $prefix="phpschool_"
  5. $sqlhost="localhost"
  6. $sqluser="ipen"
  7. $sqlpasswd="n0limited"
  8. $sqldb="stieven"
  9. $conn=mysql_connect("$sqlhost","$sqluser","$sqlpasswd") or die("<p align=center>CAN NOT 
  10. CONNECT TO MYSQL SERVER"); 
  11. mysql_query("use $sqldb"); 
  12. //Global variable register PHP 4.23 or more only 
  13. extract($_SERVER,"EXTR_PREFIX_SAME"); 
  14. extract($HTTP_ENV_VARS,"EXTR_PREFIX_SAME"); 
  15. extract($HTTP_GET_VARS,"EXTR_PREFIX_SAME"); 
  16. extract($HTTP_POST_VARS,"EXTR_PREFIX_SAME"); 
  17. $file_name=$HTTP_POST_FILES["file"]["name"]; 
  18. $file_size=$HTTP_POST_FILES["file"]["size"]; 
  19. $file_tmp=$HTTP_POST_FILES["file"]["tmp_name"]; 
  20. $file_type=$HTTP_POST_FILES["file"]["type"]; 
  21. $thisVersion=phpversion(); 
  22. $php_version=explode(".",$thisVersion); 
  23. $phpversion=$php_version[0] . $php_version[1]; 
  24. $gmt=date("Z"); 
  25. $namaBulan=array("null","Januari","Februari","Maret","April","Mei","Juni","Juli","Agustu 
  26. s","September","Oktober","November","Desember"); 
  27. if ($logout) { 
  28. unset($HTTP_SESSION_VARS["userakses"]); 
  29. unset($HTTP_SESSION_VARS["userfullname"]); 
  30. unset($HTTP_SESSION_VARS["usermode"]); 
  31. unset($HTTP_SESSION_VARS["useremail"]); 
  32. unset($HTTP_SESSION_VARS["useradmin"]); 
  33. unset($HTTP_SESSION_VARS["userlastlogin"]); 
  34. if ($login) { 
  35. if (!$HTTP_SESSION_VARS["userakses"]) { 
  36. $getLogin=mysql_query("select * from ". $prefix ."user where 
  37. user_name='$user_name'"); 
  38. $thisLogin=mysql_fetch_array($getLogin); 
  39. if (!$thisLogin[user_name]) { $errorLogin="<script>alert('$user_name 
  40. tidak terdaftar')</script>"; } 
  41. else
  42. if ($user_pass == $thisLogin[user_pass]) { 
  43. $HTTP_SESSION_VARS["userakses"]=$thisLogin[user_name]; 
  44. $HTTP_SESSION_VARS["userfullname"]=$thisLogin[user_fullname]; 
  45. $HTTP_SESSION_VARS["usermode"]=$thisLogin[user_mode]; 
  46. $HTTP_SESSION_VARS["useremail"]=$thisLogin[user_email]; 
  47. $HTTP_SESSION_VARS["useradmin"]=$thisLogin[admin]; 
  48. $HTTP_SESSION_VARS["userlastlogin"]=$thisLogin[last_login]; 
  49. $HTTP_SESSION_VARS["userhostname"]=$thisLogin[user_hostname]; 
  50. $HTTP_SESSION_VARS["useripaddress"]=$thisLogin[user_ipaddress]; 
  51. $hostname=gethostbyaddr($REMOTE_ADDR); 
  52. mysql_query("update ". $prefix ."user set 
  53. user_hostname='$hostname', user_ipaddress='". $REMOTE_ADDR ."', last_login='"
  54. date("U") ."' where user_name='$user_name'"); 
  55. else { $errorLogin="<script>alert('$user_name password tidak 
  56. tepat')</script>"; } 
  57. ?> 
  58. <html> 
  59. <head> 
  60. <title>Untitled Document</title> 
  61. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
  62. </head> 
  63. <body> 
  64. <?php 
  65. echo $errorLogin
  66. if (!$HTTP_SESSION_VARS["userakses"]) { 
  67. ?> 
  68. <form name="form1" method="post" action=""
  69. <p align="center">Username<br> 
  70. <input name="user_name" type="text" id="user_name" style="width:180"
  71. <br> 
  72. Password <br> 
  73. <input name="user_pass" type="password" id="user_pass" style="width:180"
  74. </p> 
  75. <p align="center"
  76. <input type="submit" name="login" value="Submit" style="border-bottom:2px solid 
  77. #363635;border-right:2px solid #363635;border-top:2px solid #82817F;border-left:2px solid 
  78. #82817F;"
  79. </p> 
  80. </form> 
  81. <center><a href="daftar.php">Daftar 
  82. Disini</a></center> 
  83. <?php 
  84. else
  85. echo "Kamu sudah login dengan akses ". $HTTP_SESSION_VARS["userakses"] ." <p> <a 
  86. href=\"?logout=1\">Logout</a>"
  87. ?> 
  88. </body> 
  89. </html> 
Script source ini hasil modifikasi dari PHPSchool v.2.0 September 2003 Selamat mencoba!
Stieven R. Kalengkian stieven@kawanuanetworks.com
http://www.php.wox.org

Tagg :

2 Reply :

  1. Artikel Mantappp, sangat berguna.

    SQL Injection
    Saya mau minta Contoh coding JavaScript untuk mengamankan web / database dari SQL Injection, walaupun saya sedikit tau ini tidak aman karena javascript bisa di matikan client kapan saja, tapi setidaknya hanya untuk menghindari.

    Logikanya : Client / user tidak diperbolehkan menginputkan karakter &, ',",%'/,\,<,>.

    Terimakasih atas jawaban dan Contohnya
    Buat TA nih kang Deni

    BalasHapus
  2. untuk javascript tidak terlalu melindungi data,memang sesungguhnya tidak ada yg sempurna. semua tetap ada kelemahannya.
    mungkin untuk mencegah sql injection bisa di berikan validasi inputan menggunakan script php sbb:


    Lebih jelas ke sini ajah mas untuk script anti sql injection

    BalasHapus

Jika ada pertanyaan atau request,Komentar pada tab blogger akan lebih memudahkan saya untuk membalasnya karena lebih mudah melakukan pengecekan komentar.