|
|
|
รบกวนช่วย ตรวจสอบ Code ชุดนี้หน่อยครับว่ามันต่างกันยังไง รบกวนพี่ๆๆ ด้วยครับ |
|
|
|
|
|
|
|
ชุดที่1
session_start();
$date = date("Y-m-d / H:i:s");
$insert = "INSERT INTO member(username,password,email,date) VALUES ('$username','$password','$email','$date');";
$selectus = "SELECT username FROM member WHERE username = '$username';";
$selectem = "SELECT email FROM member WHERE email = '$email';";
$selectall = "SELECT username,email FROM member WHERE username = '$username' and email ='$email';";
if($_POST){//1
$username = $_POST['username'];
$password = $_POST['password'];
$repassword = $_POST['repassword'];
$email = $_POST['email'];
$code = $_POST['code'];
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
if(!eregi("[a-z0-9]{5,10}",$username)){
$err = "ชื่อสมาชิกต้องมากว่า 5 ตัวอักษร";
}else if(!eregi("[a-z0-9]{5,10}",$password)){
$err = "รหัสผ่านต้องมากกว่า 5 ตัวอักษร";
}else if($password != $repassword){
$err = "รหัสผ่านไม่ตรงกัน";
}else if(empty($code)){
$err = "รหัสลับยังไม่ได้ระบุ";
}else if($_POST['code'] != $_SESSION['codea']){
$err = "รหัสลับไม่ตรงกัน";
}else{//2
include("include/connect.php");
$qryus = mysql_query($selectus);
$qryem = mysql_query($selectem);
$qryall = mysql_query($selectall);
if(mysql_num_rows($qryall) >= 1){
$err = "ชื่อและอีเมล์ซ้ำในระบบ";
}else if(mysql_num_rows($qryus) >= 1){
$err = "ชื่อซ้ำในระบบ";
}else if(mysql_num_rows($qryem) >= 1){
$err = "อีเมล์ซ้ำในระบบ";
}else if(mysql_query($insert)){
$err = "<h8>ยินดีต้อนรับท่านสมาชิก</h8>";
header("Refresh: 3;url=index.php");
$header = "ระบบกำลังกลับสู่หน้าหลักใน 3 วินาที";
}else{//3
$err = "ไม่สามารถบันทึกข้อมูลได้";
} //3
}//2
}//1
อันนี้รันผ่านครับเป็นไปตามเป้าหมาย เป็นการตรวจสอบ Input แล้ว บันทึก เป็นระบบสมัครสมาชิก
ชุดที่/
session_start();
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
if($_POST){//1
$loguser = $_POST['logusername'];
$logpass = $_POST['logpassword'];
include("include/connect.php");
$sql = "SELECT username,password FROM member WHERE username = '$loguser' and password = '$logpass';";
$qry = mysql_query($sql);
if(mysql_num_rows($qry) != 1){
$err = "ไม่พบข้อมูล";
}else{//2
$err = "พบข้อมูล";
}//2
}//1
อันนี้รันผ่านครับ เป็นระบบ login เป็นไปตามเป้าหมาย
ชุดที่3
session_start();
$selectlog = "SELECT * FROM member WHERE username = '$loguser' AND password = '$logpass';";
if($_POST){//1
$loguser = $_POST['logusername'];
$logpass = $_POST['logpassword'];
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
if(!eregi("[a-z0-9]{5,10}",$loguser)){
$err = "ชื่อสมาชิกต้องมากกว่า 5 ตัวอักษร";
}else if(!eregi("[a-z0-9]{5,10}",$logpass)){
$err = "รหัสผ่านต้องมากกว่า 5 ตัวอักษร";
}else{//2
include("include/connect.php");
$qrylog = mysql_query($selectlog) or die (mysql_error()."query");
$aaa = mysql_num_rows($qrylog) or die (mysql_error()."numrows");
if($aaa != 0){
$err = "ไม่พบข้อมูล";
}else{//3
$err = "พบข้อมูล";
}//3
}//2
}//1
***********อันนี้ไม่ผ่านครับ ไม่รู้ว่าเป็นเพราะอะไร ผมก้อใช้หลักการเดียวกัน อันนี้แหละครับที่มีปัญหา
รบกวนพี่ๆๆ ช่วยผมหน่อยครับ
Tag : PHP
|
|
|
|
|
|
Date :
2013-12-10 09:36:47 |
By :
beerburn |
View :
866 |
Reply :
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรงคำสั่ง sql ชุดที่3 มี ; 2 ตัวครับ
|
|
|
|
|
Date :
2013-12-10 09:52:56 |
By :
dagonov |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดูดีๆ ครับ ตัวแปร $loguser และ $logpass มีตัวตนหรือยัง ตอนที่กำหนดให้กับ $selectlog
Code (PHP)
session_start();
$selectlog = "SELECT * FROM member WHERE username = '$loguser' AND password = '$logpass';"; // คุณใช้งานมันแล้ว
if($_POST){//1
$loguser = $_POST['logusername']; // แต่จริงๆ มันเพิ่งจะมีค่า ณ จุดนี้ ใช่หรือไม่
$logpass = $_POST['logpassword'];
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
if(!eregi("[a-z0-9]{5,10}",$loguser)){
$err = "ชื่อสมาชิกต้องมากกว่า 5 ตัวอักษร";
}else if(!eregi("[a-z0-9]{5,10}",$logpass)){
$err = "รหัสผ่านต้องมากกว่า 5 ตัวอักษร";
}else{//2
include("include/connect.php");
$qrylog = mysql_query($selectlog) or die (mysql_error()."query");
$aaa = mysql_num_rows($qrylog) or die (mysql_error()."numrows");
if($aaa != 0){
$err = "ไม่พบข้อมูล";
}else{//3
$err = "พบข้อมูล";
}//3
}//2
}//1
|
|
|
|
|
Date :
2013-12-10 10:01:47 |
By :
K |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เพิ่มอีกนิด คำสั่ง eregi ควรเปลี่ยนเป็น preg_match นะครับ php 5.3 จะเลิกใช้แล้วนะครับ
|
|
|
|
|
Date :
2013-12-10 10:26:16 |
By :
randOmizE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เด่วผมขอเพิ่มข้อมูลอีกนิดน่ะครับ
ชุดที่1 เป็นระบบสมัครสมาชิก ตอนแรกก้อตรวจสอบ<INPUT> แล้วก้อทำการตรวจสอบฐานข้อมูลว่ามีข้อมูลซ้ำกันหรือป่าว
อันนี้ทำงานได้ปกติครับ NUMROWS ผลลัพธ์ออกมา เป็นไปตามเป้าหมาย
ชุดที่ 2 เป็นระบบ LOGIN ผมยังไม่ได้ตรวจสอบ <INPUT> ครับ ผม NUMROWS ก่อนเพื่อที่จะได้รุ้ว่า ชุดโปแกรมทำงานปกติดีหรือป่าว
ผลลัพย์ออกมาก้อปกติ ครับ เป็นไปตามเป้าหมาย ตรวจสอบเจอว่าในฐานข้อมูล มีอยู่แหละตรง กับ ที่ระบุ ไม่มีปัญหาร อะไร
ชุดที่ 3 เป็นระบบ LOGIN เหมือนกันครับ เพียงแต่ผมเพิม ตรวจสอบ <INPUT> ลงไป แต่ ผิดเป้าหมายครับ คือ
ในฐานข้อมูล มีข้อมูลจริง(!=0) แต่ Submit ไปแล้วไม่เจอ (" ไม่พบข้อมูล") ไม่ว่าจะระบุอะไร จะ ไม่พบข้อมูลตลอด
แต่พอผมเปลี่ยนเป็นเลข (!=1) เจอข้อมูลครับ แล้วจะระบุอะไรก้อเจอ ข้อมูลตลอด ผมงงเลย
พอผมใส่ OR DIE มันไม่ขึ้นว่า OR DIE เพราะอะไร มันขึ้นว่า NUMrows
ในชุดที่ 1 ตอนแรก มันรวนๆๆได้มั่งไม่ได้มั่ง เหมือนกันครับ ผมเยลยเอา include ไปอยู่หลัง else ก้อหาย ครับ
ในชุดที่ 3 ผมก้อเลย เอา include ไปอยู่หลัง else มั่ง แต่กับ มีปัญหา ก้อคือผลลัพย์ออกมาตรงกันข้าม
ตอนนี้ผมงงมากเลย ยังก้อรบกวนพี่ๆๆหน่อยน่ะครับ ไม่รุ้ว่าเกี่ยวกับอะไร
|
|
|
|
|
Date :
2013-12-10 17:58:53 |
By :
beerburn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ NO1 ครับ ตรงไหนหรือครับ ผมสังเกตุไม่เห็นจริงๆ
พี่ NO2 ครับ ผมลองเอา $select ที่พี่บอกเอามาไว้ ข้างล่าง $logpass แล้วครับ ที่นี้ไม่เจอเลยครับ แต่ในฐานข้อมุลมี
พี่NO3 ขอบคุณมากครับ สำหรับคำสั่ง preg_match ขอบคุณที่แนะนำครับ เด่วผมลองไปศึกษา
ผมกำลังคิดอยู่ว่า มันผิดหลักเกณ หรือป่าว หรือผมคิดมากไปเอง แต่สรุป ยังไม่ได้น่ะครับ
|
|
|
|
|
Date :
2013-12-10 18:05:00 |
By :
beerburn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ No3 ครับ ถ้าสมมมุติที่พี่บอกว่า ประกาศข้างบนมันคือ การใช้งานแล้ว
งั้น โค๊ดชุดที่1 ก้อน่าจะมีปัญหาครับ เพราะชุดที่ 1 ผมประกาศข้างบน
หรือผมเขียน ผิด สูตร
|
|
|
|
|
Date :
2013-12-10 18:08:26 |
By :
beerburn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ N0 3 ครับ
ได้แล้วครับ ผมเอามาไว้ข้างล่างตามที่พี่บอก แต่ทำไม โค๊ดชุดที่ 1 ใช้ได้ ตรงนี้ผมงงมาก
|
|
|
|
|
Date :
2013-12-10 18:22:52 |
By :
beerburn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าที่ผมตอบไปยังไม่ทำให้คุณเข้าใจว่าผิดตรงไหน ก็ขอให้ไปศึกษาพื้นฐานก่อนดีกว่าครับ เพราะจากที่ถามข้างบนก็รู้ได้เลยว่าคุณยังไม่มีความรู้พื้นฐานเลย การเขียนโปรแกรมไม่ใช่แค่ copy code แล้วย้ายไปมา แปะข้างบนข้างล่างแล้วจะทำได้ หาหนังสือมาอ่านเถอะครับ
|
|
|
|
|
Date :
2013-12-10 18:33:23 |
By :
K |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ครับ ขอโทษน่ะครับพี่ผมคงจะถามมากไป ทำให้พี่หงุดหงิด
คือผมพอเข้าใจอยู่ ครับ แต่ปัญหา คือ ทำไม ชดที่ 1 ใช้ได้ถ้าผมประกาศข้างบน แต่ชุดที่ 3 ใช้ไม่ได้อ่ะครับ แค่นั้นเองครับพี่
อย่าเพิ่งหงุดหงิด ครับ
ขอบคุณครับ พี่ชาย
|
|
|
|
|
Date :
2013-12-10 18:41:19 |
By :
beerburn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้หงุดหงิดครับ อย่าเข้าใจผิด แต่ไม่รู้จะตอบยังไง เพราะมันเป็นพื้นฐานมาก เหมือนน้องอยากทำอาหาร แต่ถามว่าผงสีขาวๆ หวานๆ นี่เรียกว่าอะไร ประมาณนั้นน่ะครับ
แต่คือถ้าน้องไม่เข้าใจตรงปัญหาดังกล่าว ซึ่งมันเป็นพื้นฐาน เดี๋ยวน้องก็ต้องมาถามอีก แต่ถ้าน้องอ่านหนังสือ ทำความเข้าใจพื้นฐาน ปัญหาที่น้องถามจะหมดไปครับ แล้วจะไปขั้นต่อไปได้เร็วกว่า
ถ้าให้บอกคร่าวๆ คือ ชุดที่ 1 มันก็ผิดครับ มันทำงานผ่านก็จริง แต่มันทำงานผิดพลาดครับ
Code (PHP)
session_start();
// ตัวแปร $username $password $repassword $email $date ยังไม่มีตัวตน แต่คุณใช้มันแล้ว
$insert = "INSERT INTO member(username,password,email,date) VALUES ('$username','$password','$email','$date');";
$selectus = "SELECT username FROM member WHERE username = '$username';";
$selectem = "SELECT email FROM member WHERE email = '$email';";
$selectall = "SELECT username,email FROM member WHERE username = '$username' and email ='$email';";
if($_POST){//1
// เพราะมันมีถูกกำหนดตรงนี้ ดังนั้น
$username = $_POST['username'];
$password = $_POST['password'];
$repassword = $_POST['repassword'];
$email = $_POST['email'];
$code = $_POST['code'];
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
if(!eregi("[a-z0-9]{5,10}",$username)){
$err = "ชื่อสมาชิกต้องมากว่า 5 ตัวอักษร";
}else if(!eregi("[a-z0-9]{5,10}",$password)){
$err = "รหัสผ่านต้องมากกว่า 5 ตัวอักษร";
}else if($password != $repassword){
$err = "รหัสผ่านไม่ตรงกัน";
}else if(empty($code)){
$err = "รหัสลับยังไม่ได้ระบุ";
}else if($_POST['code'] != $_SESSION['codea']){
$err = "รหัสลับไม่ตรงกัน";
}else{//2
include("include/connect.php");
// เมื่อมาถึงตรงนี้ query ทั้ง 3 อันจะให้ผลเป็น 0 แถวตลอด ดังนั้นโปรแกรมจะผ่านตลอด แม้ว่าจะมีชื่อผู้ใช้หรืออีเมล์ซ้ำในระบบก็ตาม
$qryus = mysql_query($selectus);
$qryem = mysql_query($selectem);
$qryall = mysql_query($selectall);
// ตรงนี้จะไม่มีวันทำงานเลย จะข้ามไป ยินดีต้อนรับตลอด
if(mysql_num_rows($qryall) >= 1){
$err = "ชื่อและอีเมล์ซ้ำในระบบ";
}else if(mysql_num_rows($qryus) >= 1){
$err = "ชื่อซ้ำในระบบ";
}else if(mysql_num_rows($qryem) >= 1){
$err = "อีเมล์ซ้ำในระบบ";
}else if(mysql_query($insert)){
$err = "<h8>ยินดีต้อนรับท่านสมาชิก</h8>";
header("Refresh: 3;url=index.php");
$header = "ระบบกำลังกลับสู่หน้าหลักใน 3 วินาที";
}else{//3
$err = "ไม่สามารถบันทึกข้อมูลได้";
} //3
}//2
}//1
|
|
|
|
|
Date :
2013-12-10 19:13:21 |
By :
K |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
session_start();
if($_POST){//1
$loguser = $_POST['logusername'];
$logpass = $_POST['logpassword'];
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
if(!eregi("[a-z0-9]{5,10}",$loguser)){
$err = "ชื่อสมาชิกต้องมากกว่า 5 ตัวอักษร";
}else if(!eregi("[a-z0-9]{5,10}",$logpass)){
$err = "รหัสผ่านต้องมากกว่า 5 ตัวอักษร";
}else{//2
include("include/connect.php");
$selectlog = "SELECT * FROM member WHERE username = '$loguser' AND password = '$logpass';";
$qrylog = mysql_query($selectlog) or die (mysql_error()."query");
$aaa = mysql_num_rows($qrylog) or die (mysql_error()."numrows");
if($aaa != 0){
$err = "ไม่พบข้อมูล";
}else{//3
$err = "พบข้อมูล";
}//3
}//2
}//1
|
|
|
|
|
Date :
2013-12-10 20:46:31 |
By :
kenghockey |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับพี่ ๆๆ ผมเข้าใจแล้ว ครับ ผมตอนแรก ชุดที่ 1 ผมก้อทำงานแปลกก ๆๆ เหมือนไม่ เสถียร แต่ตอนพี่บอก ผมก้อเข้าใจแหละ ครับ
ตอนนี้ผมศึกษาดู จากที่พี่ให้ ผมรู้สึกว่า ผมข้ามขั้นตอน ขอบคุณมากครับ พี่
จริงๆๆ แล้วผมก้อเพิ่งหัดเขียนเหมือนกันครับ แล้วผมก้อสงสัย แต่พี่ อธิบายมา ผมเห็นภาพเลยครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2013-12-11 00:08:57 |
By :
beerburn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|