ใช้ post รับค่าจาก form แล้วเอาค่าไปใช้ต่อไม่ได้อ่ะค่ะ
คือปัญหาตอนนี้ไมันตรวจสอบค่าไม่ได้เลยอ่ะค่ะ ตกเงื่อนไข if ที่ว่า username ไม่ผ่าน pw
ช่วยดูให้หน่อยนะค่ะ
หนูคิดว่าปัญหาน่าจะอยู่ที่ค่าที่รับมาจาก method post ของ form นะค่ะ
แก้ไม่ได้จริงค่ะ ขอความกรุณาด้วยค่า
ฐานข้อมูลเป็น utf8_unicode_ci ทั้งหมดเลยค่ะ
form.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>:: NSC AdminLogin ::</title>
</head>
<H1>:: Admin Login ::</H1>
<FORM METHOD="POST" ACTION="admin_check.php">
<TABLE WIDTH="260" >
<TR>
<TD>Username :</TD>
<TD><INPUT NAME="user" TYPE="text"> * </TD>
</TR>
<TR>
<TD>Password : </TD>
<TD><INPUT NAME="pass" TYPE="password"> * </TD>
</TR>
<TR>
<TD> </TD>
<TD> <INPUT NAME="submit" TYPE="submit" VALUE="Sumit">
<INPUT NAME="RESET" TYPE="reset" VALUE="Reset">
</TD>
</TR>
</TABLE>
</FORM>
<body>
</body>
</html>
_________________________________________________________________________
checkform.php
<?
session_start () ;
$user=$_POST[user];
$pass=$_POST[pass];
//print"$user and $pass <br>"; ค่าที่รับจากฟอร์มแสดงถูกต้องค่ะ แต่น่าจะเพราะ SET NAMES UTF8 ไว้ใน connect.php
include"connect.php";
mysql_select_db("db_nsc");
//$use = "userka"; เพราะลองกำหนดแบบนี้แล้วเทสดูไม่ปัญหาค่ะ คิวรีทำงานปกติ เลยคิดว่าน่าจะมีปัญหาจากค่าที่รับจาก form ค่ะ
$sql="SELECT * FROM tb_user
WHERE Username = '$user' AND Status_user='Admin' AND Password = '$pass';";
$result=mysql_query($sql) ;
$retest = mysql_fetch_array($result);
If(mysql_num_rows($result)==0) {
Echo "<h3>ERROR : Username หรือ Password ผิด</h3>";
}else{
Echo "<H3>Login Success</H3>"; print"$retest[Username] $retest[name]";
}
mysql_close($cn);
?>
ช่วยดูให้หน่อยนะค่ะ
หนูคิดว่าปัญหาน่าจะอยู่ที่ค่าที่รับมาจาก method post ของ form นะค่ะ
แก้ไม่ได้จริงค่ะ ขอความกรุณาด้วยค่า
ฐานข้อมูลเป็น utf8_unicode_ci ทั้งหมดเลยค่ะ
form.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>:: NSC AdminLogin ::</title>
</head>
<H1>:: Admin Login ::</H1>
<FORM METHOD="POST" ACTION="admin_check.php">
<TABLE WIDTH="260" >
<TR>
<TD>Username :</TD>
<TD><INPUT NAME="user" TYPE="text"> * </TD>
</TR>
<TR>
<TD>Password : </TD>
<TD><INPUT NAME="pass" TYPE="password"> * </TD>
</TR>
<TR>
<TD> </TD>
<TD> <INPUT NAME="submit" TYPE="submit" VALUE="Sumit">
<INPUT NAME="RESET" TYPE="reset" VALUE="Reset">
</TD>
</TR>
</TABLE>
</FORM>
<body>
</body>
</html>
_________________________________________________________________________
checkform.php
<?
session_start () ;
$user=$_POST[user];
$pass=$_POST[pass];
//print"$user and $pass <br>"; ค่าที่รับจากฟอร์มแสดงถูกต้องค่ะ แต่น่าจะเพราะ SET NAMES UTF8 ไว้ใน connect.php
include"connect.php";
mysql_select_db("db_nsc");
//$use = "userka"; เพราะลองกำหนดแบบนี้แล้วเทสดูไม่ปัญหาค่ะ คิวรีทำงานปกติ เลยคิดว่าน่าจะมีปัญหาจากค่าที่รับจาก form ค่ะ
$sql="SELECT * FROM tb_user
WHERE Username = '$user' AND Status_user='Admin' AND Password = '$pass';";
$result=mysql_query($sql) ;
$retest = mysql_fetch_array($result);
If(mysql_num_rows($result)==0) {
Echo "<h3>ERROR : Username หรือ Password ผิด</h3>";
}else{
Echo "<H3>Login Success</H3>"; print"$retest[Username] $retest[name]";
}
mysql_close($cn);
?>
ผมว่าผิดที่โค้ด checkform.php บรรทัดนี้ครับ
WHERE Username = '$user' AND Status_user='Admin' AND Password = '$pass';";
ตรงสี่แดงผมว่ามันมีเครื่องหมาย ; เกินมาอันนึงนะ
อีกอย่างจากโค้ดฟอร์ม
ACTION="admin_check.php"
แต่โค้ดรับค่าของคุณเป็น chekform.php ตกลงส่งค่าให้ไฟล์ไหนกันแน่ครับ
โค้ดก็ดูปกตินะ
ผมเคยบอกมาสัก 1000 หนบนบอร์ดแล้วว่าการตรวจสอบ query สามารถทำได้ง่ายๆแค่ echo เอาคำสั่ง sql ออกมาดู และเอาคำสั่งนั้น ไปทดสอบบน phpMyAdmin
การ echo ทำให้เราเห็นผลลัพท์สุดท้ายก่อนการ query และ การทดสอบ บน phpMyAdmin ถ้ามีข้อผิดพลาด phpMyadmin จะรายงานออกมาได้มากว่า รวมถึงเราอาจแก้ไขให้เหมาะสมได้ดวย
ถ้าทุกอย่างถูกต้อง ผมว่าปัญหาอาจจะอยู่ที่ Status_user='Admin' ซึ่งเดาว่า user ที่ login อาจไม่ใช่ admin ก็ได้ครับ
ค่า user มันเลย ผิด วางยาตัวเองง่ะ
ไงก็ขอบคุณค่ะ