[PHP] เรื่อง error cookie ครับ

เริ่มโดย nokia201, 17 พฤษภาคม 2013, 19:53:49

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

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

nokia201

มันขึ้นแบบนี้ครับ
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:
ขายสคริปปั้มไลค์ตามเว็บดูหนังใช้กันสนใจ PM ครับ

normalblue

ได้ Include ไฟล์นี้ไปใช้หน้าอื่นหรือเปล่าครับ? ถ้า Include ไปแสดงก็ Show ไฟล์นั้นด้วย

ถ้าเฉพาะ Code ที่แสดง ผมว่ามันจะไป Error ตรงบรรทัด 20 มากกว่า เพราะไม่ได้มีการกำหนดค่าตัวแปล $user จู่ๆ ก็สั่ง Echo มันออกมา

thai2ads

ob_start(); ไว้บนสุด บรรทัดแรกเลยนะ
รับทำเว็บไซต์ เขียนระบบต่างๆตามที่ต้องการ (ยกเว้น 18+ กับการพนัน) ระบบมีปัญหาการใช้งานแจ้งพจได้เลยนะครับอย่าได้เกรงใจเพราะเดี๋ยวมันจะไม่รู้ปัญหา
[direct=http://www.designonshop.com]ออกแบบเว็บไซต์[/direct] | [direct=http://www.designonshop.com]รับทำเว็บไซต์[/direct] |

nokia201

ทำตามทั้งสองท่านแล้วก็ยังขึ้น
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:
ขายสคริปปั้มไลค์ตามเว็บดูหนังใช้กันสนใจ PM ครับ

nuvatchai

ถ้า cookie ยังทำงานแต่มี error ให้ใส่ @ หน้า function หรือบรรทัดไหนที่ไม่ต้องการให้มันขึ้น error ครับ เช่น @setcookie

MapTwoZa

#5
ใส่ ob_start() ไว้บรรทัดแรกสุด ของไฟล์แรกสุดที่มีการ run เช่น 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
Good code quality Developer :D

nokia201

ผมลองทำตามที่หลายๆท่านบอกละครับยังคง error
ใครก็ได้ลองเอาโค๊ดผมไปแล้วทำไม่ให้มันเกิด error หน่อยครับ  :wanwan017:

ขายสคริปปั้มไลค์ตามเว็บดูหนังใช้กันสนใจ PM ครับ

MapTwoZa

เอาไฟล์มาครับไม่ก็ copy code มาวางในบอร์ดก็ได้
Good code quality Developer :D

nokia201

โค๊ดเดิมแหละครับเพราะผมให้มันประมวลผลในหน้าเพจเดิมใช้ $_SERVER['PHP_SELF']
ผมลองใส่ ob_start(); ไว้ที่บรรดทัดแรกก็ยัง error ครับ คือผมกำลังฝึกใช้ cookie ครับ  :P
ขายสคริปปั้มไลค์ตามเว็บดูหนังใช้กันสนใจ PM ครับ

gubaaball

ถ้าใช้ dream เขียนโค้ดลองเข้าไปดูที่ Modify > Page Properties > Title/Encoding > เอาติ๊กถูกหน้าประโยค Include Unicode Signature (BOM) ออก

ลองดูน่ะครับเผื่อเป็นแบบที่ผมเคยเป็น  :P

iNdEpD

น่าจะเป็นที่ Dream ครับ ลองทำตามด้านบนเลยครับ เพราะผมเอาลง notepad++ ดูได้ปกตินะ
I'm Back .........

sbaydee

ถ้าไม่หายใช้ editplus แก้ encode เป็น UTF-8 ก็ได้ครับ

adidog

อ้างถึงจาก: sbaydee ใน 18 พฤษภาคม 2013, 00:56:42
ถ้าไม่หายใช้ editplus แก้ encode เป็น UTF-8 ก็ได้ครับ
ตามนี้ครับ น่าจะเกิดจากปัญหา encode
Certain Dri [direct=http://www.ishiclub.com/]Certain Dri[/direct]
คุณแม่มือใหม่ [direct=http://www.mamyget.com/]คุณแม่มือใหม่[/direct]

nokia201

ได้ละครับขอบคุณครับ สงสัย notepad++ ผมมีปัญหาตอนแรกก็เข้ารหัสแบบ UTF-8
เลยเปลี่ยนเป็น ansi และก็กลับมาเป้น UTF-8 ก็ใช้ได้เลย
ขอบคุณทุกท่านครับ  :wanwan017:
ขายสคริปปั้มไลค์ตามเว็บดูหนังใช้กันสนใจ PM ครับ