|
<?php ini_set('display_errors', 'Off'); session_start(); /* Script_name : memmysql.php Source_code : http://www.thaiall.com/perlphpasp/source.pl?9121 Version 2.2560-08-23 ########################### Update Description - รุ่นนี้ยังไม่ได้ป้องกัน sql injection - แสดงสถานะการใช้งานของ admin หาก on อยู่ - เปลี่ยนจาก mysql แบบเดิม เป็น mysqli - ระบบนี้มี 3 หน้า คือ Admin page (Tabel Creating), Registration form, Member Listing 1. หน้า Admin ที่ http://localhost/memmysql.php?action=admin 2. หน้ากรอกข้อมูลจากผู้ใช้ ที่ http://localhost/memmysql.php 3. หน้าแสดงรายชื่อผู้กรอกข้อมูล ที่ http://localhost/memmysql.php?action=show - แชร์ผ่าน gist ที่ https://gist.github.com/thaiall/e90d045872da02aae5b68c733d8dcd08 ########################### */ /* Section 1 : Configuration */ $host = "localhost"; $db = "test"; $tb = "mem"; $user = "root"; $password = ""; $admin_password = "ad4Hn5sLvADxg"; // Default password = "p" for ?action=admin $create_table ="CREATE TABLE mem ("; $create_table .="id INT NOT NULL AUTO_INCREMENT ,"; $create_table .="sex VARCHAR( 50 ) NOT NULL ,"; $create_table .="name VARCHAR( 50 ) NOT NULL ,"; $create_table .="surname VARCHAR( 50 ) NOT NULL ,"; $create_table .="birthday VARCHAR( 50 ) NOT NULL ,"; $create_table .="age VARCHAR( 10 ) NOT NULL ,"; $create_table .="degree VARCHAR( 100 ) NOT NULL ,"; $create_table .="major VARCHAR( 100 ) NOT NULL ,"; $create_table .="organization VARCHAR( 100 ) NOT NULL ,"; $create_table .="position VARCHAR( 100 ) NOT NULL ,"; $create_table .="addressw VARCHAR( 100 ) NOT NULL ,"; $create_table .="addressh VARCHAR( 100 ) NOT NULL ,"; $create_table .="tel VARCHAR( 30 ) NOT NULL ,"; $create_table .="fax VARCHAR( 30 ) NOT NULL ,"; $create_table .="email VARCHAR( 40 ) NOT NULL ,"; $create_table .="status VARCHAR( 100 ) NOT NULL ,"; $create_table .="applydate VARCHAR( 30 ) NOT NULL ,"; $create_table .="PRIMARY KEY ( id )"; $create_table .=")"; // https://www.w3schools.com/php/php_mysql_create_table.asp /* Section 2 : Variable */ srand((double)microtime()*1000000); $rnd = rand(1000,9999); $page = 1; $lineperpage = 300; $sort = "เลขที่ใบสมัคร"; /* Section 3 : text_message */ $main_header = '<html><head><title>ระบบสมาชิก</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-874"> <meta name=keywords content="apply,list,member,admin"> <meta name=description content="Member System"> <style type=text/css> A:link {COLOR:#FF0000; TEXT-DECORATION: none; font-family: microsoft sans serif;} A:visited {COLOR:#800000; TEXT-DECORATION: none; font-family: microsoft sans serif;} body {font-family: microsoft sans serif; font-size: 10pt} td {font-family:microsoft sans serif; font-size: 10pt} </style> </head> <body text=black bgcolor=#ddffff leftMargin=0 topMargin=0 marginheight=0 marginwidth=0><center>'; $header = "แบบฟอร์มการสมัครเข้ารับการฝึกอบรม<br/>เพื่อคัดเลือกเป็นผู้ประเมินภายนอก (ระดับการศึกษาขั้นพื้นฐาน)"; $change_status = "<center><table bgcolor=#ddffdd style='margin-left:auto;margin-right:auto;'><form action=? method=get> <tr><td align=center>เลขที่ใบสมัคร (ไม่มี YN-)</td><td><input name=id></td></tr> <tr><td align=center>สถานะใหม่ของสมาชิก</td><td><input name=status></td></tr> <input name=action value=update type=hidden> <tr><td colspan=2 style='text-align:center'><input type=submit value='เปลี่ยนสถานะ'></td></tr></form></table>"; $programmer = "<br/>โปรแกรมเมอร์ : บุรินทร์ รุจจนพันธุ์<br/>Source Code: http://www.thaiall.com/source"; if (isset($_SESSION["admin_password"]) && strlen($_SESSION["admin_password"]) > 0) $admin_stat ="on"; else $admin_stat ="off"; $footer ="<center><a href=?>Back to Registration form</a><br/>admin : $admin_stat</body></html>"; /* Section 4 : Main Activity */ echo $main_header; if (isset($_GET['page'])) { $page = $_GET['page']; } if (isset($_GET['sort'])) { $sort = $_GET['sort']; } if (isset($_REQUEST['admin_user'])) { $pass_get = crypt($_POST{'admin_password'},$_POST{'admin_user'}); if ($pass_get == $admin_password) { $_SESSION["admin_password"] = $pass_get; echo "Welcome<br/>Admin status : on<br/><a href=?action=show>Member Listing</a> :: <a href=?admin_user=admin>Sign Out</a><hr color=red />"; connect_db(); if ($connect->query($create_table) === TRUE) { echo "ไม่พบตารางข้อมูล<br/>ดังนั้นโปรแกรมได้สร้างตาราง <b>$tb</b> ในฐานข้อมูล <b>$db</b>จาก SQL ต่อไปนี้ให้อัตโนมัติ<br/><font color=red>$create_table</font><br/><font color=blue>สรุปได้ว่า ขณะนี้ท่านน่าจะมีตารางสำหรับเก็บข้อมูลเรียบร้อยแล้ว .. ถ้าไม่มีข้อผิดพลาดอื่น</font>"; } else { $result = $connect->query("select * from $tb"); echo "พบข้อมูลจำนวน ". $result->num_rows ." รายการ"; } $connect->close(); echo "<hr color=red />"; echo $change_status; } else { $_SESSION["admin_password"] = ""; echo '<meta http-equiv=refresh content="0;url=?action=admin">'; } echo "<hr color=red />" . $pass_get; echo "<br/>ถ้าต้องการเปลี่ยนรหัสผ่านใหม่ ให้กรอกรหัสผ่านใหม่ในช่องกรอกรหัสผ่าน<br/>แล้วจึงนำ code ที่เข้ารหัสแล้ว ด้านบนนี้ไปแทนที่ในตัวแปร ". '$admin_password' . $footer; exit; } /* Section 5 : Registration form */ if (!isset($_GET{'action'}) && !isset($_POST{'name'}) && !isset($_POST{'username'})) { connect_db(); echo "<table bgcolor=#dddddd width=750> <form action='' method=post> <tr bgcolor=black><td align=center colspan=2><font color=white>$header</td></tr> <tr bgcolor=#ffffdd><td align=right>นาย/นางสาว/นาง</td><td><input name=sex size=7></td></tr> <tr bgcolor=#ddffdd><td align=right>ชื่อ</td><td><input name=name size=50> > 2 character</td></tr> <tr bgcolor=#ffffdd><td align=right>นามสกุล</td><td><input name=surname size=50> > 2 character</td></tr> <tr bgcolor=#ddffdd><td align=right>วัน เดือน ปีเกิด</td><td><input name=birthday size=20></td></tr> <tr bgcolor=#ffffdd><td align=right>อายุ</td><td><input name=age size=5></td></tr> <tr bgcolor=#ddffdd><td align=right>วุฒิการศึกษา</td><td><input name=degree size=70></td> <tr bgcolor=#ffffdd><td align=right>สาขาวิชา</td><td><input name=major size=70></td></tr> <tr bgcolor=#ddffdd><td align=right>หน่วยงาน</td><td><input name=org size=70></td> <tr bgcolor=#ffffdd><td align=right>ตำแหน่ง</td><td><input name=position size=70></td></tr> <tr bgcolor=#ddffdd><td align=right>ที่อยู่ (สถานที่ทำงาน)</td><td><input name=addressw size=70></td></tr> <tr bgcolor=#ffffdd><td align=right>ที่อยู่ (ที่ติดต่อได้สะดวก)</td><td><input name=addressh size=70></td></tr> <tr bgcolor=#ddffdd><td align=right>เบอร์โทรศัพท์</td><td><input name=tel size=30></td></tr> <tr bgcolor=#ffffdd><td align=right>เบอร์โทรสาร</td><td><input name=fax size=30></td></tr> <tr bgcolor=#ddffdd><td align=right>อีเมล</td><td><input name=email size=30></td></tr> <tr bgcolor=#ffffdd><td align=right>รหัสยืนยัน [<font color=red>$rnd</font>]</td><td><input name=secure> <br/>กรุณาพิมพ์ตัวเลขสีแดง ในช่องด้านบน เพื่อยืนยันการสมัคร</td></tr> <input name=secureconfirm type=hidden value=$rnd> <input name=status type=hidden value='รอตรวจสอบ'> <tr><td colspan=2 align=center><input type=submit Value='ยืนยันการลงทะเบียน'></td></tr> </form></table> <table bgcolor=#dddddd width=750><tr><td style='text-align:center;background-color:white;'> <a href=?action=show>Member Listing</a> :: <a href=?action=admin>Admin Page</a> :: "; echo "ขณะนี้เวลา : " . date("Y-m-d H:i:s") . $footer . "</td></tr></table>"; exit; } /* Section 6 : All action */ if (isset($_GET{'action'})) { ########## admin ### if ($_GET{'action'} == "admin") { echo "<table bgcolor=#dddddd> <form action='' method=post> <tr><td bgcolor=black colspan=2 style='text-align:center;'><font color=white><b>ระบบจัดการสมาชิก</b></td></tr> <tr><td>User name</td><td><input name=admin_user value=admin></td></tr> <tr><td>Password</td><td><input name=admin_password type=password></td></tr> <tr><td colspan=2 align=center><table><td><input type=submit Value='Sign in'></td></tr> </form>"; if ($admin_stat == "on") echo "<tr> <form action='' method=post><input name=admin_user type=hidden><input name=admin_password type=hidden> <td bgcolor=gray><input type=submit value='Sign out'></td></form></table></td></tr>"; echo "</table>" .$footer; exit; } ########## del ### if ($_GET{'action'} == "del") { if ($_SESSION["admin_password"] == $admin_password && $_GET{'id'} > 0) { connect_db(); $query = "delete from $tb where id =" . $_GET{'id'}; if ($connect->query($query) === TRUE) { echo "Record deleted : Completely"; } else { echo "Delete : fail"; } echo "<br/><a href=?action=show>Back to check</a>"; $connect->close(); } else { echo "Admin status checking : fail"; } echo $footer; exit; } ########## update ### if ($_GET{'action'} == "update") { if ($_SESSION["admin_password"] == $admin_password && $_GET{'id'} > 0) { $query = "update $tb set status = '".$_GET{'status'}."' where id =" . $_GET{'id'}; connect_db(); if ($connect->query($query) === TRUE) { echo '<meta http-equiv=refresh content="0;url=?action=show">'; } else { echo "Updateing : fail"; } $connect->close(); exit; } else { echo "Admin status checking : fail"; } echo $change_status . $footer; exit; } ########## show ### if ($_GET{'action'} == "show") { connect_db(); $query = "select * from $tb order by id"; if ($sort == "sortid") { $query = "select * from $tb order by id"; } if ($sort == "sortname") { $query = "select * from $tb order by name, surname"; } if ($sort == "sortorg") { $query = "select * from $tb order by organization desc"; } if (isset($_GET{'key'})) { $akey = split('[+]',$_GET{'key'}); if (strlen($_GET{'key'}) > 0) { $query = "select * from $tb where name like '".$akey[0]."%' "; if (count($akey) > 1) $query = $query . " and surname like '".$akey[1]."%' "; $query = $query . " order by name"; } } $result = $connect->query($query); $cntall = $result->num_rows; if ($cntall > 0) { echo "<table width=100%><td align=center bgcolor=black><font color=white>$header</td></table> <table width=100%><form action='' method=get><td align=center bgcolor=#dddddd>จัดเรียงตาม : <a href=?action=show&sort=sortid>เลขที่ใบสมัคร</a> | <a href=?action=show&sort=sortname>ชื่อผู้สมัคร</a> | <a href=?action=show&sort=sortorg>หน่วยงาน</a> | <input name=action value=show type=hidden> <br/>ระบุชื่อและสกุล (เช่น <b>ทองเส้น+ก้อนใหญ่</b> หรือ <b>ทอง</b>) <input name=key width=30><input type=submit value=ค้นหาตามชื่อและสกุล> </td></form></table> <table align=center>"; $lastpage = (($cntall - ($cntall % $lineperpage)) / $lineperpage) + 1; echo "<tr bgcolor=#ddffff><td colspan=11>หน้าที่ : "; for ($j=1;$j<=$lastpage;$j++) echo " <a href=?action=show&page=$j>$j</a> |"; echo "</td></tr>"; echo "<tr bgcolor=#dddddd align=center> <td width=50>ลำดับ</td> <td width=50>เลขที่<br/>ใบสมัคร</td> <td width=50>คำนำ<br/>หน้าชื่อ</td> <td width=100>ชื่อ</td> <td width=100>สกุล</td> <td width=100>หน่วยงาน</td> <td width=100>วันที่สมัคร</td> <td width=100>สถานะ <br/>(ตรวจสอบคุณสมบัติ)</td>"; if (isset($_SESSION["admin_password"])) { if ($_SESSION["admin_password"] == $admin_password) echo "<td align=center>วันเดือนปีเกิด</td><td align=center>อายุ</td><td align=center>วุฒิการศึกษา</td><td align=center>สาขาวิชา</td><td align=center>ตำแหน่ง</td><td align=center>ที่อยู่(ที่ทำงาน)</td><td align=center>ที่อยู่(ที่ติดต่อได้สะดวก)</td><td align=center>โทรศัพท์</td><td align=center>โทรสาร</td><td align=center>อีเมล</td>"; } echo "</tr>"; } else { echo "ไม่พบข้อมูลที่ค้นหา<br/><a href=?action=show>กลับไปดูรายชื่อใหม่</a>" . $footer; exit; } $i = 1; // while($row = $result->fetch_assoc()) { echo $row["id"]; } while ($object = $result->fetch_object()) { if ($i >= ($page - 1) * $lineperpage && $i <= ($page) * $lineperpage) { if ($i % 2 == 0) echo "<tr bgcolor=#ffffdd>"; else echo "<tr bgcolor=#fffffd>"; if (isset($_SESSION["admin_password"])) { if ($_SESSION["admin_password"] == $admin_password) { echo "<td><a href=?action=del&id=".$object->id.">ลบ</a> $i </td>"; } else { echo "<td>".$i."</td>"; } } else { echo "<td>".$i."</td>"; } echo "<td>YN-".$object->id."</td>"; echo "<td>".$object->sex."</td>"; echo "<td>".$object->name."</td>"; echo "<td>".$object->surname."</td>"; echo "<td>".$object->organization."</td>"; echo "<td>".$object->applydate."</td>"; echo "<td>".$object->status."</td>"; if (isset($_SESSION["admin_password"])) { if ($_SESSION["admin_password"] == $admin_password) { echo "<td>".$object->birthday."</td>"; echo "<td>".$object->age."</td>"; echo "<td>".$object->degree."</td>"; echo "<td>".$object->major."</td>"; echo "<td>".$object->position."</td>"; echo "<td>".$object->addressw."</td>"; echo "<td>".$object->addressh."</td>"; echo "<td>".$object->tel."</td>"; echo "<td>".$object->fax."</td>"; echo "<td>".$object->email."</td>"; } } } $i++; } echo "<tr bgcolor=#ddffff><td colspan=11>หน้าที่ : "; for ($j=1;$j<=$lastpage;$j++) echo " <a href=?action=show&page=$j>$j</a> |"; echo "</td></tr>"; echo "<tr bgcolor=#ddffdd><td colspan=11>จำนวนสมาชิก : ".$cntall."$programmer</td></tr>"; echo "</table></center>"; $connect->close(); if($admin_stat == "on") echo $change_status; } echo $footer; exit; } /* Section 7 : Verification for secure code */ if (isset($_POST{'secure'})) { echo "<font size=6 color=#000088><br/><br/>"; if ($_POST{'secure'} != $_POST{'secureconfirm'} || strlen($_POST{'name'}) < 2 || strlen($_POST{'surname'}) < 2) { echo "รหัสยืนยันไม่ถูกต้อง หรือกรอกข้อมูลไม่ครบ"; echo "<br/><a href=?>กลับไปกรอกข้อมูลใหม่</a>"; exit; } $query = "insert into $tb values('"; $query .= "','" . $_POST{'sex'}; $query .= "','" . $_POST{'name'}; $query .= "','" . $_POST{'surname'}; $query .= "','" . $_POST{'birthday'}; $query .= "','" . $_POST{'age'}; $query .= "','" . $_POST{'degree'}; $query .= "','" . $_POST{'major'}; $query .= "','" . $_POST{'org'}; $query .= "','" . $_POST{'position'}; $query .= "','" . $_POST{'addressw'}; $query .= "','" . $_POST{'addressh'}; $query .= "','" . $_POST{'tel'}; $query .= "','" . $_POST{'fax'}; $query .= "','" . $_POST{'email'}; $query .= "','" . $_POST{'status'}; $query .= "','" . date("Y-m-d H:i:s"); $query .= "')"; connect_db(); if ($connect->query($query) === TRUE) { echo "Keep data : completely<br/>Your data will be displayed in last page"; echo '<meta http-equiv=refresh content="5;url=?action=show">'; } else { echo "Registration : fail"; } $connect->close(); echo $footer; exit; } function connect_db() { global $connect,$host,$user,$password,$db; $connect = new mysqli($host,$user,$password,$db); if ($connect->connect_error) { die("Connection Database :failed<br/>please contact admin or <a href='?action=admin'>install table</a>". $footer); } } ?> |