สอบถามเกี่ยวกับการเข้ารหัสเเบบ md5 เเละการตรวจสอบความยาวรูปเเบบตัวอักษร Password สอนสมัครสมาชิกหนอยครับ
คือผมทำระบบ Register โดยมีการเข้ารหัสแบบ md5 ซึ่งจะมีปัญหาตรงที่เวลามี user เข้ามาสมัคร ก็จะต้องกรอก form ลงไป เเต่ที่ติดปัญหาก็คือ ตอนที่มีการกรอก form password ผมก็ได้มีการกำหนดรูปของ password ด้วครับว่าต้องมีความยาวเท่าไหน รูปแบบตัวอักษรเป็นยังไง ซึ่งจะใช้ function checkPassword ในการตรวจสอบ ซึ่งมีขึ้น error ตรง หน้า Check_Register ตรง checkPassword ครับ รบกวนเเนะนำด้วยครับ
ส่วนนี้คือ code Check_Register
Code (PHP)
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$password = md5($_POST['password']);
$email = $_POST['email'];
$number = $_POST['number'];
$address = $_POST['address'];
$zip_code = $_POST['zip_code'];
//ตรวจสอบว่ามีชื่อ Email นี้อยู่ในระบบแล้วหรือไม่
$sql = "SELECT * FROM register WHERE email = '$email'";
$result = mysqli_query($con,$sql);
$num_row = mysqli_num_rows($result);
if ($num_row == 1) {
echo "<script>alert('Email มีอยู่แล้ว กรุณาเลือกชื่ออื่น');window.location='Register.php';</script>";
} else if (checkPassword($password) == false) {
echo "<script>alert('!ผิดพลาด รหัสผ่านต้องมีทั้งอักษรและตัวเลข และยาวอย่างน้อย 6 ตัวอักษร');window.location='Register.php';</script>";
//ตรวจสอบว่าอีเมลถูกต้องหรือไม่
} else if (checkEmail($email) == false) {
echo "<script>alert('Email มีอยู่แล้ว กรุณาเลือกชื่ออื่น');window.location='Register.php';</script>";
} else if (checkNumber($number) == false && $number != '') {
echo "<script>alert('!ผิดพลาด คุณกรอกเบอร์โทรศัพท์ไม่ถูกต้อง');window.location='Register.php';</script>";
//ตรวจสอบว่ารหัสไปรษณีย์ถูกต้องหรือไม่
} else if (checkZipcode($zip_code) == false && $zip_code != '') {
echo "<script>alert('!ผิดพลาด คุณกรอกรหัสไปรษณีย์ไม่ถูกต้อง');window.location='Register.php';</script>";
} else {
$sql = "INSERT INTO register (name, surname, password, email, number,address, zip_code) "
. "VALUES ('$name', '$surname', '$password', '$email','$number', '$address', '$zip_code')";
$result1 = mysqli_query($con,$sql);
if ($result1) {
echo "<script>alert('บันทึกข้อมูลเรียบร้อยแล้ว');window.location='Login.php';</script>";
} else {
echo "<script>alert('บันทึกข้อมูลไม่สำเร็จ');window.location='Register.php';</script>";
}
ส่วนนี้คือ checkPassword
Code (PHP)
function checkPassword($password)
{
if(strlen($password) < 6 || !preg_match('/^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9]+$/i', $password)) {
return false;
} else {
return true;
}
}
error ประมาณนี้ครับ
Fatal error: Uncaught Error: Call to undefined function checkPassword() in D:\PHP\htdocs\Project\Check_Register.php:16 Stack trace: #0 {main} thrown in D:\PHP\htdocs\Project\Check_Register.php on line 16Tag : PHP, HTML5, JavaScript, Ajax, jQuery
ประวัติการแก้ไข 2018-11-12 12:54:35
Date :
2018-11-12 12:53:43
By :
staff39
View :
1028
Reply :
10
คหสต.นะครับรอท่านอื่นมาตอบเพิ่มเติม
1.การเช็คข้อมูลควรเช็คก่อนกดปุ่ม submit บันทึกข้อมูลครับ
2.ข้อมูลที่ให้นั้นเหมือนกับว่ากด บันทึกข้อมูลมาเรียบร้อยแล้ว
แล้วค่อยเอามาเช็คซึ่งถ้าจะทำแบบนั้น ให้มันเช็คแค่ตัวเดียวก็พอครับ คือ email ห้ามให้ email ซ้ำกัน
ส่วน password รหัสไปรษณี เบอร์โทร ควรเช็คอีกหน้าหน้าแบบฟอร์มนั้นละครับครับ
3.การเข้ารหัส md5 ลองเปลี่ยนให้มันเป็นแบบนี้ดูครับ
Code (PHP)
$mm1= $_POST['password'];
$mm2 = md5($mm1);
Date :
2018-11-12 13:43:27
By :
nobetaking
ของผมทำจะเป็น html5 ลองเอาไปเล่นดูครับ
Code (PHP)
<meta charset="UTF-8">
<form action="page.php" metthod="post">
<table width="80%">
<tr>
<td width="20%">
<h4>ชื่อ</h4>
</td>
<td width="80%">
<input class="form-control" placeholder="กรุณากรอกนามสกุล" name="fname" required/>
</td>
</tr>
<tr>
<td width="20%">
<h4>เบอร์โทร</h4>
</td>
<td width="80%">
<input class="form-control" placeholder="กรุณากรอกเบอร์โทร ภายใน หรือ มือถือ" name="tol" pattern="[0-9]{10}" maxlength="10" title="กรุณากรอกตัวเลข" required/>
</td>
</tr>
<tr>
<td width="20%">
<h4>อีเมล</h4>
</td>
<td width="80%">
<input class="form-control" placeholder="กรุณากรอก E-mail" name="mail" type="email" pattern="[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*" title="กรุณาตรวจสอบรูปแบบEmail" required/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="save">
</td>
</tr>
</table>
</form>
Date :
2018-11-13 10:12:01
By :
nobetaking
function checkpassword ต้องเช็คก่อนที่จะ convert เป็น md5
convert ไปแล้วจะ เอาอะไรมาเช็คล่ะครับ
Date :
2018-11-13 10:35:06
By :
Chaidhanan
$password = md5($_POST['password']);
เอา md5 ออกซะก็จบแล้ว ค่อยเอาใส่ หลังจากตรวจสอบ
ส่วนการคิวรี่ ลองดูตัวอย่าง ลิงค์นี้ ผมเขียนไว้เป็นตัวอย่าง ใช้เครื่องมือให้ถูกต้อง
จะได้ช่วยป้องกัน sql injection ได้ด้วย พื้นฐานที่สำคัญในการไม่ให้เวปถูก hack
https://www.thaicreate.com/php/forum/132534.html#00480469
ประวัติการแก้ไข 2018-11-13 14:10:14
Date :
2018-11-13 14:05:50
By :
Chaidhanan
ว่าด้วยเรื่อง password แนะนำให้อ่านเพิ่มเติม .
Date :
2018-11-14 10:25:07
By :
mr.v
Load balance : Server 00