File : memmysql.php. ID : 9121
Skin : Default | Sons-of-obsidian | Sunburst | Highlighter | Frame
<?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);
  }
}
?>