<?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);
}
}
?>
จำนวน : 333 บรรทัด