ถามเรื่องการเขียนไฟล์ติดต่อกับฐานข้อมูล

เริ่มโดย Tricker, 17 มกราคม 2013, 01:28:17

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Tricker

ผมลองศึกาาการเขียนระบบล้อกอินจากเว็บนี้

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");
?>


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

ไม่ทราบว่าเป็นที่เพราะอะไรครับ

Freedomlover

ที่บอกว่า ไม่ได้  มี error ว่ายังไงบ้างครับ

จาก code  ถ้าไม่มีปัญหาอะไร คือ ไม่แสดงอะไร  เพราะเป็นแค่การเชื่อมต่อเฉยๆ
[direct=https://www.jaideawhosting.com/web-hosting/]โฮสติ้ง[/direct] คุณภาพสูง ราคาเริ่มต้น 50 บาท/เดือน ทดลองใช้ฟรี 30 วัน
[direct=https://www.jaideawhosting.com/vps-hosting/]SSD VPS[/direct] แรงๆ
จดโดเมนเพียง 400 บาท/ปี
ด้วยประสบการณ์กว่า 12 ปี  Tel 0840640213

dekmv

งมไปเรื่อยๆ.. ถ้ามันเยอะก็ลบแล้วทำที่ละขั้นเลยครับ ...  :wanwan012:

Tricker

เออเร่อแบบนี้ครับ
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

ไฟล์ check_login.php ลองดูว่า session_start(); อยู่บรรทัดไหนครับแล้วเช็คว่า มีการ output ก่อนที่จะมีการเรียกใช้ ฟังก์ชัน sesstion_start() หรือเปล่า
หรือแก้ง่ายๆ โดยเอา session_start(); ไปไว้บรรทัดแรกซะเลย


gubaaball

โค้ดไฟล์นี้ connect.php เอามาให้ดูหมดแล้วหรอครับ error อย่างนี้ไม่ session ก็ cookies หรือคำสั่ง header ครับ

aunkanbin

เอา session_start ไปไว้บรรทัดแรกแล้ว save ทุกไฟล์เป็น utf-8
ยิ่งสูงยิ่งหนาว

Tricker

ผมเอา 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> &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


Tricker

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

ลองเซฟเป็นแบบ UTF-8+BOM ดูครับ

ผมใช้โปรแกรม Notepad++

kobkung

ก็ใส่ @session_start(); ไปแทน

จริงๆ ให้เอา session start เนี่ย ไปวางใน connect.php ส่วนที่อยู่ในไฟล์อื่นก็ลบทิ้งไปสิ
แล้วก็สร้าง head.php ขึ้นมาเพื่อ include connect.php เข้าไปนะ
แล้วหน้าเพจทั่วไป เราก็ include head.php เข้าไปอีกที ยังไง head มันก็ต้องแทรกทุกหน้า

ที่นี้หน้าไหนมีเรียก head.php มันก็เปิดใช้ session ให้เลย
เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
[direct=http://www.smilephp.com]Smilephp.com[/direct] รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262
[direct=http://www.sellerorder.com ระบบหลังบ้าน จัดการ Order ขายของ  ช่วงนี้หาคนทดสอบฟรี ขอได้ตามเมลในเว็บ[/direct]
งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ

aommiez

include ไฟล์ แล้ว session_start มันไปทับกัน หรือเปล่าครับ ถ้าไป start ไฟล์ไหนแล้ว include ไฟล์ที่มัน start อีก ก็จะ error

kobkung

ก็ถึงเอาออกไงที่อยู่ไฟล์อื่น เอามาใส่ใน connect ทีเดียวเลย
อีกอย่าง include ให้ใช้ include_once แทน มันจะไม่เรียกซ้ำ
อันนี้เบสิคมากๆ นะ ต้องหาพื้นฐานอ่านเอาแล้ว ไม่ใช่ไล่ทำไปก็ดูเฉพาะที่ทำ
เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
[direct=http://www.smilephp.com]Smilephp.com[/direct] รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262
[direct=http://www.sellerorder.com ระบบหลังบ้าน จัดการ Order ขายของ  ช่วงนี้หาคนทดสอบฟรี ขอได้ตามเมลในเว็บ[/direct]
งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ

tongboss

จาก error แรก
ไม่ทราบว่า ชื่อ db ที่คุณสร้างขึ้นกับที่ สั่งให้ connect เหมือนกันหรือไม่
เพราะ จาก

อ้างถึงจาก: Tricker ใน 17 มกราคม 2013, 01:28:17
<?php
   $dbuser = "root";
   $dbpass = "1234";
   $dbname = "sa";

แต่จาก error แจ้งว่า

อ้างถึงจาก: Tricker ใน 17 มกราคม 2013, 01:53:55
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");

lojoman

สาเหตุที่พบบ่อยของ 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 จะมีให้เลือกว่าจะบันทึกแบบไหนอยู่








[direct=http://www.noobthink.com][/direct]
ขายประกันชีวิตด้วยนะครับ สนใจ [direct=http://www.thaiseoboard.com/index.php?action=pm;sa=send;u=3638]PM[/direct]  มาได้นะครับรับเฉพาะเชียงใหม่ ลำพูน นะครับ