ถอดรหัส md5 ในเมื่อเราสามารถเข้ารหัส md5 ได้แล้ว เช่น 1234 เมือเข้ารหัส md5 เป็น ds4545gdg15d454dg
md5 เข้าใช้สำหรับเข้ารหัสตอน ล็อก อิน ถอดไม่ได้หรือแต่ถ้าใช้ encode ถอดได้ ในเว็บนี้ก่อมี
Date :
12 ก.ย. 2550 13:46:31
By :
สิงเหนือ
md5 ถอดไมได้ แต่จะใช้รหัสนั้นมาเปรียบเทียบกันเท่านั้น ว่าตรงกันหรือไม่
ถ้าอยากถอดได้ก็ใช้ base64_encode -> base64_decode
Date :
12 ก.ย. 2550 15:23:25
By :
อิอิ
-*-
MD5 เข้ารหัสทางเดียว ถอดไม่ได้ แต่สามารถเปรียบเทียบได้ ครับ
Date :
12 ก.ย. 2550 15:26:17
By :
Thenetxx AE111
md5 ไม่สามารถถอดได้ครับ(ในตอนนี้ แต่อนาคตไม่แน่) แต่ก็ไม่ถึงกับสิ้นหนทางซะทีเดียวครับ
พอจะมีเวปที่เค้ารวบรวม encode จากคำต่างๆเก็บไว้ครับ
ลองหาดูนะครับ ได้ไม่ได้ก็เดี๊ยวมาตอบให้อีกทีนะ
เช่น encode คำว่า cat เค้าก็จะเก็บค่า encode ไว้เวลาเรากรอก ตัว encode ไปมันก็จะไปตรวจสอบกับ database
database หน่ะครับ ส่วนใหญ่ก็คำง่ายๆพื้นๆหน่ะครับบ ถ้าจำไม่ผิดเค้ามีเก็บ ค่าไว้ ตั้ง 100,000+ แหนะ ลองหา
ดูครับ
Date :
12 ก.ย. 2550 16:44:57
By :
แมวน้ำแข็ง
http://www.md5decrypter.com/
เว็บนี้ถอดได้ครับ
Date :
2013-02-20 10:43:12
By :
arta
ขอบคุณครับ
Date :
2015-10-15 14:01:15
By :
กศน.
afe3ae62d3f6b191e93fb68b440b8f9a
ลองถอดตัวนี้ที่ http://www.md5decrypter.com/ ไม่ได้ครับ
Date :
2020-03-19 07:28:59
By :
ajsudkedt
Topic 2015 ไม่ต้องขุดแล้วครับ 5ปีเค้าคฃทำได้แล้วล่ะ อีกอย่างมันดันกระทู้ใหม่ที่ต้องการความช่วยเหลือ Drop ลงไป
Date :
2020-03-19 08:50:38
By :
Genesis™
ครับผม
เค้าทำได้ แต่ผมยังทำไม่ได้ครับ
ผมต้องกราบขออภัยหากต้องทำให้กระทู้ใหม่ต้อง drop ลงไป
ขอโทษจริง ๆ ครับ #Genesis™
Date :
2020-03-19 10:42:32
By :
ajsudkedt
ตั้งกระทู้ใหม่จะดีกว่าครับ
- MD5 เป็นการ pass รหัสทางเดียวไม่สามารถถอดรหัสกลับมาได้
- ยกเว้นแต่คุณใช้ base64 decode/encode แต่ความปลอดภัยมันค่อนข้างต่ำ
https://www.thaicreate.com/php/php-base64_encode.html
- เพื่อความ Protected ควรใช้ Reg ที่ password ควรมี เช่น ต้องมีอักษร a-z A-Z 0-9 และมี symbol ประกอบใน การเข้ารหัสนั้น รวมถึงใช้ MD5 หรือการเข้ารหัสในลักษณะอื่นที่ สามารถเข้ารหัสได้ แต่ถอดรหัสไม่ได้ มันจะปลอดภัยมากกว่าสำหรับทำระบบ
Date :
2020-03-19 11:00:05
By :
Genesis™
จะทำไปทำไมจะไป hack เขาหรือไง
md5 มันเป็นการสร้าง string ขึ้นมาเพื่อใช้เปรียบเทียบ
สามารถใช้ เทคโนโลยี่ย้อนกลับได้ แต่มันมีโอกาสที่ย้อนแล้วจะไม่ได้ข้อมูลเหมือนข้อมูลที่สร้างมันได้
มันมี ความยาว 16 หรือ 32 ตัว และแต่ละตัว เป็นภาษาอังกฤษ + ตัวเลข 36 ตัวโดยประมาณ
แต่ข้อมูลที่สร้างมันขึั้นมาไม่จำกัดความยาว และไม่จำกัดชนิดตัวอักษร มันมีโอกาสซ้ำกันอยู่แล้ว
เพราะฉนั้นไม่มีประโยชน์ที่จะทำเทคโนโลยี่ย้อนกลับ
Date :
2020-03-19 11:44:31
By :
Chaidhanan
สิ่งที่ผมอยากทราบจากรหัส password ที่ถูกเข้ารหัสไว้เนื่องจาก
ผมนำเข้าข้อมูลนักเรียน 2450 คนจาก Navicat ไป SQL
แต่นักเรียนเข้าโปรแกรมไม่ได้ เพราะคอลัมน์ Password ใน SQL มันว่างเปล่า
ในคอลัมน์ Password จะมีรหัสขึ้นมาได้จำเป็นต้องกรอกข้อมูลนักเรียนทีละคนผ่านเมนูในโปรแกรม
แล้วคลิกบันทึก มันถึงจะสร้างรหัสขึ้นมาในช่อง password จึงจะสามารถให้นักเรียน login เข้าโปรแกรมได้
ปัญหาคือ นักเรียน 2450 หากให้ผมกรอกข้อมูลตามเมนูในโปรแกรมทีละคน คงไม่ไหวจริง ๆ ครับ
เลยอยากเสาะหาวิธีให้รวดเร็วขึ้นครับ
ขอบคุณทุกท่านที่ให้คำแนะนำนะครับ
Date :
2020-03-19 19:15:48
By :
ajsudkedt
gen password ขึ้นมาใหม่
และพิมพ์ใส่กระดาษ แจกให้นักเรียน ตามชื่อ
ง่ายที่สุดแล้ว เสร็จแล้วให้เข้าไปแก้ เอาเอง
ในอนาคตถ้านักเรียนลืม ให้เข้าห้องธุรการ ยืนยันตัวตนจากบัตรประจำตัว
ให้ครู เซทพาสเวิร์ดให้ใหม่
และเด็กที่เข้าใช้คอมพิวเตอร์ได้นี่ ส่วนใหญ่ก็จะมี สมาร์ทโฟนใช้กันทั้งหมด หรือมีอีเมลใช้กันทั้งนั้น
ก็ใช้ email ของพวกเขาให้เป็นประโยชน์ นำมาผูกกับข้อมูล เพื่อแจ้งอะไรที่จำเป็นก็ได้
หรืออีกที รหัสประจำตัวเขา ก็คล้ายพาสเวิร์ด นำมาใช้แทนพาสก่อนก็ได้
คนไหนช่องพาสเวิร์ดว่างก็ให้พิมพ์ รหัสประจำตัวเพื่อยืนยัน
ผมยังคิดไม่ออกเหตุผลที่จะไป hack md5
ปล. สงสัยครับ แล้วคุณมี md5 จากของเก่า แล้วทำไมถีงไ่ม่ใช้ ล่ะครับ
ผมว่าคุณเขียนโปรแกรม login เปรียบเทียบ ไม่ถูกมากกว่าละมั้งเนี่ย
ประวัติการแก้ไข 2020-03-19 19:58:23
Date :
2020-03-19 19:53:37
By :
Chaidhanan
ปกติการ export sql ออกมา ข้อมูลมันควรมาหมดเลยนี่ครับ ไม่ควรเว้น password ด้วยเพราะมันคือ varchar/text นี่เอง ทำไม export จึงว่างช่อง password ได้?
ถ้า navicat มันมีปัญหานี้ก็แนะนำว่า export ตรงๆจาก sql command เลยดีกว่า
edit: แนะนำตามคห.ข้างบน ให้ใช้กระบวนการ reset password ด้วยตนเองผ่านอีเมลจะง่ายและเป็นสากล อีกทั้งยังสามารถปรับโปรแกรมซะใหม่ ให้ใช้ algorithm สำหรับการ hash รหัสผ่านจริงๆซึ่งจะปลอดภัยกว่า md5 เยอะ.
ประวัติการแก้ไข 2020-03-19 20:31:26
Date :
2020-03-19 20:29:12
By :
mr.v
#Chaidhanan
1. gen password ใหม่ ทำไม่ได้ครับ คนเขียนโปรแกรมนี้เค้ากำหนด algorithm ไว้ซึ่งผมไม่ทราบรูปแบบว่า password ถูกกำหนดมาจากอะไรครับ
2. ถ้ากรอกข้อมูลนักเรียนตามเมนูในโปรแกรม User Password จะสามารถตั้งเองได้ครับ แต่พอมาดูใน sql Password จะถูกเข้ารหัสไว้ครับ
3. เข้ากรอกข้อมูลนักเรียนในโปรแกรมต้องเข้าในนามครู และต้องมานั่งใล่ติดตามให้เข้ากรอกจนกว่าจะครบ 2450 คน คงลำบากหน้าดูครับ
4.MD5 ที่ได้จากการกรอกตามเมนูในโปรแกรม หากทำใน excel ลากสูตรได้แล้วนำไปวางใน slq ก็จะทำให้งานรวดเร็วยิ่งขึ้นครับ ไม่แน่ใจว่าพอจะมี excel แบบนี้ไหม คือ ใส่รหัส Password ลงไป แล้วให้ excel ถอดเป็น MD5 ให้ออกมาเลย ประมาณนี้ครับ
5. "เขียนโปรแกรม login เปรียบเทียบ" ผมอยากจะขอศึกษาจากท่าน พอจะมี source code ตัวอย่างไหมครับ
ขอบคุณ #Chaidhanan สำหรับคำแนะนำมาก ๆ ครับ
ประวัติการแก้ไข 2020-03-20 08:28:13
Date :
2020-03-20 08:05:50
By :
ajsudkedt
#mr.v
1. "export sql " ทาง Navicat คอลัมน์ Password มีรหัสเฉพาะนักเรียนที่กรอกตามเมนูในโปรแกรมครับ
2. ผมต้องการนำเข้าข้อมูลนักเรียน 2450 คน จาก excel ไป Navicat แล้ว Navicat มันจะเชื่อมต่อไปยัง sql เอง ซึ่งคอลัมน์ Password ใน excel ที่ผมนำเข้ามันว่างเปล่า เลยต้องการหาวิธีการได้มาซึ่ง Password ที่มีการเข้ารหัส MD5 เอามาลงใน excel ของนักเรียนแต่ละคนก่อนนำเข้าครับ
3. หากต้องกรอกข้อมูลนักเรียน 2450 คน ผ่านเมนูโปรแกรมทีละคน คงลำบากมาก ๆ เลยครับ
4. "export ตรง ๆ จาก sql command" กับ "กระบวนการ reset password ด้วยตนเองผ่านอีเมล" สองอย่างนี้ ผมอยากจะขอนำแนะนำเพิ่มเติมครับ
ขอบคุณครับ #mr.v สำหรับคำแนะมาก ๆ นะครับ
ประวัติการแก้ไข 2020-03-20 08:29:39
Date :
2020-03-20 08:26:52
By :
ajsudkedt
ขอถามครับ program ใช้ภาษาอะไรเขียนครับ
สามารถที่จะ เขียนเพิ่มเติมเองได้ไหม
ถ้าเขียนเพิ่มเติมแก้ไขได้ เดี๋ยวช่วยสอนครับ
แต่ถ้าเขียนเพิ่มเติมแก้ไขไม่ได้ คงต้องจ้างคนเก่าให้ทำให้ครับ
หรือจ้างบุคคลอื่น ทำการ decode ให้ออกมาในรูปแบบที่แก้ไขได้
หรือต้องทำมืออย่างเดียวแล้วล่ะครับ 2450 คน ไม่ถีงเดือนเดียวก็เสร็จครับ
วันละ 80 คน ถ้ามีหลายเครื่อง ครูหลายคน ช่วยกรอก ก็เร็วขึ้น
ตัวอย่างโรงพยาบาล พนักงานตรวจสอบสิทธิ์ 3 เครือ่ง รองรับผู้ป่วยได้ 500 คน (แค่ครึ่งวันเช้า)
เรียกรหัสประชาชน(บัตรนักเรียน) นั่งคุยสอบถาม (สร้างรหัส พิมพ์ให้เด็ก)
ประวัติการแก้ไข 2020-03-20 08:48:00
Date :
2020-03-20 08:42:09
By :
Chaidhanan
#Chaidhanan
1. ใช้ PHP ครับ
2. ผมสอนภาษาอังกฤษ ไม่มีพื้นฐานด้านการเขียนโปแกรม แต่ชอบและอยากเรียนรู้ครับ
3. ผมตั้งใจอยากจะช่วยโรงเรียนทำระบบบันทึกคะแนนพฤติกรรมนักเรียน online เดิมตอนนี้บันทึกใส่ excel ไว้ครับ
4. ผมไม่อยากให้โรงเรียนเสียเงินค่าโปรแกรม เลยหา download source code มาศึกษา ปรับปรุง พัฒนาเอาเองครับ
5. หากผมจะส่ง source code ทั้งหมดให้ท่าน ช่วยปรับให้ จะได้ไหมครับ
ขอบคุณครับ
Date :
2020-03-20 08:58:23
By :
ajsudkedt
ผมไม่มีเวลาขนาดนั้นหรอกครับ การเข้ามาตอบ มันแค่เวลาผมว่างเท่านั้น
ลองเอา database มาลงไว้เป็นตัวอย่าง ให้ดู ซัก 2-3 เรคคอร์ด ครับ
ทั้งของ excel ที่ทำไว้ กับ ของ mysql
บางที การสร้าง hash password ถ้ารู้สูตรการ สร้าง เราสามารถ generate sql statement จาก excel เป็น text
แล้ว copy มา paste ใน navicat query ได้เลย
ในเซล ชวาสุดของข้อมูลใส่ สูตร เช่น
="update table name set field_md5 = md5('" & a5 & "' ) where id=" & a1 & ";"
แล้วcopy ลงไปทุกรายการ เสร็จแล้ว ก็ copy value ที่ได้ ไป paste ใน navicat
อ้นนี้เป็นแบบ รายตัว
ทีนี้เรายังทำให้ง่ายขึ้นไปได้อีก โดยการ update แบบทั้งหมดได้ด้วยคำสั่ง บันทัดเดียวใน navicat ได้เลย
Code (SQL)
update table name
set field_md5 = สูตรสร้าง hash password
where ....
ประวัติการแก้ไข 2020-03-20 09:14:59
Date :
2020-03-20 09:10:22
By :
Chaidhanan
Code (PHP)
<?php
if (eregi("student_list.php",(basename($_SERVER['PHP_SELF'])))) {
echo"<META HTTP-EQUIV='Refresh' CONTENT='0;URL=../../index.php'>";
die();
}
if($_GET[action]=="list"){ //แสดงข้อมูล
include"check_permission_admin.php";?>
<ul >
<li class="btn btn-warning">
<a href="?mname=admin&mfile=student_list&action=form">เพิ่มข้อมูล</a>
</li>
</ul>
<form class="form-search" action="?mname=admin&mfile=student_list&action=search" method="post">
ค้นหา<span id="sprytextfield1">
<label for="search"></label>
<input type="text" name="search" id="search" class="input-medium search-query" />
<span class="textfieldRequiredMsg">กรุณากรอกคำที่ต้องการค้นหา</span></span>
<button type="submit" class="btn btn-info">Search</button>
</form>
<?php
$sql = "select * from student,class where student.class_id=class.class_id order by st_id asc "; //แสดงตามสถานะ
$dbquery = mysql_query($sql);
// หาจำนวนเรกคอร์ดข้อมูลในตารางser_id=
$num_rows = mysql_num_rows($dbquery);
if($num_rows > 0){
//---instance class---//
$class_page = new Page();
?>
<table class="table table-bordered table-hover">
<tr class="header">
<th scope="col">เลขประจำตัวนักเรียน</th>
<th scope="col">ชื่อ-สกุล</th>
<th scope="col">ระดับการศึกษา</th>
<th scope="col">เบอร์โทรศัพท์</th>
<th scope="col">แก้ไข</th>
<th scope="col">ลบ</th>
</tr>
<?php
$dbquery2 = $class_page->paging($sql); //แบ่งหน้า
while($result=mysql_fetch_array($dbquery2)) {
If ($bg==$begin_color)
{
$bg="odd";
}
Else
{
$bg="even";
}
?>
<tr class="<?php echo $bg;?>">
<td ><?php echo"<a href='?mname=admin&mfile=student_list&action=detail&st_id=$result[st_id]'>$result[st_id] </a>";?></td>
<td ><?php echo"$result[st_name] $result[st_lastname]";?></td>
<td ><?php echo"$result[class_name]/$result[st_room] ";?></td>
<td ><?php echo"$result[st_mobile] ";?></td>
<td WIDTH='10' align=center><?php echo"<A HREF='?mname=admin&mfile=student_list&action=edit&st_id=$result[st_id]'><IMG SRC='images/Doc-Edit.gif' WIDTH='16' HEIGHT='16' BORDER=0 ></A>";?></td>
<td WIDTH='10' align=center><?php echo "<a href='?mname=admin&mfile=student_list&action=delete&st_id=$result[st_id]' onclick=\"return confirm('คุณต้องการลบรายการนี้?')\" ><IMG SRC='images/Doc-Del.gif' WIDTH='16' HEIGHT='16' BORDER=0 ></A>"; ?></td>
</tr>
<?php
}
//end While
echo "</Table>";
//---แสดงการแบ่งหน้า---//
$class_page->showpage("mname=".$_GET[mname]."&mfile=".$_GET[mfile]."&action=list");
}else{
?>
<table id="table1">
<tr >
<td align=center> ไม่มีข้อมูล </td>
</tr >
</table>
<?php
}
mysql_close(); // ปิดการเชื่อมต่อ
?>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
</script>
<?php
}elseif($_GET[action]=="search"){ //การค้นหาข้อมูล
include"check_permission_teacher.php";?>
<div class="well">
ผลการค้นหาข้อมูล
<center> ด้วยคำว่า <?php echo $_POST[search];?><p> <A HREF="?mname=admin&mfile=student_list&action=list">กลับไปค้นหาใหม่</A></center>
</div>
<?php
$sql = "select * from student,class where student.class_id=class.class_id and (st_id like '".$_POST[search]."%' or st_name like '".$_POST[search]."%') order by st_id asc "; //แสดงตามสถานะ
$dbquery = mysql_query($sql);
// หาจำนวนเรกคอร์ดข้อมูลในตารางser_id=
$num_rows = mysql_num_rows($dbquery);
if($num_rows > 0){
?>
<table class="table table-bordered table-hover">
<tr class="header">
<th scope="col">เลขประจำตัวนักเรียน</th>
<th scope="col">ชื่อ-สกุล</th>
<th scope="col">ระดับการศึกษา</th>
<th scope="col">เบอร์โทรศัพท์</th>
<th scope="col">แก้ไข</th>
<th scope="col">ลบ</th>
</tr>
<?
While ($result = mysql_fetch_array($dbquery))
{
If ($bg==$begin_color)
{
$bg="odd";
}
Else
{
$bg="even";
}
?>
<tr class="<?php echo $bg;?>">
<td ><?php echo"<a href='?mname=admin&mfile=student_list&action=detail&st_id=$result[st_id]'>$result[st_id] </a>";?></td>
<td ><?php echo"$result[st_name] $result[st_lastname]";?></td>
<td ><?php echo"$result[class_name]/$result[st_room] ";?></td>
<td ><?php echo"$result[st_mobile] ";?></td>
<td WIDTH='10' align=center><?php echo"<A HREF='?mname=admin&mfile=student_list&action=edit&st_id=$result[st_id]'><IMG SRC='images/Doc-Edit.gif' WIDTH='16' HEIGHT='16' BORDER=0 ></A>";?></td>
<td WIDTH='10' align=center><?php echo "<a href='?mname=admin&mfile=student_list&action=delete&st_id=$result[st_id]' onclick=\"return confirm('คุณต้องการลบรายการนี้?')\" ><IMG SRC='images/Doc-Del.gif' WIDTH='16' HEIGHT='16' BORDER=0 ></A>"; ?></td>
</tr>
<?php
}
//end While
echo "</Table>";
}else{
?>
<table id="table1">
<tr >
<td align=center> ไม่มีข้อมูล </td>
</tr >
</table>
<?php
}
mysql_close(); // ปิดการเชื่อมต่อ
}elseif($_GET[action]=="form"){ //ฟอร์มเพิ่มข้อมูล
?>
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.js"></script>
<link href="js/smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" type="text/css">
<style type="text/css">
.ui-datepicker{
width:170px;
font-family:tahoma;
font-size:11px;
text-align:center;
}
</style>
<script type="text/javascript">
$(function(){
var dateBefore=null;
$("#st_birthdate,").datepicker({
dateFormat: 'dd-mm-yy',
dayNamesMin: ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส'],
yearRange: '-60:+10',
monthNamesShort: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
changeMonth: true,
changeYear: true ,
beforeShow:function(){
if($(this).val()!=""){
var arrayDate=$(this).val().split("-");
arrayDate[2]=parseInt(arrayDate[2])-543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
setTimeout(function(){
$.each($(".ui-datepicker-year option"),function(j,k){
var textYear=parseInt($(".ui-datepicker-year option").eq(j).val())+543;
$(".ui-datepicker-year option").eq(j).text(textYear);
});
},50);
},
onChangeMonthYear: function(){
setTimeout(function(){
$.each($(".ui-datepicker-year option"),function(j,k){
var textYear=parseInt($(".ui-datepicker-year option").eq(j).val())+543;
$(".ui-datepicker-year option").eq(j).text(textYear);
});
},50);
},
onClose:function(){
if($(this).val()!="" && $(this).val()==dateBefore){
var arrayDate=dateBefore.split("-");
arrayDate[2]=parseInt(arrayDate[2])+543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
},
onSelect: function(dateText, inst){
dateBefore=$(this).val();
var arrayDate=dateText.split("-");
arrayDate[2]=parseInt(arrayDate[2])+543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
});
});
</script>
<script type="text/javascript">
//<![CDATA[
var province_id = <?php echo isset($_POST['province_id']) ? intval($_POST['province_id']) : '0'; ?>;
var amphur_id = <?php echo isset($_POST['amphur_id']) ? intval($_POST['amphur_id']) : '0'; ?>;
var district_id = <?php echo isset($_POST['district_id']) ? intval($_POST['district_id']) : '0'; ?>;
function loadSelectBox(id,url,selected){
$.get(
url,{},function(data){
$(id).html(data);
if (selected!=0){
$(id+' option[value='+selected+']').attr('selected','selected');
}
}
);
}
$(function(){
loadSelectBox(
'#province_id',
'geo_combo.php?load=province',
province_id
);
loadSelectBox(
'#amphur_id',
'geo_combo.php?load=amphur&province_id='+province_id,
amphur_id
);
loadSelectBox(
'#district_id',
'geo_combo.php?load=district&hur_id='+amphur_id,
district_id
);
$('#province_id').change(function(e){
var selected = e.target.value;
loadSelectBox(
'#amphur_id',
'geo_combo.php?load=amphur&province_id='+selected,
0
);
$('#district_id :not(option:first)').remove(); //add
});
$('#amphur_id').change(function(e){
var selected = e.target.value;
loadSelectBox(
'#district_id',
'geo_combo.php?load=district&hur_id='+selected,
0
);
});
});
//]]>
</script>
<form action="?mname=admin&mfile=student_list&action=insert" method="post" enctype="multipart/form-data" name="frmstudent" class="well form-horizontal">
<fieldset>
<legend>นักเรียนลงทะเบียน</legend>
<span id="sprytextfield1">
<label for="st_id">เลขประจำตัวนักเรียน</label>
<input type="text" name="st_id" id="st_id" />
<span class="textfieldRequiredMsg">กรุณากรอกเลขประจำตัวนักเรียน</span><span class="textfieldInvalidFormatMsg">กรอกเฉพาะตัวเลข</span><span class="textfieldMinCharsMsg">เลขประจำตัวนักเรียน 5 หลัก </span><span class="textfieldMaxCharsMsg">เลขประจำตัวนักเรียน 5 หลัก </span></span>
<p>
<span id="spryselect5">
<label for="st_prefix">คำนำหน้าชื่อ</label>
<select name="st_prefix" id="st_prefix">
<option value="" selected>กรุณาเลือกคำนำหน้าชื่อ</option>
<option value="เด็กชาย" >เด็กชาย</option>
<option value="เด็กหญิง" >เด็กหญิง</option>
<option value="นาย" >นาย</option>
<option value="นางสาว" >นางสาว</option>
</select>
<span class="selectRequiredMsg">กรุณาเลือกคำนำหน้าชื่อ</span></span>
<p>
<span id="sprytextfield2">
<label for="st_name">ชื่อ</label>
<input type="text" name="st_name" id="st_name" />
<span class="textfieldRequiredMsg">กรุณากรอกชื่อ</span></span>
<p>
<span id="sprytextfield3">
<label for="st_lastname">นามสกุล</label>
<input type="text" name="st_lastname" id="st_lastname" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุล</span></span>
<p> <span id="spryradio1">
<label>เพศ</label>
<input type="radio" name="st_sex" value="1" id="sex_0" />
ชาย
<input type="radio" name="st_sex" value="2" id="sex_1" />
หญิง <span class="radioRequiredMsg">กรุณาเลือกเพศ</span></span> </p>
<p>
<span id="sprytextfield6">
<label for="st_birthdate">วันเกิด</label>
<input type="text" name="st_birthdate" id="st_birthdate" />
<span class="textfieldRequiredMsg">เลือกวันเกิด</span></span>
<p>
<span id="spryselect2">
<label for="class_id">ชั้นมัธยมศึกษา</label>
<select name="class_id" id="class_id">
<option value="" selected>กรุณาเลือกระดับชั้นเรียน</option>
<?php
$sql = "select * from class order by class_name ";
$dbquery = mysql_query( $sql);
$num_rows = mysql_num_rows($dbquery);
if($num_rows >0){
$i=1;
While ($i <= $num_rows)
{ $result = mysql_fetch_array($dbquery);
echo"<option value=$result[class_id] > $result[class_name] </option>";
$i++; }
}?>
</select>
<span class="selectRequiredMsg">กรุณาเลือกระดับชั้นเรียน</span></span>
<p>
<span id="sprytextfield15">
<label for="st_room">ห้อง</label>
<input type="text" name="st_room" id="st_room" />ตัวอย่าง ถ้าเรียนอยู่ ม. 1/10 พิมพ์ 10 อย่างเดียว
<span class="textfieldRequiredMsg">กรุณากรอกห้อง</span><span class="textfieldInvalidFormatMsg">ห้องกรอกเฉพาะตัวเลข</span></span>
<p><span id="sprytextarea1">
<label for="per_address">ที่อยู่</label>
<textarea name="st_address" id="st_address" cols="45" rows="5" ></textarea>พิมพ์เฉพาะบ้านเลขที่ หมู่ที่ ซอย(ถ้ามี) <span class="textareaRequiredMsg">กรุณากรอกที่อยู่</span></span>
<p>
<span id="spryselect1">
<label for="province_id">จังหวัด</label>
<select name="province_id" id="province_id">
<option value="" selected>กรุณาเลือกจังหวัด</option>
</select>
<span class="selectRequiredMsg">กรุณาเลือกจังหวัด</span></span>
<p>
<span id="spryselect4">
<label for="amphur_id">อำเภอ</label>
<select name="amphur_id" id="amphur_id">
<option value="" selected>กรุณาเลือกอำเภอ</option>
</select>
<span class="selectRequiredMsg">กรุณาเลือกอำเภอ</span></span>
<p>
<span id="spryselect3">
<label for="district_id">ตำบล</label>
<select name="district_id" id="district_id">
<option value="" selected>กรุณาเลือกตำบล</option>
</select>
<span class="selectRequiredMsg">กรุณาเลือกตำบล</span></span>
<p>
<span id="sprytextfield16">
<label for="st_post">รหัสไปรษณีย์</label>
<input type="text" name="st_post" id="st_post" />
<span class="textfieldRequiredMsg">กรุณากรอกรหัสไปรษณีย์</span><span class="textfieldInvalidFormatMsg">รหัสไปรษณีย์กรอกเฉพาะตัวเลข</span><span class="textfieldMinCharsMsg">รหัสไปรษณีย์ 5 ตัว</span><span class="textfieldMaxCharsMsg">รหัสไปรษณีย์ 5 ตัว</span></span>
<p>
<span id="sprytextfield4">
<label for="st_mail">อีเมลล์</label>
<input type="text" name="st_mail" id="st_mail" />
ถ้าไม่มีอีเมลให้กรอก [email protected] แทน
<span class="textfieldRequiredMsg">กรุณากรอกอีเมลล์</span><span class="textfieldInvalidFormatMsg">รูปแบบอีเมลล์ไม่ถูกต้อง</span></span>
<p>
<span id="sprytextfield8">
<label for="st_mobile">มือถือ</label>
<input type="text" name="st_mobile" id="st_mobile" />
<span class="textfieldRequiredMsg">กรุณากรอกเบอร์มือถือ</span><span class="textfieldInvalidFormatMsg">กรุณากรอกเบอร์มือถือ์ให้ถูกต้อง</span></span>
<p>
<span id="sprytextfield9">
<label for="father_name">ชื่อบิดา</label>
<input type="text" name="father_name" id="father_name" />
<span class="textfieldRequiredMsg">กรุณากรอกชื่อบิดา</span></span>
<p>
<span id="sprytextfield10">
<label for="father_lastname">นามสกุลบิดา</label>
<input type="text" name="father_lastname" id="father_lastname" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุลบิดา</span></span>
<p>
<span id="sprytextfield11">
<label for="mother_name">ชื่อมารดา</label>
<input type="text" name="mother_name" id="mother_name" />
<span class="textfieldRequiredMsg">กรุณากรอกชื่อมารดา</span></span>
<p>
<span id="sprytextfield12">
<label for="mother_lastname">นามสกุลมารดา</label>
<input type="text" name="mother_lastname" id="mother_lastname" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุลมารดา</span></span>
<p>
<span id="sprytextfield13">
<label for="parent_name">ชื่อผู้ปกครอง</label>
<input type="text" name="parent_name" id="parent_name" />
<span class="textfieldRequiredMsg">กรุณากรอกชื่อผู้ปกครอง</span></span>
<p>
<span id="sprytextfield14">
<label for="parent_lastname">นามสกุลผู้ปกครอง</label>
<input type="text" name="parent_lastname" id="parent_lastname" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุลผู้ปกครอง</span></span>
<p>
<span id="sprytextfield5">
<label for="parent_mobile">มือถือผู้ปกครอง</label>
<input type="text" name="parent_mobile" id="parent_mobile" />
<span class="textfieldRequiredMsg">กรุณากรอกเบอร์มือถือ</span><span class="textfieldInvalidFormatMsg">กรุณากรอกเบอร์มือถือ์ให้ถูกต้อง</span></span>
<p>
<span id="sprytextfield18">
<label for="showcaptcha"> </label>
<?php dsp_crypt(0,1); ?>
<span class="textfieldRequiredMsg">กรุณากรอกตัวอักษรที่ท่านเห็น</span></span>
<p>
<span id="sprytextfield17">
<label for="captcha">กรอกตัวอักษร </label>
<input type="text" name="captcha" id="captcha" />ตัวพิมพ์ใหญ่ทั้งหมด ไม่ต้องเว้นวรรค
<span class="textfieldRequiredMsg">กรุณากรอกตัวอักษรที่ท่านเห็นด้านล่าง</span></span>
<div class="form-actions">
<button type="submit" class="btn btn-primary">บันทึก</button>
</div>
</fieldset>
</form>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "integer", {minChars:5, maxChars:5, useCharacterMasking:true});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var spryradio1 = new Spry.Widget.ValidationRadio("spryradio1");
var sprytextarea1 = new Spry.Widget.ValidationTextarea("sprytextarea1");
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "email", {useCharacterMasking:true});
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield5", "phone_number", {format:"phone_custom", pattern:"00-0000-0000", useCharacterMasking:true, hint:"xx-xxxx-xxxx"});
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
var spryselect2 = new Spry.Widget.ValidationSelect("spryselect2");
var spryselect3 = new Spry.Widget.ValidationSelect("spryselect3");
var spryselect4 = new Spry.Widget.ValidationSelect("spryselect4");
var spryselect5 = new Spry.Widget.ValidationSelect("spryselect5");
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield8", "phone_number", {format:"phone_custom", pattern:"00-0000-0000", useCharacterMasking:true, hint:"xx-xxxx-xxxx"});
var sprytextfield9 = new Spry.Widget.ValidationTextField("sprytextfield9");
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10");
var sprytextfield11 = new Spry.Widget.ValidationTextField("sprytextfield11");
var sprytextfield12 = new Spry.Widget.ValidationTextField("sprytextfield12");
var sprytextfield13 = new Spry.Widget.ValidationTextField("sprytextfield13");
var sprytextfield14 = new Spry.Widget.ValidationTextField("sprytextfield14");
var sprytextfield15 = new Spry.Widget.ValidationTextField("sprytextfield15", "integer", {useCharacterMasking:true});
var sprytextfield16 = new Spry.Widget.ValidationTextField("sprytextfield16", "integer", {useCharacterMasking:true, minChars:5, maxChars:5});
var sprytextfield17 = new Spry.Widget.ValidationTextField("sprytextfield17");
</script>
<?php
}elseif($_GET[action]=="insert"){ //เพิ่มข้อมูล
// ถ้าป้อน captcha มาถูกต้อง
if (!chk_crypt($_POST['captcha'])){
echo "<script>alert('ท่านป้อนอักษรที่เห็นไม่ถูกต้อง'); window.history.go(-1);</script>";
exit;
}
$sql = "SELECT st_id FROM student where st_id='".$_POST[st_id]."' ";
//echo $sql;exit;
$result = mysql_query( $sql ) or die (mysql_error());
$num = mysql_num_rows ( $result );
if ( $num != 0 )
{
echo "<script>alert('เลขประจำตัวนักเรียนนี้มีอยู่แล้ว'); window.history.go(-1);</script>";
exit; }
if (empty($_POST['district_id'])){
echo "<script>alert('ไม่ได้ระบุตำบล'); window.history.go(-1);</script>";
exit;
}
if (empty($_POST['amphur_id'])){
echo "<script>alert('ไม่ได้ระบุอำเภอ'); window.history.go(-1);</script>";
exit;
}
if (empty($_POST['province_id'])){
echo "<script>alert('ไม่ได้ระบุจังหวัด'); window.history.go(-1);</script>";
exit;
}
list($begin_day,$begin_month,$begin_year) = explode("-",$_POST[st_birthdate]);
$st_password="$begin_day$begin_month$begin_year";
$begin_year=$begin_year-543;
$st_birthdate="$begin_year-$begin_month-$begin_day"; //กำหนดวันแบบ คศ
mysql_query( $sql ) or die (mysql_error());
echo "<script>alert('บันทึกข้อมูลลงทะเบียนเรียบร้อยแล้ว ขอบคุณนักเรียนทุกคนที่ให้ความร่วมมือ'); window.location.href ='index.php';</script>";
}elseif($_GET[action]=="delete"){ //ลบข้อมูล
include "check_permission_teacher.php";
$sql = "SELECT st_id FROM punish where st_id='".$_GET[st_id]."'";
//echo $sql;exit;
$result = mysql_query( $sql ) or die (mysql_error());
$num = mysql_num_rows ( $result );
if ( $num != 0 )
{
echo "<script>alert('ลบข้อมูลไม่ได้ มีการนำข้อมูลไปใช้แล้ว');window.location.href ='?mname=admin&mfile=student_list&action=list';</script>";
exit; }
$sql = "delete from student where st_id='".$_GET[st_id]."'";
//echo $sql;exit;
mysql_query( $sql ) or die (mysql_error());
echo "<script>alert('ลบข้อมูลเรียบร้อยแล้ว'); window.location.href ='?mname=admin&mfile=student_list&action=list';</script>";
}elseif($_GET[action]=="edit"){ //แก้ไขข้อมูล
include"check_permission_teacher.php";?>
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.js"></script>
<link href="js/smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" type="text/css">
<style type="text/css">
.ui-datepicker{
width:170px;
font-family:tahoma;
font-size:11px;
text-align:center;
}
</style>
<script type="text/javascript">
$(function(){
var dateBefore=null;
$("#st_birthdate,").datepicker({
dateFormat: 'dd-mm-yy',
dayNamesMin: ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส'],
yearRange: '-60:+10',
monthNamesShort: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
changeMonth: true,
changeYear: true ,
beforeShow:function(){
if($(this).val()!=""){
var arrayDate=$(this).val().split("-");
arrayDate[2]=parseInt(arrayDate[2])-543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
setTimeout(function(){
$.each($(".ui-datepicker-year option"),function(j,k){
var textYear=parseInt($(".ui-datepicker-year option").eq(j).val())+543;
$(".ui-datepicker-year option").eq(j).text(textYear);
});
},50);
},
onChangeMonthYear: function(){
setTimeout(function(){
$.each($(".ui-datepicker-year option"),function(j,k){
var textYear=parseInt($(".ui-datepicker-year option").eq(j).val())+543;
$(".ui-datepicker-year option").eq(j).text(textYear);
});
},50);
},
onClose:function(){
if($(this).val()!="" && $(this).val()==dateBefore){
var arrayDate=dateBefore.split("-");
arrayDate[2]=parseInt(arrayDate[2])+543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
},
onSelect: function(dateText, inst){
dateBefore=$(this).val();
var arrayDate=dateText.split("-");
arrayDate[2]=parseInt(arrayDate[2])+543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
});
});
</script>
<?php
$sql="select * from student,class,district,amphur,province where student.district_id=district.district_id and student.amphur_id=amphur.amphur_id and student.province_id=province.province_id and student.class_id=class.class_id and st_id='".$_GET[st_id]."'";
//echo $sql;
$db_query=mysql_query($sql);
$result = mysql_fetch_array($db_query);
list($end_year,$end_month,$end_day) = explode("-",$result[st_birthdate]);
$end_year=$end_year+543;
$st_birthdate="$end_day-$end_month-$end_year"; //กำหนดวันแบบ พศ
?>
<script type="text/javascript">
//<![CDATA[
var province_id = <?php echo isset($_POST['province_id']) ? intval($_POST['province_id']) : $result['province_id']; ?>;
var amphur_id = <?php echo isset($_POST['amphur_id']) ? intval($_POST['amphur_id']) : $result['amphur_id']; ?>;
var district_id = <?php echo isset($_POST['district_id']) ? intval($_POST['district_id']) : $result['district_id']; ?>;
function loadSelectBox(id,url,selected){
$.get(
url,{},function(data){
$(id).html(data);
if (selected!=0){
$(id+' option[value='+selected+']').attr('selected','selected');
}
}
);
}
$(function(){
loadSelectBox(
'#province_id',
'geo_combo.php?load=province',
province_id
);
loadSelectBox(
'#amphur_id',
'geo_combo.php?load=amphur&province_id='+province_id,
amphur_id
);
loadSelectBox(
'#district_id',
'geo_combo.php?load=district&hur_id='+amphur_id,
district_id
);
$('#province_id').change(function(e){
var selected = e.target.value;
loadSelectBox(
'#amphur_id',
'geo_combo.php?load=amphur&province_id='+selected,
0
);
$('#district_id :not(option:first)').remove(); //add
});
$('#amphur_id').change(function(e){
var selected = e.target.value;
loadSelectBox(
'#district_id',
'geo_combo.php?load=district&hur_id='+selected,
0
);
});
});
//]]>
</script>
<form action="?mname=admin&mfile=student_list&action=update" method="post" enctype="multipart/form-data" name="frmperson" class="well form-horizontal">
<?php echo"<INPUT TYPE='hidden' NAME='st_id' value='$result[st_id]'>";?>
<fieldset>
<legend>แก้ไขข้อมูลนักเรียน</legend>
<span id="sprytextfield1">
<label for="st_id">เลขประจำตัวนักเรียน</label>
<?php echo $result[st_id];?>
<p>
<span id="spryselect5">
<label for="st_prefix">คำนำหน้าชื่อ</label>
<select name="st_prefix" id="st_prefix">
<option value="<?php echo $result[st_prefix];?>" selected> <?php echo $result[st_prefix];?></option>
<option value="เด็กชาย" >เด็กชาย</option>
<option value="เด็กหญิง" >เด็กหญิง</option>
<option value="นาย" >นาย</option>
<option value="นางสาว" >นางสาว</option>
</select>
<span class="selectRequiredMsg">กรุณาเลือกคำนำหน้าชื่อ</span></span>
<p>
<span id="sprytextfield2">
<label for="st_name">ชื่อ</label>
<input type="text" name="st_name" id="st_name" value="<?php echo $result[st_name];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกชื่อ</span></span>
<p>
<span id="sprytextfield3">
<label for="st_lastname">นามสกุล</label>
<input type="text" name="st_lastname" id="st_lastname" value="<?php echo $result[st_lastname];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุล</span></span>
<p>
<span id="sprytextfield6">
<label for="st_birthdate">วันเกิด</label>
<input type="text" name="st_birthdate" id="st_birthdate" value="<?php echo $st_birthdate;?>" />
<span class="textfieldRequiredMsg">เลือกวันเกิด</span></span>
<p>
<span id="spryselect2">
<label for="class_id">ชั้นมัธยมศึกษา</label>
<select name="class_id" id="class_id">
<option value="<?php echo $result[class_id];?>" selected><?php echo $result[class_name];?></option>
<?php
$sql = "select * from class order by class_name ";
$dbquery = mysql_query( $sql);
$num_rows = mysql_num_rows($dbquery);
if($num_rows >0){
$i=1;
While ($i <= $num_rows)
{ $resultclass = mysql_fetch_array($dbquery);
echo"<option value=$resultclass[class_id] > $resultclass[class_name] </option>";
$i++; }
}?>
</select>
<span class="selectRequiredMsg">กรุณาเลือกระดับการศึกษา</span></span>
<p>
<span id="sprytextfield15">
<label for="st_room">ห้อง</label>
<input type="text" name="st_room" id="st_room" value="<?php echo $result[st_room];?>"/ />
<span class="textfieldRequiredMsg">กรุณากรอกห้อง</span><span class="textfieldInvalidFormatMsg">ห้องกรอกเฉพาะตัวเลข</span></span>
<p><span id="sprytextarea1">
<label for="st_address">ที่อยู่</label>
<textarea name="st_address" id="st_address" cols="45" rows="5" ><?php echo $result[st_address];?></textarea>
<span class="textareaRequiredMsg">กรุณากรอกที่อยู่</span></span>
<p>
<span id="spryselect1">
<label for="province_id">จังหวัด</label>
<select name="province_id" id="province_id">
</select><?php // echo $result[PROVINCE_NAME];?>
<span class="selectRequiredMsg">กรุณาเลือกจังหวัด</span></span>
<p>
<span id="spryselect4">
<label for="amphur_id">อำเภอ</label>
<select name="amphur_id" id="amphur_id">
</select><?php // echo $result[AMPHUR_NAME];?>
<span class="selectRequiredMsg">กรุณาเลือกอำเภอ</span></span>
<p>
<span id="spryselect3">
<label for="district_id">ตำบล</label>
<select name="district_id" id="district_id">
</select><?php // echo $result[DISTRICT_NAME];?>
<span class="selectRequiredMsg">กรุณาเลือกตำบล</span></span>
<p>
<span id="sprytextfield16">
<label for="st_post">รหัสไปรษณีย์</label>
<input type="text" name="st_post" id="st_post" value="<?php echo $result[st_post];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกรหัสไปรษณีย์</span><span class="textfieldInvalidFormatMsg">รหัสไปรษณีย์กรอกเฉพาะตัวเลข</span><span class="textfieldMinCharsMsg">รหัสไปรษณีย์ 5 ตัว</span><span class="textfieldMaxCharsMsg">รหัสไปรษณีย์ 5 ตัว</span></span>
<p>
<span id="sprytextfield4">
<label for="st_mail">อีเมลล์</label>
<input type="text" name="st_mail" id="st_mail" value="<?php echo $result[st_mail];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกอีเมลล์</span><span class="textfieldInvalidFormatMsg">รูปแบบอีเมลล์ไม่ถูกต้อง</span></span>
<p>
<span id="sprytextfield8">
<label for="parent_mobile">มือถือ</label>
<input type="text" name="st_mobile" id="st_mobile" value="<?php echo $result[st_mobile];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกเบอร์มือถือ</span><span class="textfieldInvalidFormatMsg">กรุณากรอกเบอร์มือถือ์ให้ถูกต้อง</span></span>
<p>
<span id="sprytextfield9">
<label for="father_name">ชื่อบิดา</label>
<input type="text" name="father_name" id="father_name" value="<?php echo $result[father_name];?>"/>
<span class="textfieldRequiredMsg">กรุณากรอกชื่อบิดา</span></span>
<p>
<span id="sprytextfield10">
<label for="father_lastname">นามสกุลบิดา</label>
<input type="text" name="father_lastname" id="father_lastname" value="<?php echo $result[father_lastname];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุลบิดา</span></span>
<p>
<span id="sprytextfield11">
<label for="mother_name">ชื่อมารดา</label>
<input type="text" name="mother_name" id="mother_name" value="<?php echo $result[mother_name];?>"/>
<span class="textfieldRequiredMsg">กรุณากรอกชื่อมารดา</span></span>
<p>
<span id="sprytextfield12">
<label for="mother_lastname">นามสกุลมารดา</label>
<input type="text" name="mother_lastname" id="mother_lastname" value="<?php echo $result[mother_lastname];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุลมารดา</span></span>
<p>
<span id="sprytextfield13">
<label for="parent_name">ชื่อผู้ปกครอง</label>
<input type="text" name="parent_name" id="parent_name" value="<?php echo $result[parent_name];?>"/>
<span class="textfieldRequiredMsg">กรุณากรอกชื่อผู้ปกครอง</span></span>
<p>
<span id="sprytextfield14">
<label for="parent_lastname">นามสกุลผู้ปกครอง</label>
<input type="text" name="parent_lastname" id="parent_lastname" value="<?php echo $result[parent_lastname];?>"/>
<span class="textfieldRequiredMsg">กรุณากรอกนามสกุลผู้ปกครอง</span></span>
<p>
<span id="sprytextfield5">
<label for="parent_mobile">มือถือผู้ปกครอง</label>
<input type="text" name="parent_mobile" id="parent_mobile" value="<?php echo $result[parent_mobile];?>" />
<span class="textfieldRequiredMsg">กรุณากรอกเบอร์มือถือ</span><span class="textfieldInvalidFormatMsg">กรุณากรอกเบอร์มือถือ์ให้ถูกต้อง</span></span>
<div class="form-actions">
<button type="submit" class="btn btn-primary">บันทึก</button>
</div>
</fieldset>
</form>
<script type="text/javascript">
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var sprytextarea1 = new Spry.Widget.ValidationTextarea("sprytextarea1");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "email", {useCharacterMasking:true});
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield5", "phone_number", {format:"phone_custom", pattern:"00-0000-0000", useCharacterMasking:true, hint:"08-3455-3456"});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield8", "phone_number", {format:"phone_custom", pattern:"00-0000-0000", useCharacterMasking:true, hint:"08-3455-3456"});
var sprytextfield9 = new Spry.Widget.ValidationTextField("sprytextfield9");
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10");
var sprytextfield11 = new Spry.Widget.ValidationTextField("sprytextfield11");
var sprytextfield12 = new Spry.Widget.ValidationTextField("sprytextfield12");
var sprytextfield13 = new Spry.Widget.ValidationTextField("sprytextfield13");
var sprytextfield14 = new Spry.Widget.ValidationTextField("sprytextfield14");
var sprytextfield15 = new Spry.Widget.ValidationTextField("sprytextfield15", "integer", {useCharacterMasking:true});
var sprytextfield16 = new Spry.Widget.ValidationTextField("sprytextfield16", "integer", {minChars:5, maxChars:5, useCharacterMasking:true});
</script>
<?php }
elseif($_GET[action]=="update"){ //อัพเดทข้อมูล
include "check_permission_teacher.php";
list($begin_day,$begin_month,$begin_year) = explode("-",$_POST[st_birthdate]);
$st_password="$begin_day$begin_month$begin_year";
$begin_year=$begin_year-543;
$st_birthdate="$begin_year-$begin_month-$begin_day"; //กำหนดวันแบบ คศ
if ((empty($_POST['district_id']))and(empty($_POST['amphur_id'])) and (empty($_POST['province_id']))) {
//echo $sql;exit;
mysql_query( $sql ) or die (mysql_error());
echo "<script>alert('แก้ไขข้อมูลเรียบร้อยแล้ว'); window.location.href ='?mname=admin&mfile=student_list&action=list';</script>";
}elseif($_GET[action]=="detail"){ //แสดงรายละเอียดข้อมูล
include"check_permission_teacher.php";
$sql="select * from student,class,district,amphur,province where student.district_id=district.district_id and student.amphur_id=amphur.amphur_id and student.province_id=province.province_id and student.class_id=class.class_id and st_id='".$_GET[st_id]."'";
$db_query=mysql_query($sql);
$result = mysql_fetch_array($db_query);
?>
<form action="" method="get"> <fieldset>
<legend>ข้อมูลนักเรียน</legend>
<label for="st_id">เลขประจำตัวนักเรียน</label>
<?php echo $result[st_id];?>
<p>
<label for="st_name">ชื่อ-นามสกุล</label>
<?php echo "$result[st_prefix]$result[st_name] $result[st_lastname]";?>
<p>
<label for="class_id">ชั้นมัธยมศึกษา</label>
<?php echo "$result[class_name]/$result[st_room]";?>
<p>
<label for="st_address">ที่อยู่</label>
<?php echo $result[st_address];?>
<p>
<label for="st_province">ตำบล</label>
<?php echo $result[DISTRICT_NAME];?>
<p>
<label for="st_address">อำเภอ</label>
<?php echo $result[AMPHUR_NAME];?>
<p>
<label for="st_province">จังหวัด</label>
<?php echo $result[PROVINCE_NAME];?>
<p>
<label for="st_province">รหัสไปรษรณีย์</label>
<?php echo $result[st_post];?>
<p>
<label for="st_mail">อีเมลล์</label>
<?php echo $result[st_mail];?>
<p>
<label for="st_phone">มือถือ</label>
<?php echo $result[st_mobile];?>
<p>
<label for="st_phone">ชื่อ-นามสกุลบิดา</label>
<?php echo "$result[father_name] $result[father_lastname]";?>
<p>
<label for="st_phone">ชื่อ-นามสกุลมารดา</label>
<?php echo "$result[mother_name] $result[mother_lastname]";?>
<p>
<label for="st_phone">ชื่อ-นามสกุลผู้ปกครอง</label>
<?php echo "$result[parent_name] $result[parent_lastname]";?>
<p>
<label for="parent_mobile">มือถือผู้ปกครอง</label>
<?php echo $result[parent_mobile];?>
</fieldset></form>
<?php
}elseif($_GET[action]=="confirmregister"){ //ฟอร์มตรวจสอบการลงทะเบียน
?>
<form action="?mname=admin&mfile=student_list&action=checkregister" method="post" enctype="multipart/form-data" name="frmstudent">
<fieldset>
<legend>ตรวจสอบการลงทะเบียน กรุณากรอกเลขประจำตัวนักเรียนที่ต้องการตรวจสอบ</legend>
<span id="sprytextfield1">
<label for="st_id">เลขประจำตัวนักเรียน</label>
<input type="text" name="st_id" id="st_id" />
<span class="textfieldRequiredMsg">กรุณากรอกเลขประจำตัวนักเรียน</span><span class="textfieldInvalidFormatMsg">กรอกเฉพาะตัวเลข</span><span class="textfieldMinCharsMsg">เลขประจำตัวนักเรียน 5 หลัก </span><span class="textfieldMaxCharsMsg">เลขประจำตัวนักเรียน 5 หลัก </span></span>
<p>
<span id="sprytextfield18">
<label for="showcaptcha"> </label>
<?php dsp_crypt(0,1); ?>
<span class="textfieldRequiredMsg">กรุณากรอกตัวอักษรที่ท่านเห็น</span></span>
<p>
<span id="sprytextfield17">
<label for="captcha">กรอกตัวอักษร </label>
<input type="text" name="captcha" id="captcha" />ตัวพิมพ์ใหญ่ทั้งหมด ไม่ต้องเว้นวรรค
<span class="textfieldRequiredMsg">กรุณากรอกตัวอักษรที่ท่านเห็นด้านล่าง</span></span>
<div class="form-actions">
<button type="submit" class="btn btn-primary">ตรวจสอบ</button>
</div>
</fieldset>
</form>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "integer", {minChars:5, maxChars:5, useCharacterMasking:true});
var sprytextfield17 = new Spry.Widget.ValidationTextField("sprytextfield17");
</script>
<?php
}elseif($_GET[action]=="checkregister"){ //ตรวจสอบการลงทะเบียน
// ถ้าป้อน captcha มาถูกต้อง
if (!chk_crypt($_POST['captcha'])){
echo "<script>alert('ท่านป้อนอักษรที่เห็นไม่ถูกต้อง'); window.history.go(-1);</script>";
exit;
}
$sql = "SELECT st_id FROM student where st_id='".$_POST[st_id]."' ";
//echo $sql;exit;
$dbquery = mysql_query( $sql ) or die (mysql_error());
$num = mysql_num_rows ( $dbquery );
if ( $num >0 )
{
echo "<script>alert('คุณได้ทำการลงทะเบียนแล้วสามารถเข้าใช้งานได้เลยครับ'); window.location.href ='?mname=admin&mfile=login_form';</script>";
}else{
echo "<script>alert(' นักเรียนรหัส $_POST[st_id] ยังไม่มีการลงทะเบียน กรุณาลงทะเบียนก่อนใช้งาน'); window.location.href ='?mname=admin&mfile=student_list&action=form';</script>";
exit;
}
}?>
Date :
2020-03-20 09:26:16
By :
ajsudkedt
ประวัติการแก้ไข 2020-03-20 09:30:47
Date :
2020-03-20 09:27:07
By :
ajsudkedt
code นี้จากไฟล์ชื่อ student_list ครับ
Date :
2020-03-20 09:28:17
By :
ajsudkedt
การอัพเดทรหัสผ่านด้วยตนเอง ก็ตอนเข้าหน้า login และกรอก username login ปกติ ให้ตรวจว่าช่องรหัสผ่านมันว่างเปล่าหรือไม่
ถ้าว่างเปล่าก็ให้ redirect ไปหน้าพิเศษ คือหน้านั้นกรอกแค่อีเมลให้ตรงแล้ว submit แล้วสร้างรหัสผ่านส่งไปให้นร.ทางอีเมล
แล้ว redirect กลับมาหน้า login เดิม
นร.ก็ให้เขาเปิดอีเมลเช็คว่าได้รหัสผ่านใหม่ที่สุ่มสร้างขึ้นมาว่าอะไร ก็ก๊อปอันนั้นใช้ login
พอ login สำเร็จก็มีเมนูให้เขาเข้าไปเปลี่ยนรหัสผ่านโดยตั้งเอาเองได้ หรือจะทนใช้อันที่สุ่มสร้างขึ้นมาอันนั้นต่อไปก็ได้.
หลักการลืมรหัสผ่านที่เห็นใช้งานทั่วไป
หน้า login มี link ลืมรหัสผ่าน
เข้าหน้าลืมรหัสผ่าน กรอก identity สักอย่างเช่น username หรือ email
ตรวจตรงแล้วก็สุ่มสร้างรหัสผ่านใหม่ส่งไปทางอีเมล
ผู้ใช้ได้รับอีเมลแล้วเอารหัสผ่านใหม่มา login ขั้นตอนเหมือนข้างบน.
เพิ่มเติมความปลอดภัย คืออาจใช้เวลาให้ login ด้วยรหัสผ่านใหม่ภายในกี่นาทีอะไรงี้ ถ้าไม่ทันก็ลบและก็กลับไปใช้รหัสผ่านเก่า อาจะต้องเพิ่ม field temp password แล้วแต่จะออกแบบ.
ประวัติการแก้ไข 2020-03-20 09:56:23
Date :
2020-03-20 09:49:54
By :
mr.v
หากจะลบคำสั่งใน code ให้ไม่ต้องใช้การเข้ารหัส MD5 ในคอลัมน์ Password ให้เปลี่ยนไปเป็นรหัสธรรมดาที่ admin นำเข้าไปวางในคอลัมน์ Password ใน ตาราง mySQLโดยตรงเลย จะได้ไหมครับ
Date :
2020-03-20 13:00:12
By :
ajsudkedt
Code (PHP)
<?php
if (eregi("login_form.php",(basename($_SERVER['PHP_SELF'])))) {
echo"<META HTTP-EQUIV='Refresh' CONTENT='0;URL=../../index.php'>";
die();
}?>
<form action="?mname=admin&mfile=check_login" method="post" enctype="multipart/form-data" name="frmform">
<fieldset>
<legend>เข้าสู่ระบบ</legend>
<span id="spryradio1">
<label for="user_permission"></label>
<input type="radio" name="permission" value="1" id="permission_0" />
นักเรียน
<input type="radio" name="permission" value="2" id="permission_1" />
บุคลากร
<input type="radio" name="permission" value="3" id="permission_2" />
ผู้ดูแลระบบ
<span class="radioRequiredMsg">กรุณาเลือกสิทธิ์การใช้งาน</span></span>
<p>
<span id="sprytextfield1">
<label for="user_name">ชื่อผู้ใช้</label>
<input type="text" name="user_name" id="user_name" />
<span class="textfieldRequiredMsg">กรุณากรอกชื่อผู้ใช้</span></span>
<p>
<span id="sprytextfield2">
<label for="user_password">รหัสผ่าน</label>
<input type="password" name="user_password" id="user_password" />
<span class="textfieldRequiredMsg">กรุณากรอกรหัสผ่าน</span></span>
<p>
<span id="sprytextfield4">
<label for="showcaptcha"> </label>
<?php dsp_crypt(0,1); ?>
<span class="textfieldRequiredMsg">กรุณากรอกตัวอักษรที่ท่านเห็น</span></span>
<p>
<span id="sprytextfield3">
<label for="captcha">กรอกตัวอักษร </label>
<input type="text" name="captcha" id="captcha" />
<span class="textfieldRequiredMsg">กรุณากรอกตัวอักษรที่ท่านเห็น</span></span>
<div class="form-actions">
<button type="submit" class="btn btn-primary">เข้าสู่ระบบ</button>
</div>
</fieldset>
</form>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var spryradio1 = new Spry.Widget.ValidationRadio("spryradio1");
</script>
Date :
2020-03-20 13:57:41
By :
ajsudkedt
code นี้จากไฟล์ชื่อ login_form ครับ
Date :
2020-03-20 13:58:34
By :
ajsudkedt
เอาโค๊ดฝั่ง server เพื่อใช้ login มาดูด้วยครับ
Date :
2020-03-20 15:06:51
By :
Chaidhanan
โค๊ดฝั่ง server หมายถึง code ตัวไหนครับ
Date :
2020-03-20 15:14:50
By :
ajsudkedt
Code (PHP)
<?php
if (eregi("configuration.php",(basename($_SERVER['PHP_SELF'])))) {
echo"<META HTTP-EQUIV='Refresh' CONTENT='0;URL=../index.php'>";
die();
}
//MIS Config
//MySQL Connect
define("MIS_HOSTNAME","localhost");
define("MIS_DBNAME","behavior");
define("MIS_DBUSERNAME","root");
define("MIS_DBPASSWORD","88888888");
//Ganeral Config
define("MIS_NAME","MIS School");
//24-7-56 create vertion 2
define("MIS_VERSION","MIS SCHOOL VERSION 2.0");
define("MIS_TITLE","โรงเรียนxxxx");
define("MIS_DESCRIPTION","infomation system school");
define("MIS_URL","http:127.0.0.1/xxxx/") ;
define("MIS_PATH","/var/www/xxxx/") ;
define("MIS_ROOTFOLDER","xxxx") ;
define("MIS_FOOTER1","Copyright © 2020 ระบบบันทึกคะแนนพฤติกรรมโรงเรียนxxxx") ;
define("MIS_FOOTER2","xxxx") ;
//ผู้พัฒนา หากนำไปใช้ต่อกรุณาให้เครดิตผู้พัฒนาด้วยนะครับ ขอบคุณครับ
define("MIS_DEVELOPER","xxxxx");
define("MIS_DEVELOPER_EMAIL","xxxx") ;
define("MIS_DEVELOPER_TEL","xxxx") ;
//config sms สำหรับส่ง sms หาผู้ปกครอง
define("SMS_SERVER","http://ip");
define("SMS_USER","xxxxx");
define("SMS_PASSWORD","xxxxx");
Date :
2020-03-20 15:16:07
By :
ajsudkedt
configulation ตัวนี้ไหมครับ ไม่แน่ใจ
Date :
2020-03-20 15:16:57
By :
ajsudkedt
โค๊ดที่พอคุณ กด submit แล้ว link มันวิ่งไปที่โปรแกรมตัวนี้ เพื่อตรวจสอบข้อมูล การ login ครับ
Date :
2020-03-20 15:29:48
By :
Chaidhanan
น่าจะเป็น code จาก ไฟล์ชื่อ student_list
code แรกยาว ๆ ที่ผม code ไหมครับ
เป็น code ที่ใช้บันทึกข้อมูลนักเรียนครับ
ประวัติการแก้ไข 2020-03-20 16:24:40
Date :
2020-03-20 16:22:52
By :
ajsudkedt
หลังจากกรอกข้อมูลนักเรียนตามเมนูในโปรแกรม แล้วกดปุ่ม บันทึก โปรแกรมจะแจ้งแบบนี้ ตามภาพครับ
Date :
2020-03-20 16:33:14
By :
ajsudkedt
ผมไม่ต้องการการบันทึก
ผมต้องการ เวลานักเรียน login เข้าระบบ
มันเอา user_name และ password ไปตรวจสอบกับ database ยังไงจะได้ช่วยแก้ตรงนั้น
และจะได้บอก วิธีแก้ไข field ที่เข้ารหัส password ให้ คือผมช่วยแนะนำให้ได้ บอกตรงไหนผิดผลาด ควรจะแก้ยังไง
แต่ผมไม่แก้โค๊ดให้ เพราะแก้ให้คนถามก็ไม่รู้ว่าขั้นตอนมันเป็นยังไง
ถ้าแก้แบบนั้น ผมคิดเงิน เพราะผู้รับไม่ได้ประโยชน์ เดี๋ยวก็กลับมาถามอีก เหนื่อยฟรี
และถ้าคนถามไม่รู้ว่าโปรแกรมมันอยู่ขั้นตอนไหน ก็แสดงว่าก๊อปปี้งานเขามาแปะโดยที่ไม่รู้ว่าขั้นตอนมันคืออะไร
ไม่มี อัลกอลิธึม ไม่มี flow control ในการทำงาน
ถ้าไม่อยากให้ โรงเรียนเสียเงิน ก็ต้องศึกาาพื้นฐานทำความเข้าใจกับโปรแกรมให้มากๆ
ต้องรู้ขั้นตอนการทำงาน
และเขียนเข้าไปได้ยังไง 1000 กว่าบันทัด ควรจะแยกไฟล์ ออกเป็น ส่วน แล้วใช้การ include
และวิธีการ include ก็ต้องศึกษาให้ดี กำหนดเป็น ตัวแปร ในการ include
เวลาโหลดโปรแกรม จะได้ไม่ต้องโหลดมาทั้งหมด เสียเวลา เสียหน่วยความจำ
ใช้เฉพาะส่วน งานเล็กๆ น้อย แต่โหลดมาทั้งระบบ มันขี่ช้างจับตั๊กแตน แค่ login ใช้ตั้ง 1000 บันทัดมันไม่ใช่แล้วครับ
Date :
2020-03-20 17:40:19
By :
Chaidhanan
<form action="?mname=admin&mfile=check_login" method="post" ลิงค์นี้มันอยู่ที่ไหน
Date :
2020-03-20 17:44:14
By :
Chaidhanan
Code (PHP)
<?php
if (eregi("check_login.php",(basename($_SERVER['PHP_SELF'])))) {
echo"<META HTTP-EQUIV='Refresh' CONTENT='0;URL=../../index.php'>";
die();
}
if (isset($_POST[user_name]) and isset($_POST[user_password]))
{
// ถ้าป้อน captcha มาถูกต้อง
if (!chk_crypt($_POST['captcha'])){
echo "<script>alert('ท่านป้อนอักษรที่เห็นไม่ถูกต้อง'); window.history.go(-1);</script>";
exit;
}
if($_POST[permission]==1){
$sqlusername =sprintf( "SELECT * FROM student where st_id='%s' ",mysql_real_escape_string($_POST[user_name]));
//echo $sql;exit;
$dbqueryusername = mysql_query($sqlusername) or die (mysql_error());
$num_rowsusername = mysql_num_rows ($dbqueryusername );
if ( $num_rowsusername ==0 )
{ echo "<script>alert('ไม่มีชื่อผู้ใช้นี้'); window.history.go(-1);</script>";
}else{
$sql =sprintf( "SELECT * FROM student where st_id='%s' and st_password='%s'",mysql_real_escape_string($_POST[user_name]),mysql_real_escape_string(md5($_POST[user_password])) );
//echo $sql;exit;
$dbquery = mysql_query($sql) or die (mysql_error());
$num_rows = mysql_num_rows ($dbquery );
if ( $num_rows >0 )
{
$result=mysql_fetch_array($dbquery);
$_SESSION["userid_check"]=$result[st_id];
$_SESSION["username_check"]="$result[st_prefix]$result[st_name] $result[st_lastname]";
$_SESSION["userstatus_check"]="student";
//ใช้สำหรับการจองชุมนุม
$_SESSION["userclass_check"]=$result[class_id];//มไหน
if(($result[class_id]>=1)and($result[class_id]<=3)){ //ระดับไหน
$_SESSION["userlevel_check"]='lower';
}elseif(($result[class_id]>=4)and($result[class_id]<=6)){
$_SESSION["userlevel_check"]='high';
}
if($result[st_sex]==1){ //เพศ
$_SESSION["usersex_check"]=1;
}elseif($result[st_sex]==2){
$_SESSION["usersex_check"]=2;
}
//จบการจองชุมนุม
echo" <meta http-equiv=\"refresh\" content=\"0;url=?mname=admin&mfile=main\">";
} else {
echo "<script>alert('รหัสผ่านไม่ถูกต้อง'); window.history.go(-1);</script>";
}
}//จบ
}elseif($_POST[permission]==2){
$sqlusername =sprintf( "SELECT * FROM person where per_user='%s' ",mysql_real_escape_string($_POST[user_name]));
//echo $sql;exit;
$dbqueryusername = mysql_query($sqlusername) or die (mysql_error());
$num_rowsusername = mysql_num_rows ($dbqueryusername );
if ( $num_rowsusername ==0 )
{ echo "<script>alert('ไม่มีชื่อผู้ใช้นี้'); window.history.go(-1);</script>";
}else{
$sql =sprintf( "SELECT * FROM person where per_user='%s' and per_password='%s'",mysql_real_escape_string($_POST[user_name]),mysql_real_escape_string(md5($_POST[user_password])) );
//echo $sql;exit;
$dbquery = mysql_query($sql) or die (mysql_error());
$num_rows = mysql_num_rows ($dbquery );
if ( $num_rows >0 )
{
$result=mysql_fetch_array($dbquery);
$_SESSION["userid_check"]=$result[per_card];
$_SESSION["username_check"]="$result[per_prefix]$result[per_name] $result[per_lastname]";
if($result[per_status]==1){$_SESSION["userstatus_check"]="teacher";}
elseif($result[per_status]==2){$_SESSION["userstatus_check"]="manager";}
echo" <meta http-equiv=\"refresh\" content=\"0;url=?mname=admin&mfile=main\">";
} else {
echo "<script>alert('รหัสผ่านไม่ถูกต้อง'); window.history.go(-1);</script>";
}
}
}elseif($_POST[permission]==3){
$sqlusername =sprintf( "SELECT * FROM admin where admin_user='%s' ",mysql_real_escape_string($_POST[user_name]));
//echo $sql;exit;
$dbqueryusername = mysql_query($sqlusername) or die (mysql_error());
$num_rowsusername = mysql_num_rows ($dbqueryusername );
if ( $num_rowsusername ==0 )
{ echo "<script>alert('ไม่มีชื่อผู้ใช้นี้'); window.history.go(-1);</script>";
}else{
$sql =sprintf( "SELECT * FROM admin where admin_user='%s' and admin_password='%s'",mysql_real_escape_string($_POST[user_name]),mysql_real_escape_string(md5($_POST[user_password])) );
//echo $sql;exit;
$dbquery = mysql_query($sql) or die (mysql_error());
$num_rows = mysql_num_rows ($dbquery );
if ( $num_rows >0 )
{
$result=mysql_fetch_array($dbquery);
$_SESSION["userid_check"]=$result[admin_user];
$_SESSION["username_check"]=$result[admin_name];
$_SESSION["userstatus_check"]="admin";
echo" <meta http-equiv=\"refresh\" content=\"0;url=?mname=admin&mfile=main\">";
} else {
echo "<script>alert('รหัสผ่านไม่ถูกต้อง'); window.history.go(-1);</script>";
}
}
}
}else{
echo "<script>alert('กรุณาล็อกอินก่อน');window.location.href ='index.php'; </script>";
}
?>
Date :
2020-03-20 19:10:42
By :
ajsudkedt
อยู่ไฟล์นี้ไหมครับ
ชื่อไฟล์ว่า check_login
Date :
2020-03-20 19:11:18
By :
ajsudkedt
ใช้ php version ไหนครับเนี่ย ทำไมยังใช้ mysql รุ่นเก่าอยู่อีก php รุ่นใหม่ เขาไม่ใช้กันแล้ว
เครื่องไม้เครื่องไม้เครื่องมือในการป้องกันการ hack ก็มีน้อย
Code (PHP)
<?php
if($_POST[permission]==1){
// จะคิวรี่อะไรหลายหน ครั้งเดียวก็พอแล้ว
//$sqlusername =sprintf( "SELECT * FROM student where st_id='%s' ",mysql_real_escape_string($_POST[user_name]));
//echo $sql;exit;
//$dbqueryusername = mysql_query($sqlusername) or die (mysql_error());
//$num_rowsusername = mysql_num_rows ($dbqueryusername );
//if ( $num_rowsusername ==0 )
$sql =sprintf( "SELECT * FROM student where st_id='%s' and st_password='%s'",
mysql_real_escape_string($_POST[user_name]),
md5($_POST[user_password]) // md5 มัน escape อยู่แล้ว ไม่ต้องเพิ่ม escape อีก
);
//echo $sql;exit;
$dbquery = mysql_query($sql) or die (mysql_error());
$num_rows = mysql_num_rows ($dbquery );
if ( $num_rows >0 ){
$result=mysql_fetch_array($dbquery);
$_SESSION["userid_check"]=$result[st_id];
$_SESSION["username_check"]="$result[st_prefix]$result[st_name] $result[st_lastname]";
$_SESSION["userstatus_check"]="student";
//ใช้สำหรับการจองชุมนุม
$_SESSION["userclass_check"]=$result[class_id];//มไหน
if(($result[class_id]>=1)and($result[class_id]<=3)){ //ระดับไหน
$_SESSION["userlevel_check"]='lower';
}elseif(($result[class_id]>=4)and($result[class_id]<=6)){
$_SESSION["userlevel_check"]='high';
}
if($result[st_sex]==1){ //เพศ
$_SESSION["usersex_check"]=1;
}elseif($result[st_sex]==2){
$_SESSION["usersex_check"]=2;
}
//จบการจองชุมนุม
echo" <meta http-equiv=\"refresh\" content=\"0;url=?mname=admin&mfile=main\">";
// แล้วทำไม redirect mname เป็น admin ไม่ควรจะมาเกี่ยวกับ user ธรรมดา
} else {
echo "<script>alert('รหัสผ่านไม่ถูกต้อง'); window.history.go(-1);</script>";
}
}//จบ
flow control ไม่มีปัญหาอะไร
แต่มีปัญหาเรือ่ง การใช้ไวยกรณ์ รุ่นเก่า ใช้ mysql รุ่นเก่า
ตัวแปร กับ constant ตีกันมั่วไปหมด ถ้าย้ายขึ้น php version ใหม่ แก้กันอีกบาน
$_SESSION["usersex_check "]=2; ถูกต้อง
$_POST[user_name ] เตือน ไม่มีควอทครอบ
และสิ่งที่ขอไปแต่ต้น ตัวอย่างข้อมูล ซัก 2-3 record พร้อมทั้ง structure ของตารางด้วยครับ
Date :
2020-03-20 20:29:09
By :
Chaidhanan
หมายถึงไฟล์ฐานข้อมูล sql ใช่ไหมครับ
ผมหายที่แนบไฟล์ใน forum นี้ไม่เจอ
รบกวน mail หาผมได้ไหม
ผมจะส่งให้ทาง mail ครับ
[email protected]
ขอบคุณครับ
Date :
2020-03-21 09:29:04
By :
ajsudkedt
capture หน้าจอ และ ครอปเอา บางส่วนมาก็ได้ครับ ให้เห็นโครงสร้างของ ตาราง
และ ตัวอย่าง record ซัก 2-3 record ก็พอ
Date :
2020-03-21 10:15:50
By :
Chaidhanan
Date :
2020-03-21 11:27:49
By :
ajsudkedt
บันทึกข้อมูลในเมนูโปรแกรม ไหนครับ เอา ไฟล์ php มาดูหน่อยครับ เพื่อจะ สร้าง password ได้ง่ายๆ
ประวัติการแก้ไข 2020-03-21 13:15:12
Date :
2020-03-21 13:14:29
By :
Chaidhanan
หมายถึงไฟล์ sql ใช่ไหมครับ ให้ผมส่งให้ทางไหนดีครับ
ประวัติการแก้ไข 2020-03-21 14:05:12
Date :
2020-03-21 14:02:49
By :
ajsudkedt
รูปสุดท่้าย ความเห็น 42 สีส้ม มันคือโปรแกรมอะไรครับ ที่มันสร้าง md5 password
Date :
2020-03-21 14:18:25
By :
Chaidhanan
รหัสตรงกรอบแดงในภาพ ความเห็น 42 จะถูกสร้างขึ้น
ในกรณีที่เราเข้ากรอกข้อมูลนักเรียนตามเมนูในโปรแกรม แล้วคลิกปุ่ม บันทึก ครับ
Date :
2020-03-21 16:33:08
By :
ajsudkedt
Date :
2020-03-21 16:36:34
By :
ajsudkedt
จาก โค๊ดที่ให้มา จากหน้า form action ผมไม่เห็นส่วนที่ สร้าง statement insert มันอยู่ไหนครับ
Code (PHP)
}elseif($_GET[action]=="insert"){ //เพิ่มข้อมูล
// ถ้าป้อน captcha มาถูกต้อง
if (!chk_crypt($_POST['captcha'])){
echo "<script>alert('ท่านป้อนอักษรที่เห็นไม่ถูกต้อง'); window.history.go(-1);</script>";
exit;
}
$sql = "SELECT st_id FROM student where st_id='".$_POST[st_id]."' ";
//echo $sql;exit;
$result = mysql_query( $sql ) or die (mysql_error());
$num = mysql_num_rows ( $result );
if ( $num != 0 ){
echo "<script>alert('เลขประจำตัวนักเรียนนี้มีอยู่แล้ว'); window.history.go(-1);</script>";
exit;
}
if (empty($_POST['district_id'])){
echo "<script>alert('ไม่ได้ระบุตำบล'); window.history.go(-1);</script>";
exit;
}
if (empty($_POST['amphur_id'])){
echo "<script>alert('ไม่ได้ระบุอำเภอ'); window.history.go(-1);</script>";
exit;
}
if (empty($_POST['province_id'])){
echo "<script>alert('ไม่ได้ระบุจังหวัด'); window.history.go(-1);</script>";
exit;
}
list($begin_day,$begin_month,$begin_year) = explode("-",$_POST[st_birthdate]);
$st_password="$begin_day$begin_month$begin_year";
$begin_year=$begin_year-543;
$st_birthdate="$begin_year-$begin_month-$begin_day"; //กำหนดวันแบบ คศ
//-------------------------------
// มีคำสั่งคิวรี่ แล้ว ชุดที่สร้าง sql statement มันอยู่ที่ไหน
//-------------------------------
mysql_query( $sql ) or die (mysql_error());
echo "<script>alert('บันทึกข้อมูลลงทะเบียนเรียบร้อยแล้ว ขอบคุณนักเรียนทุกคนที่ให้ความร่วมมือ'); window.location.href ='index.php';</script>";
}
และจาก ฟอร์ม อันไหนคือ พาสเวิร์ดที่ต้องส่งให้เด็ก
ประวัติการแก้ไข 2020-03-21 17:04:55 2020-03-21 17:06:31
Date :
2020-03-21 17:03:02
By :
Chaidhanan
ผมไม่ทราบเลยครับ
มันมีหลายไฟล์
เราพอจะตั้งข้อสังเกตได้ไหมครับ
น่าจะเป็นไฟล์ประมาณว่าชื่อว่าอะไรครับ
Date :
2020-03-21 20:37:58
By :
ajsudkedt
งั้นก็ขอโทษนะครับ ถ้าตามบทเรียนไม่ได้ ก็คงต้องไปเริ่มเรียน กขค ปู้พื้นฐานมาก่อน
เริ่มจากนี่ก่อนเลย
https://www.thaicreate.com/php.html
คือมันคุยกันคนละภาษากว่าจะไปได้มันเสียเวลาอะครับ ก็บอกตรงๆ นะครับ ก็คงต้อรอท่านอื่นที่ว่างพอที่จะช่วยเหลือครับ
ปล. ถ้าอยากจะเรียนรู้จริงๆ ต้องขยันมากว่านี้ และต้องหาบทเรียนที่ทันสมัยกว่า โปรแกรมที่นำมาแก้ไขด้วยนะครับ
อยากจะบอกว่าเด็กเดียวนี้เขาเก่ง นะครับ โปรแกรมแบบนี้ เขาเจาะกระจาย ใช้ไปแล้วเดี๋ยวก็โดนเด็กแฮ็ค จะหาว่าไม่เตือนนะครับ
เริ่มจากโค๊ดง่ายๆ ตรงนี้ ไม่ผ่าน sql injection ใช้ไปก็รูบะเร่อเท่อ
$sql = "SELECT st_id FROM student where st_id='".$_POST[st_id]."' ";
Date :
2020-03-21 21:04:51
By :
Chaidhanan
อือหือ....ใช้โค้ดโคตรโบราณมาก คือเขายกเลิกใช้หมดแล้วอะนะ mysql_xxx function เนี่ย ถ้านี่คืองานเขียนใหม่ก็ควรเขียนใหม่จากฟังก์ชั่นที่เป็นปัจจุบันเลยดีกว่า ยกเลิกงานเขียนใหม่นี้แล้วเขียนใหม่จริงๆ งงมั้ย?
แล้ววิธีเขียนก็ด้วย คือมีปัญหาแน่ๆ array key หรือ array index ก็ไม่ใส่ ' " เรียกใช้อย่างกับ constant อย่างงั้น ไปรันบนโฮสท์จริงก็อาจเดี้ยงได้อีก โดยเฉพาะโฮสท์ที่ใช้ php รุ่นใหม่ๆ แต่ถ้าทู่ซี้ใช้ host php รุ่นเก่าๆก็จะโดนแฮ็คได้อย่างว่าอีกนั่นแหละ. คือเขียนใหม่เลยเหอะ เห็นว่าจะเอาไปใช้จริงนี่? ใช้งานกับนักเรียน ดังนั้นเขียนใหม่เหอะ ถ้านี่คืองานเขียนเพื่อศึกษาเฉยๆก็ยังพอหลับหูหลับตาให้มันรันผ่านๆไปได้ (แบบไม่ค่อยมีคุณภาพ).
ไหนๆก็ไหนๆแล้ว ผมถือโอกาสเข้ามาแจกของเลยแล้วกัน. เนื่องจากหลายเดือนก่อน ผมได้เขียน framework ใช้เอง และเขียนโมดูลจัดการผู้ใช้ ทุกขั้นตอนข้างบนที่ผมบอกไป เช่นการตั้งค่ารหัสผ่านใหม่ด้วยตัวเอง อะไรพวกนี้ มีพร้อมหมด แค่ติดตั้งให้สำเร็จแล้วเริ่มเขียนโมดูลที่จะใช้งานต่อไป.
framework: https://github.com/RundizBones/framework
module สลับภาษา: https://github.com/RundizBones/ModuleLanguages
module จัดการผู้ใช้และสิทธิ์การใช้งาน: https://github.com/RundizBones/ModuleAdmin
ทดลองและพยายามติดตั้งเอาเอง และรับความเสี่ยงต่างๆเอาเองนะครับ ผมยังไม่เผยแพร่เป็นทางการ (pre-release) ยังปรับเปลี่ยนอะไรๆแบบสุดขั้วได้อยู่ ดังนั้นที่ว่าเสี่ยงคือบางอย่างอาจจะมีใช้อยู่แต่จู่ๆรุ่นใหม่มาอาจหายวับไปซะงั้น อะไรแบบนี้.
Date :
2020-03-22 01:24:45
By :
mr.v
#Chaidhanan
ครับผม ขอบพระคุณท่านมากครับ
ผมจะพยายามศึกษา เรียนรู้ต่อไปครับ
Date :
2020-03-22 05:39:46
By :
ajsudkedt
# mr.v
ขอบพระคุณสำหรับคำแนะนำครับ
Date :
2020-03-22 05:45:31
By :
ajsudkedt
Load balance : Server 05