Tricker
ก๊วนเสียว
พลังน้ำใจ: 29
ออฟไลน์
กระทู้: 400
|
 |
« เมื่อ: 17 มกราคม 2013, 01:28:17 » |
|
ผมลองศึกาาการเขียนระบบล้อกอินจากเว็บนี้ http://www.thaicreate.com/community/php-mysql-login-form-check-username-password.html ผมลองเขียนไฟล์ connect.php เพื่อเรียกใช้งานง่ายๆ <?php $dbhost = "localhost"; $dbuser = "root"; $dbpass = "1234"; $dbname = "sa";
if(!($conn = mysql_connect($dbhost,$dbuser,$dbpass))) { die("Couldn't establish connection to Mysql,database!"); }
if(!mysql_select_db($dbname)) { die("Couldn't connect to database $dbname!"); } mysql_query("SET NAMES UTF8"); ?> ปรากฏว่าไม่ได้ครับ  ไม่ทราบว่าเป็นที่เพราะอะไรครับ
|
|
|
บันทึกการเข้า
|
|
|
|
Freedomlover
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 207
ออฟไลน์
กระทู้: 2,097
|
 |
« ตอบ #1 เมื่อ: 17 มกราคม 2013, 01:33:36 » |
|
ที่บอกว่า ไม่ได้ มี error ว่ายังไงบ้างครับ
จาก code ถ้าไม่มีปัญหาอะไร คือ ไม่แสดงอะไร เพราะเป็นแค่การเชื่อมต่อเฉยๆ
|
|
|
บันทึกการเข้า
|
โฮสติ้ง  คุณภาพสูง ราคาเริ่มต้น 50 บาท/เดือน ทดลองใช้ฟรี 30 วัน SSD VPS  แรงๆ จดโดเมนเพียง 400 บาท/ปี ด้วยประสบการณ์กว่า 12 ปี Tel 0840640213
|
|
|
dekmv
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 3,264
|
 |
« ตอบ #2 เมื่อ: 17 มกราคม 2013, 01:48:14 » |
|
งมไปเรื่อยๆ.. ถ้ามันเยอะก็ลบแล้วทำที่ละขั้นเลยครับ ... 
|
|
|
บันทึกการเข้า
|
|
|
|
Tricker
ก๊วนเสียว
พลังน้ำใจ: 29
ออฟไลน์
กระทู้: 400
|
 |
« ตอบ #3 เมื่อ: 17 มกราคม 2013, 01:53:55 » |
|
เออเร่อแบบนี้ครับ Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\sa\connect.php:1) in C:\AppServ\www\sa\check_login.php on line 21
ไฟล์ที่ผมเขียน จะใช้ include(connect.php); แทนในส่วน
mysql_connect("localhost","root","root"); mysql_select_db("mydatabase");
ของแต่ละไฟล์ครับ
|
|
|
บันทึกการเข้า
|
|
|
|
navico
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 108
ออฟไลน์
กระทู้: 2,315
|
 |
« ตอบ #4 เมื่อ: 17 มกราคม 2013, 03:37:25 » |
|
ไฟล์ check_login.php ลองดูว่า session_start(); อยู่บรรทัดไหนครับแล้วเช็คว่า มีการ output ก่อนที่จะมีการเรียกใช้ ฟังก์ชัน sesstion_start() หรือเปล่า หรือแก้ง่ายๆ โดยเอา session_start(); ไปไว้บรรทัดแรกซะเลย
|
|
|
บันทึกการเข้า
|
|
|
|
gubaaball
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 184
ออฟไลน์
กระทู้: 1,678
|
 |
« ตอบ #5 เมื่อ: 17 มกราคม 2013, 07:30:10 » |
|
โค้ดไฟล์นี้ connect.php เอามาให้ดูหมดแล้วหรอครับ error อย่างนี้ไม่ session ก็ cookies หรือคำสั่ง header ครับ
|
|
« แก้ไขครั้งสุดท้าย: 17 มกราคม 2013, 07:33:20 โดย gubaaball »
|
บันทึกการเข้า
|
|
|
|
aunkanbin
สมุนแก๊งเสียว
พลังน้ำใจ: 226
ออฟไลน์
กระทู้: 538
|
 |
« ตอบ #6 เมื่อ: 17 มกราคม 2013, 07:47:21 » |
|
เอา session_start ไปไว้บรรทัดแรกแล้ว save ทุกไฟล์เป็น utf-8
|
|
|
บันทึกการเข้า
|
ยิ่งสูงยิ่งหนาว
|
|
|
Tricker
ก๊วนเสียว
พลังน้ำใจ: 29
ออฟไลน์
กระทู้: 400
|
 |
« ตอบ #7 เมื่อ: 17 มกราคม 2013, 11:47:30 » |
|
ผมเอา session_start ไปไว้บรรทัดแรกหมดทุกไฟล์แล้วครับ connect.php <?php $dbhost = "localhost"; $dbuser = "root"; $dbpass = "1234"; $dbname = "sa";
if(!($conn = mysql_connect($dbhost,$dbuser,$dbpass))) { die("Couldn't establish connection to Mysql,database!"); }
if(!mysql_select_db($dbname)) { die("Couldn't connect to database $dbname!"); } mysql_query("SET NAMES UTF8"); ?> login.php <!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>Login</title> <link rel="stylesheet" type="text/css" href="bootstrap.css" /> </head>
<body>
<form name="form1" method="post" action="check_login.php" class="form-search"> <br><center>Login</center><br> <table border="0" style="width: 300px" align="center"> <tbody> <tr> <td> Username</td> <td> <input name="txtUsername" type="text" id="txtUsername" class="input-medium search-query"> </td> </tr> <tr> <td> Password</td> <td><input name="txtPassword" type="password" id="txtPassword" class="input-medium search-query"> </td> </tr> </tbody> </table> <br> <center><input type="submit" name="Submit" value="Login" class="btn"></center> </form> </body> </html> check_login.php <? session_start(); require_once("connect.php"); $strSQL = "SELECT * FROM member WHERE Username = '".trim($_POST['txtUsername'])."' and Password = '".trim($_POST['txtPassword'])."'"; $objQuery = mysql_query($strSQL); $objResult = mysql_fetch_array($objQuery); echo $strSQL; if(!$objResult) { echo "Username and Password Incorrect!"; } else { $_SESSION["UserID"] = $objResult["UserID"]; $_SESSION["Status"] = $objResult["Status"];
session_write_close(); if($objResult["Status"] == "ADMIN") { header("location:admin_page.php"); } else { header("location:user_page.php"); } } mysql_close(); ?> admin_page.php <? session_start(); if($_SESSION['UserID'] == "") { echo "Please Login!"; exit(); }
if($_SESSION['Status'] != "ADMIN") { echo "This page for Admin only!"; exit(); } require_once("connect.php"); $strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' "; $objQuery = mysql_query($strSQL); $objResult = mysql_fetch_array($objQuery); ?> <html> <head> <title></title> </head> <body> Welcome to Admin Page! <br> <table border="1" style="width: 300px"> <tbody> <tr> <td width="87"> Username</td> <td width="197"><?=$objResult["Username"];?> </td> </tr> <tr> <td> Name</td> <td><?=$objResult["Name"];?></td> </tr> </tbody> </table> <br> <a href="edit_profile.php">Edit</a><br> <br> <a href="logout.php">Logout</a> </body> </html>
|
|
|
บันทึกการเข้า
|
|
|
|
aommiez
ก๊วนเสียว
พลังน้ำใจ: 13
ออฟไลน์
กระทู้: 303
|
 |
« ตอบ #8 เมื่อ: 17 มกราคม 2013, 11:52:25 » |
|
ตอนนี้ error อะไรอยุ่บ้างครับ
|
|
|
บันทึกการเข้า
|
|
|
|
Tricker
ก๊วนเสียว
พลังน้ำใจ: 29
ออฟไลน์
กระทู้: 400
|
 |
« ตอบ #9 เมื่อ: 17 มกราคม 2013, 12:08:03 » |
|
error แบบนี้ครับ
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\sa\connect.php:1) in C:\AppServ\www\sa\check_login.php on line 23
|
|
|
บันทึกการเข้า
|
|
|
|
pkake2000
ก๊วนเสียว
พลังน้ำใจ: 103
ออฟไลน์
กระทู้: 495
|
 |
« ตอบ #10 เมื่อ: 17 มกราคม 2013, 12:11:10 » |
|
ลองเซฟเป็นแบบ UTF-8+BOM ดูครับ
ผมใช้โปรแกรม Notepad++
|
|
|
บันทึกการเข้า
|
|
|
|
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 103
ออฟไลน์
กระทู้: 1,312
|
 |
« ตอบ #11 เมื่อ: 18 มกราคม 2013, 06:28:59 » |
|
ก็ใส่ @session_start(); ไปแทน
จริงๆ ให้เอา session start เนี่ย ไปวางใน connect.php ส่วนที่อยู่ในไฟล์อื่นก็ลบทิ้งไปสิ แล้วก็สร้าง head.php ขึ้นมาเพื่อ include connect.php เข้าไปนะ แล้วหน้าเพจทั่วไป เราก็ include head.php เข้าไปอีกที ยังไง head มันก็ต้องแทรกทุกหน้า
ที่นี้หน้าไหนมีเรียก head.php มันก็เปิดใช้ session ให้เลย
|
|
« แก้ไขครั้งสุดท้าย: 18 มกราคม 2013, 06:31:23 โดย kobkung »
|
บันทึกการเข้า
|
|
|
|
aommiez
ก๊วนเสียว
พลังน้ำใจ: 13
ออฟไลน์
กระทู้: 303
|
 |
« ตอบ #12 เมื่อ: 18 มกราคม 2013, 10:23:58 » |
|
include ไฟล์ แล้ว session_start มันไปทับกัน หรือเปล่าครับ ถ้าไป start ไฟล์ไหนแล้ว include ไฟล์ที่มัน start อีก ก็จะ error
|
|
|
บันทึกการเข้า
|
|
|
|
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 103
ออฟไลน์
กระทู้: 1,312
|
 |
« ตอบ #13 เมื่อ: 18 มกราคม 2013, 21:52:05 » |
|
ก็ถึงเอาออกไงที่อยู่ไฟล์อื่น เอามาใส่ใน connect ทีเดียวเลย อีกอย่าง include ให้ใช้ include_once แทน มันจะไม่เรียกซ้ำ อันนี้เบสิคมากๆ นะ ต้องหาพื้นฐานอ่านเอาแล้ว ไม่ใช่ไล่ทำไปก็ดูเฉพาะที่ทำ
|
|
|
บันทึกการเข้า
|
|
|
|
tongboss
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 108
ออฟไลน์
กระทู้: 1,882
|
 |
« ตอบ #14 เมื่อ: 18 มกราคม 2013, 23:04:49 » |
|
จาก error แรก ไม่ทราบว่า ชื่อ db ที่คุณสร้างขึ้นกับที่ สั่งให้ connect เหมือนกันหรือไม่ เพราะ จาก <?php $dbuser = "root"; $dbpass = "1234"; $dbname = "sa";
แต่จาก error แจ้งว่า mysql_connect("localhost","root","root"); mysql_select_db("mydatabase");
|
|
|
บันทึกการเข้า
|
|
|
|
lojoman
คนรักเสียว
พลังน้ำใจ: 8
ออฟไลน์
กระทู้: 111
|
 |
« ตอบ #15 เมื่อ: 19 มกราคม 2013, 12:56:30 » |
|
สาเหตุที่พบบ่อยของ error นี้ คือ มีการเว้นบรรทัด ก่อนการ session_start ลงตรวจเช็ค ไฟล์ ทุกไฟล์ที่มี session_start ว่ามีการเว็นบรรทัดหรือไม่ เช่น ถ้ามีการเว้นบรรทัดก่อน <?php --> error แน่นอน ข้อผิดพลาดประการที่สอง คือ save โดยมี BOM (Byte Order Mark) ติดมาด้วยทำให้จำเป็นต้องเอาออก วิที่การเอาออกคือ SAVE แบบ เอา bom ออก โดยการใช้โปรแกรม notepad++ กด Format->Encode in UTF-8 without BOM หรือถ้าใช้ dream ก่อ ไปหาเอาในส่วนของ Page properties จะมีให้เลือกว่าจะบันทึกแบบไหนอยู่
|
|
|
บันทึกการเข้า
|
 ขายประกันชีวิตด้วยนะครับ สนใจ PM  มาได้นะครับรับเฉพาะเชียงใหม่ ลำพูน นะครับ
|
|
|
|