ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingถามเรื่องการเขียนไฟล์ติดต่อกับฐานข้อมูล
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ถามเรื่องการเขียนไฟล์ติดต่อกับฐานข้อมูล  (อ่าน 1969 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
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&#39;t establish connection to Mysql,database!");
}

if(!
mysql_select_db($dbname))
{
die("Couldn&#39;t connect to database $dbname!");
}
mysql_query("SET NAMES UTF8");
?>

ปรากฏว่าไม่ได้ครับ  wanwan031

ไม่ทราบว่าเป็นที่เพราะอะไรครับ
บันทึกการเข้า
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 »

งมไปเรื่อยๆ.. ถ้ามันเยอะก็ลบแล้วทำที่ละขั้นเลยครับ ...  wanwan012
บันทึกการเข้า
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&#39;t establish connection to Mysql,database!");
}

if(!
mysql_select_db($dbname))
{
die("Couldn&#39;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> &nbsp;Username</td>
        <td>
          <input name="txtUsername" type="text" id="txtUsername" class="input-medium search-query">
        </td>
      </tr>
      <tr>
        <td> &nbsp;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"> &nbsp;Username</td>
        <td width="197"><?=$objResult["Username"];?>
        </td>
      </tr>
      <tr>
        <td> &nbsp;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 » บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
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 แทน มันจะไม่เรียกซ้ำ
อันนี้เบสิคมากๆ นะ ต้องหาพื้นฐานอ่านเอาแล้ว ไม่ใช่ไล่ทำไปก็ดูเฉพาะที่ทำ
บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
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
session_start
();
ถ้ามีการเว้นบรรทัดก่อน <?php --> error แน่นอน

ข้อผิดพลาดประการที่สอง คือ save โดยมี BOM (Byte Order Mark) ติดมาด้วยทำให้จำเป็นต้องเอาออก วิที่การเอาออกคือ
SAVE แบบ เอา bom ออก
โดยการใช้โปรแกรม notepad++
กด Format->Encode in UTF-8 without BOM
หรือถ้าใช้ dream ก่อ ไปหาเอาในส่วนของ Page properties จะมีให้เลือกว่าจะบันทึกแบบไหนอยู่








บันทึกการเข้า


ขายประกันชีวิตด้วยนะครับ สนใจ PM   มาได้นะครับรับเฉพาะเชียงใหม่ ลำพูน นะครับ
หน้า: [1]   ขึ้นบน
พิมพ์