_JEXEC คืออะไร

แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
M004
PHP VIP Members
PHP VIP Members
โพสต์: 1323
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

_JEXEC คืออะไร

โพสต์ที่ยังไม่ได้อ่าน โดย M004 »

_JEXEC คือตัวแปรค่าคงที่ตัวหนึ่งเท่านั้นเอง หลายคนเมื่อดูที่บรรทัดต้นๆ ของไฟล์ Components, Modules, Plugins, Templates หรือไฟล์อื่นๆ ซึ่งทำงานภายใต้ Joomla จะเห็นตัวแปรนี้ที่บรรทัดแรกๆ ยกตัวอย่างไฟล์ JOOMLA_ROOT/components/com_user/user.php

โค้ด: เลือกทั้งหมด

defined( '_JEXEC' ) or die( 'Restricted access' );
คำสั่งข้างต้นเป็นการตรวจสอบการเรียกใช้งานไฟล์ user.php ว่าถูกเรียกโดย Joomla จริงๆ หรือไม่ ถ้าไม่ใช่จะออกจากการทำงานและแจ้งข้อความโดยแสดงออกมาทางหน้าเว็บไซด์ว่า “Restricted access” เช่นเราเรียกใช้งานไฟล์นี้โดยตรง ผ่าน URL ดังนี้

โค้ด: เลือกทั้งหมด

http://www.deeextension.com/components/com_user/user.php
ผลลัพธ์ที่ได้ หน้าเว็บไซด์จะแสดงข้อมูล “Restricted access”
แต่ถ้าเราเรียกใช้งาน user component อย่างถูกต้อง จะเรียกใช้งานผ่าน URL ดังนี้

โค้ด: เลือกทั้งหมด

http://www.mywebsite.com/index.php?option=com_user
คำถามต่อไปก็คือ Joomla จะรู้ได้อย่างไรว่าการเรียกใช้งาน ถูกเรียกใช้งานผ่าน Joomla หรือเรียกใช้งานผ่านไฟล์โดยตรง
ตอบได้ว่า Joomla จะตรวจสอบว่าตัวแปร _JEXEC มีการประกาศตัวแปรไว้แล้วหรือไม่ ผ่านคำสั่ง PHP คือ defined() และประกาศตัวแปรผ่านคำสั่ง define()
ซึ่ง Joomla จะมีการประกาศตัวแปร _JEXEC ไว้ที่ไฟล์ index.php คือ

โค้ด: เลือกทั้งหมด

define( '_JEXEC', 1 );
สรุปได้ว่า เมื่อเราเรียกใช้งาน Component ผ่าน URL อย่างถูกต้อง การทำงานของ Joomla จะเรียกใช้งานไฟล์ index.php ก่อนเป็นอันดับแรก เมื่อ component อื่นๆมีการเขียนคำสั่งในการตรวจสอบตัวแปร _JEXEC ไว้ ถ้าเรียกใช้งานผ่าน URL อย่างถูกต้อง Joomla จึงจะทำงานได้โดยไม่หยุดการทำงานของคำสั่ง die( 'Restricted access' );

ข้อมูลจาก
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41344
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: _JEXEC คืออะไร

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

สรุปความรู้ ที่ได้จากงาน หรือ ที่พี่ๆ สอน
ต้องสรุปและเขียนขึ้นมาเอง
ไม่เอา บทความจากที่อื่น
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
M004
PHP VIP Members
PHP VIP Members
โพสต์: 1323
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

Re: _JEXEC คืออะไร

โพสต์ที่ยังไม่ได้อ่าน โดย M004 »

ครับ
ตอบกลับโพส

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 54