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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingheader("location:"); ไม่ไปเป็นเพราะอะไร
หน้า: 1 [2]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: header("location:"); ไม่ไปเป็นเพราะอะไร  (อ่าน 8205 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
gootooyoo
ก๊วนเสียว
*

พลังน้ำใจ: 27
ออฟไลน์ ออฟไลน์

กระทู้: 464



ดูรายละเอียด เว็บไซต์
« ตอบ #20 เมื่อ: 20 ตุลาคม 2010, 10:20:17 »

ตรงไฟล์อาจติด permission ก็ได้ครับ
บันทึกการเข้า

ขวากหนาม ที่เราต้องข้ามผ่าน ถึงจะเจ็บก็จะไป (\◣_◢/) 
❤ 
yuckyai
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 31



ดูรายละเอียด
« ตอบ #21 เมื่อ: 20 ตุลาคม 2010, 10:34:20 »

<?php
$ab=$_POST['a'];
if($ab){
   @header("location:c.php");
}
?>



แต่ถ้าจำไม่ผิด header ห้ามมีอะไร อยู่ข้างบนมัน นะครับ  ลองดูแล้วกัน


มั่ว Embarrassed

ลองแล้วครับไม่ได้ครับ
บันทึกการเข้า

- ต้องลองถึงรู้ -
Sabaidee
คนรักเสียว
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 157



ดูรายละเอียด
« ตอบ #22 เมื่อ: 20 ตุลาคม 2010, 10:42:14 »

โค๊ด:
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header(&#39;Location: http://www.example.com/&#39;);
?>

แล้วถ้าลองสร้างหน้าใหม่ .php แล้วลองใส่ code 3 บรรทัดนี่ลองเคาะดูมันจะไป http://www.example.com ไหมครับ
จาก Manual PHP
บันทึกการเข้า

.
yuckyai
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 31



ดูรายละเอียด
« ตอบ #23 เมื่อ: 20 ตุลาคม 2010, 10:59:56 »

โค๊ด:
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header(&#39;Location: http://www.example.com/&#39;);
?>

แล้วถ้าลองสร้างหน้าใหม่ .php แล้วลองใส่ code 3 บรรทัดนี่ลองเคาะดูมันจะไป http://www.example.com ไหมครับ
จาก Manual PHP


ไปปรกติครับถ้าเรียกไฟล์นั้นโดยตรงจะไปปรกติครับ
ที่ผมเจอปัญหาก็คือเป็นกรณีที่ส่งมาจากอีกไฟล์ แบบตัวอย่างที่ทำนะครับ a ส่งข้อมูล b รับข้อมูลประมวลผลแล้วส่งต่อไป c แสดงผล กรณีนี้ไม่ได้ครับ
บันทึกการเข้า

- ต้องลองถึงรู้ -
gootooyoo
ก๊วนเสียว
*

พลังน้ำใจ: 27
ออฟไลน์ ออฟไลน์

กระทู้: 464



ดูรายละเอียด เว็บไซต์
« ตอบ #24 เมื่อ: 20 ตุลาคม 2010, 11:03:36 »

โค๊ด:
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header(&#39;Location: http://www.example.com/&#39;);
?>

แล้วถ้าลองสร้างหน้าใหม่ .php แล้วลองใส่ code 3 บรรทัดนี่ลองเคาะดูมันจะไป http://www.example.com ไหมครับ
จาก Manual PHP


ลองlink ไปเวปอื่นครับ ดูว่าได้มัย
มันจะมี
//Set buffer in memory before  to send cilent
ob_start();
...
...
...
...
ob_end_flush();
exit;  
ลองปิดหัวท้ายดูครับ
ตรงนี้บ้างทีก็งงครับ
มันเกี่ยวกับ clear cach


ปล. ถ้าไม่ได้จริงๆ
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=http://www.example.com/test.html">
บันทึกการเข้า

ขวากหนาม ที่เราต้องข้ามผ่าน ถึงจะเจ็บก็จะไป (\◣_◢/) 
❤ 
popper_p
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 307



ดูรายละเอียด
« ตอบ #25 เมื่อ: 20 ตุลาคม 2010, 11:04:59 »

โค๊ด:
<?php
$ab
=$_POST['a'];
if(
$ab){
   
header("location:c.php");
   echo 
'if OK?';
}else{
   echo 
'if not OK?';
}
?>

ลองดูหน่อย ว่ามันแสดงอะไร
บันทึกการเข้า
yuckyai
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 31



ดูรายละเอียด
« ตอบ #26 เมื่อ: 20 ตุลาคม 2010, 11:05:33 »

ตรงไฟล์อาจติด permission ก็ได้ครับ

ที่โฟลเดอร์เป็น 755
ไฟล์เป็น 644
บันทึกการเข้า

- ต้องลองถึงรู้ -
yuckyai
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 31



ดูรายละเอียด
« ตอบ #27 เมื่อ: 20 ตุลาคม 2010, 11:22:01 »

โค๊ด:
<?php
$ab
=$_POST['a'];
if(
$ab){
   
header("location:c.php");
   echo 
'if OK?';
}else{
   echo 
'if not OK?';
}
?>

ลองดูหน่อย ว่ามันแสดงอะไร

ถ้าแบบโค้ดที่ให้มาไม่แสดงครับ
ลองแก้เป็นแบบนี้ขึ้น if OK?
<?php
$ab=$_POST['a'];
if($ab){
echo "if OK?";
}else{
echo "if not OK?";
}
?>
บันทึกการเข้า

- ต้องลองถึงรู้ -
yuckyai
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 31



ดูรายละเอียด
« ตอบ #28 เมื่อ: 20 ตุลาคม 2010, 11:26:32 »

โค๊ด:
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header(&#39;Location: http://www.example.com/&#39;);
?>

แล้วถ้าลองสร้างหน้าใหม่ .php แล้วลองใส่ code 3 บรรทัดนี่ลองเคาะดูมันจะไป http://www.example.com ไหมครับ
จาก Manual PHP


ลองlink ไปเวปอื่นครับ ดูว่าได้มัย
มันจะมี
//Set buffer in memory before  to send cilent
ob_start();
...
...
...
...
ob_end_flush();
exit;  
ลองปิดหัวท้ายดูครับ
ตรงนี้บ้างทีก็งงครับ
มันเกี่ยวกับ clear cach


ปล. ถ้าไม่ได้จริงๆ
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=http://www.example.com/test.html">



ลองแล้วครับ ob_start(); ไม่ได้ครับ ขอบคุณครับ
บันทึกการเข้า

- ต้องลองถึงรู้ -
popper_p
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 307



ดูรายละเอียด
« ตอบ #29 เมื่อ: 20 ตุลาคม 2010, 11:46:33 »

โค๊ด:
<?php
$ab
=$_POST['a'];
if(
$ab){
   
header("location:c.php");
   echo 
'if OK?';
}else{
   echo 
'if not OK?';
}
?>

ลองดูหน่อย ว่ามันแสดงอะไร

ถ้าแบบโค้ดที่ให้มาไม่แสดงครับ
ลองแก้เป็นแบบนี้ขึ้น if OK?
<?php
$ab=$_POST['a'];
if($ab){
echo "if OK?";
}else{
echo "if not OK?";
}
?>

แสดงว่ามันทำตรง header แล้วแต่ทำไมไม่ไปหว่า

โค๊ด:
<?php
error_reporting
(E_ALL);
$ab=$_POST['a'];
if(
$ab){
   
header("location:c.php"true301);
   echo 
'if OK?';
}else{
   echo 
'if not OK?';
}
?>


ลองเพิ่ม 301 redirect ดู
บันทึกการเข้า
vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 988



ดูรายละเอียด เว็บไซต์
« ตอบ #30 เมื่อ: 20 ตุลาคม 2010, 12:43:30 »

โค๊ด:
<form id="form1" name="form1" method="post" action="b.php">
  <input name="a" type="text" id="a" />
  <input type="submit" name="Submit" value="Submit" />
</form>
a.php

โค๊ด:
<?php
$ab
=$_POST["a"];
if( isset(
$ab) ){
  
header("Location: http://localhost/c.php");
}
?>

b.php

แบบนี้ปกติก็น่าจะ redirect ไปแล้วนะครับ เพราะส่วนบนของ header() ไม่มีการ echo หรือ output ใดๆออกมา
และไฟล์ c.php ต้องอยู่ที่เดียวกันกับ b.php ครบสูตรก็เอา http://localhost/ ออกได้ และก็น่าจะ redirect ไปแล้ว

ลองเช็คละเอียดๆดูครับว่ามีขาดตกบกพร่องตรงไหนมั้ย?

ผมขอแนะนำการตั้งค่า php สำหรับพัฒนาเว็บด้วยนะครับ ลองทำดู แล้วการใช้งานน่าจะราบรื่นขึ้น
โค๊ด:
http://www.okvee.net/2010/09/08/how-to-config-php-ini-for-development/
บันทึกการเข้า

ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #31 เมื่อ: 22 ตุลาคม 2010, 22:03:39 »

เพราะ save แบบ UTF-8 with BOM หรือเปล่า มันเลยมีอักขระ ถูกพ่นออกไปก่อนที่จะเป็น <?php
http://www.thaiseoboard.com/index.php?topic=73791.0
บันทึกการเข้า
dreamer
คนรักเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 134



ดูรายละเอียด
« ตอบ #32 เมื่อ: 24 ตุลาคม 2010, 21:14:30 »

header("Location: c.php");
exit();

ผมเคยใช้วิธีนี้แล้วได้ครับ
บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,886



ดูรายละเอียด
« ตอบ #33 เมื่อ: 25 ตุลาคม 2010, 21:11:03 »

เพราะ save แบบ UTF-8 with BOM หรือเปล่า มันเลยมีอักขระ ถูกพ่นออกไปก่อนที่จะเป็น <?php
http://www.thaiseoboard.com/index.php?topic=73791.0
ยกมืออีกเสียงครับ 0-0/
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
moohooooo
คนรักเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 189



ดูรายละเอียด
« ตอบ #34 เมื่อ: 26 ตุลาคม 2010, 04:21:13 »

เพราะ save แบบ UTF-8 with BOM หรือเปล่า มันเลยมีอักขระ ถูกพ่นออกไปก่อนที่จะเป็น <?php
http://www.thaiseoboard.com/index.php?topic=73791.0
ยกมืออีกเสียงครับ 0-0/


ชัวร์ครับ
บันทึกการเข้า
Pang25441
ก๊วนเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 269



ดูรายละเอียด
« ตอบ #35 เมื่อ: 26 ตุลาคม 2010, 05:30:11 »

โค๊ด:
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header(&#39;Location: http://www.example.com/&#39;);
?>

แล้วถ้าลองสร้างหน้าใหม่ .php แล้วลองใส่ code 3 บรรทัดนี่ลองเคาะดูมันจะไป http://www.example.com ไหมครับ
จาก Manual PHP


ลองlink ไปเวปอื่นครับ ดูว่าได้มัย
มันจะมี
//Set buffer in memory before  to send cilent
ob_start();
...
...
...
...
ob_end_flush();
exit;  
ลองปิดหัวท้ายดูครับ
ตรงนี้บ้างทีก็งงครับ
มันเกี่ยวกับ clear cach


ปล. ถ้าไม่ได้จริงๆ
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=http://www.example.com/test.html">

wanwan003 ผมว่าคำตอบนี้ใช่เลย
เท่าที่เคยเขียนมา เมื่อมีการส่งค่าใดๆก่อนคำสั่ง header (หรือ session 9ฯ9) มันจะบอกว่า header ถูกส่งไปแล้ว

ดังนั้น เราจึงต้องใช้ ob_start(); (เอาให้อยู่บนสุดเลย ก่อนคำสั่งใดๆ) และปิดด้วย ob_end_flush(); .ในบรรทัดสุดท้าย
 wanwan017 หลังจากนั้นผมก็ไม่เคยเจอปัญหา header already sent อีกเลย... wanwan012

(ถ้าใช้ include ก็ต้องใช้ก่อนที่จะ include นะเออ T^T)
-------------------------------------------+
ไฟล์ b.php
<?
ob_start();
$ab=$_POST['a'];
if($ab){
header("location: c.php");
}
ob_end_flush();
?>
 wanwan009
« แก้ไขครั้งสุดท้าย: 26 ตุลาคม 2010, 05:39:52 โดย pang25441 » บันทึกการเข้า

Click!!
ปรวชฺชานุปสฺสิสฺส นิจฺจํ อุชฺฌานสญฺญิโน
อาสวา ตสฺส วฑฺฒนฺติ อารา โส อาสวกฺขยา

คนที่เห็นแต่โทษผู้อื่น คอยแต่เพ่งโทษนั้น
อาสวะก็เพิ่มพูน เขายังไกลจากความสิ้นอาสวะ
[ขุ.ธ. ๒๕/๔๙]
kiak
ก๊วนเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 368



ดูรายละเอียด
« ตอบ #36 เมื่อ: 26 ตุลาคม 2010, 18:58:15 »

ท่าน พิมค่า ใน text field หรือยังครับ เพราะว่า script
โค๊ด:
$ab=$_POST['a'];
if($ab){
header("location: c.php");
}

นั่นคือ ถ้าเกิดว่า มีab เข้ามา ที่ไม่ใช่ค่า 0 false มันถึงจะรีไดเรกครับ

ถ้าเกิดอยากรู้ว่ามีค่าเข้ามาหรือเปล่า เฉยๆ ใช้
โค๊ด:
if(isempty($ab)){
rediect }
ครับ
บันทึกการเข้า

หน้า: 1 [2]   ขึ้นบน
พิมพ์