|
|
|
code ทำงานจนจบ ทั้งๆที่สั่ง redirect ก่อน อยากทราบแนวทางแก้ไข หรือแนะนำวิธีหน่อยครับ |
|
|
|
|
|
|
|
exit เพื่อข้ามการทำงานบรรทัดล่าง
|
|
|
|
|
Date :
2022-03-07 07:31:14 |
By :
009 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ขอบคุณมากครับ
แสดงว่าการ redirect ตรงต้นโค้ด ไม่ได้แปลว่า โค้ดข้างล่างจะไม่ทำงานต่อ
|
|
|
|
|
Date :
2022-03-07 09:40:15 |
By :
joedothack |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
if(!$_SESSION['USERNAME']){ //ตรวจสอบการล็อกอิน
?>
<script type="text/javascript">
window.location="index.php";
</script>
<?php
}
ฝั่ง Server เรียกว่า echo Text ดีกว่าครับ ไม่ใช่การสั่ง redirect ที่ฝั่ง server
คำสั่ง redirect และ หยุด process
Code (PHP)
die(header("Location: add-job.php"));
// หรือ
exit(header("Location: add-job.php"));
// หรือ
exit('<script type="text/javascript">
window.location="index.php";
</script>');
// หรือ
echo '<script type="text/javascript">
window.location="index.php";
</script>';
exit;
|
|
|
|
|
Date :
2022-03-07 14:33:59 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอจะเข้าใจเลยครับ คือ คำสั่ง javascript มันทำงานฝั่ง client คือทำงานหลังจาก ฝั่ง server ทำงานเสร็จ
เพราะ ฉนั้น ฝั่ง server แค่ เห็น window.location เป็น text ตัวนึงเท่านั้นที่ส่งไปให้ client จึงไม่ได้หยุดการทำงาน
ปกติผมดูแค่ sequen ของโค้ด ลืมนึกเรื่องนี้อีกชั้นนึง
ขอบคุณมากๆครับ
|
|
|
|
|
Date :
2022-03-08 00:23:09 |
By :
joedothack |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ใช่แค่ JS นะครับ
ลองดูโค้ด คห. 3 อย่างที่คุณ Chai เขียนไว้
ต่อให้ใช้ redirect ฝั่ง PHP ก็ต้องสั่งหยุดทำงาน ถ้าจะไม่ให้ทำต่อแล้ว
ยกตัวอย่าง
Code (PHP)
<?php
$someCondition = true;// สมมุติว่าสั่งทำงานอะไรสักอย่างแล้วเก็บเงื่อนไขใส่ตัวแปรนี้
if (true === $somCondition) {
// ถ้าเงื่อนไขบางอย่างในตัวแปรนั้นเป็นจริง
// สั่ง redirect ด้วยการส่ง header ออกไป
header('Location: newpage.php');
}
// ทดลองเขียนอะไรสักอย่างลงไฟล์ txt.
file_put_contents(__DIR__ . '/test.txt', 'hello', FILE_APPEND);
// ส่ง body ออกไป
echo 'hello world';
จากตัวอย่าง คำสั่ง redirect ด้วย header จะเป็นการส่งค่า header ออกไปเท่านั้นเอง.
สมมุติว่ามีการ output buffer นั่นก็หมายความว่าทั้งไฟล์นี้จะต้องทำงานเสร็จก่อน จึงจะส่ง header พร้อมทั้ง body คือ hello world ออกไป.
หรือสมมุติว่าไม่มีการ output buffer แต่สั่งให้มีการส่ง header ออกไปทันทีภายใน if ส่วนข้างล่างที่เขียนไฟล์ txt และส่ง body ก็จะยังทำงานต่อไปอีกอยู่ดี เพราะการส่ง header ออกไปยังเบราว์เซอร์ผู้ใช้ไม่ได้ทำให้โค้ดหน้านี้หยุดทำงาน.
ด้วยเหตุนี้คำสั่งหยุดทำงานจึงจำเป็น ถ้าเราออกแบบมาว่าให้มัน redirect แล้วส่วนที่เหลือข้างล่างไม่ต้องทำงานอะไรอีก.
ก็ย้อนไปดูคห. 3 อีกครั้ง
|
|
|
|
|
Date :
2022-03-08 08:57:54 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|