ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => หัวข้อเริ่มโดย: nokia201 ใน 17 พฤษภาคม 2013, 19:53:49

ชื่อเรื่อง: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: nokia201 ใน 17 พฤษภาคม 2013, 19:53:49
มันขึ้นแบบนี้ครับ
Cannot modify header information - headers already sent by (output started at C:\AppServ\www\setcookie.php:1) in C:\AppServ\www\setcookie.php on line 14
นี่โค๊ด
<?php
if(isset($_POST["send"])){
process();
}
else
{
htmlblock();
}

function process(){
$id=$_POST["username"];
if($_COOKIE["username"]=="")
  {
    setcookie("username",$id,time()+3600);
   echo "ขอต้อนรับสู่ระบบคุณ $id <br>";
    echo "ตอนนี้คุณยังไม่มี cookie";
   }
else
  {
    echo "ขอต้อนรับสู่ระบบคุณ $user <br>";
   echo "คุณมี cookie แล้วคือ".$_COOKIE["username"];
  }
}
function htmlblock(){
$id="";
if(isset($_COOKIE["username"])){
$id=$_COOKIE["username"];
}
echo <<<HTML
<form action="{$_SERVER['PHP_SELF']}" method="POST">
<input type="text" name="username" value="{$id}"><br>
<input type="submit" name="send">
</form>
HTML;
}
?>
:wanwan017:
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: normalblue ใน 17 พฤษภาคม 2013, 20:32:07
ได้ Include ไฟล์นี้ไปใช้หน้าอื่นหรือเปล่าครับ? ถ้า Include ไปแสดงก็ Show ไฟล์นั้นด้วย

ถ้าเฉพาะ Code ที่แสดง ผมว่ามันจะไป Error ตรงบรรทัด 20 มากกว่า เพราะไม่ได้มีการกำหนดค่าตัวแปล $user จู่ๆ ก็สั่ง Echo มันออกมา
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: thai2ads ใน 17 พฤษภาคม 2013, 20:55:49
ob_start(); ไว้บนสุด บรรทัดแรกเลยนะ
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: nokia201 ใน 17 พฤษภาคม 2013, 21:07:29
ทำตามทั้งสองท่านแล้วก็ยังขึ้น
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\setcookie.php:1) in C:\AppServ\www\setcookie.php on line 15
:wanwan031:
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: nuvatchai ใน 17 พฤษภาคม 2013, 21:15:49
ถ้า cookie ยังทำงานแต่มี error ให้ใส่ @ หน้า function หรือบรรทัดไหนที่ไม่ต้องการให้มันขึ้น error ครับ เช่น @setcookie
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: MapTwoZa ใน 17 พฤษภาคม 2013, 22:02:37
ใส่ ob_start() ไว้บรรทัดแรกสุด ของไฟล์แรกสุดที่มีการ run เช่น www.myweb.com/mypage.php (http://www.myweb.com/mypage.php)

ก็ให้ใส่ ob_start() ไว้ที่บรรทัดแรกสุดของ mypage.php ไม่ใช่ใส่ไว้บรรทัดแรกของ setcookie.php


ลักษณะการทำงานของ cookie คือส่ง cookie ไปพร้อม header ถ้าส่งไม่ได้ ก็ทำงานไม่ผ่านครับ client ไม่ได้รับ cookie
ใส่ @ ไว้ข้างหน้า setcookie ไม่ช่วยไร แค่ไม่ให้โชว์ error/warning ให้เกะกะลูกตา

ส่วน ob_start() คือ อะไร คือคำสั่งที่ทำให้ php ไปส่งส่วนอื่นไปนอกจาก header ถึงแม้จะมีการ echo ก็จะไปเก็บไว้ใน buffer แทนที่จะส่งไปครับ
เมื่อ obstart ไว้บรรทัดแรกสุด จะใส่ session start/set cookie/set header ไว้ตรงส่วนไหนก็ได้ แต่ต้องก่อนการ flush buffer
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: nokia201 ใน 17 พฤษภาคม 2013, 23:34:19
ผมลองทำตามที่หลายๆท่านบอกละครับยังคง error
ใครก็ได้ลองเอาโค๊ดผมไปแล้วทำไม่ให้มันเกิด error หน่อยครับ  :wanwan017:

ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: MapTwoZa ใน 17 พฤษภาคม 2013, 23:37:52
เอาไฟล์มาครับไม่ก็ copy code มาวางในบอร์ดก็ได้
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: nokia201 ใน 17 พฤษภาคม 2013, 23:49:45
โค๊ดเดิมแหละครับเพราะผมให้มันประมวลผลในหน้าเพจเดิมใช้ $_SERVER['PHP_SELF']
ผมลองใส่ ob_start(); ไว้ที่บรรดทัดแรกก็ยัง error ครับ คือผมกำลังฝึกใช้ cookie ครับ  :P
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: gubaaball ใน 18 พฤษภาคม 2013, 00:02:48
ถ้าใช้ dream เขียนโค้ดลองเข้าไปดูที่ Modify > Page Properties > Title/Encoding > เอาติ๊กถูกหน้าประโยค Include Unicode Signature (BOM) ออก

ลองดูน่ะครับเผื่อเป็นแบบที่ผมเคยเป็น  :P
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: iNdEpD ใน 18 พฤษภาคม 2013, 00:39:07
น่าจะเป็นที่ Dream ครับ ลองทำตามด้านบนเลยครับ เพราะผมเอาลง notepad++ ดูได้ปกตินะ
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: sbaydee ใน 18 พฤษภาคม 2013, 00:56:42
ถ้าไม่หายใช้ editplus แก้ encode เป็น UTF-8 ก็ได้ครับ
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: adidog ใน 18 พฤษภาคม 2013, 08:20:45
อ้างถึงจาก: sbaydee ใน 18 พฤษภาคม 2013, 00:56:42
ถ้าไม่หายใช้ editplus แก้ encode เป็น UTF-8 ก็ได้ครับ
ตามนี้ครับ น่าจะเกิดจากปัญหา encode
ชื่อเรื่อง: Re: [PHP] เรื่อง error cookie ครับ
โพสต์โดย: nokia201 ใน 18 พฤษภาคม 2013, 11:50:27
ได้ละครับขอบคุณครับ สงสัย notepad++ ผมมีปัญหาตอนแรกก็เข้ารหัสแบบ UTF-8
เลยเปลี่ยนเป็น ansi และก็กลับมาเป้น UTF-8 ก็ใช้ได้เลย
ขอบคุณทุกท่านครับ  :wanwan017: