_JEXEC คืออะไร

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

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

User avatar
M004
PHP VIP Members
PHP VIP Members
Posts: 1323
Joined: 01/01/1970 7:00 am

_JEXEC คืออะไร

Post by M004 » 26/04/2013 7:24 pm

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

ข้อมูลจาก

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22511
Joined: 22/09/2008 6:18 pm
Contact:

Re: _JEXEC คืออะไร

Post by mindphp » 26/04/2013 8:01 pm

สรุปความรู้ ที่ได้จากงาน หรือ ที่พี่ๆ สอน
ต้องสรุปและเขียนขึ้นมาเอง
ไม่เอา บทความจากที่อื่น
ติดตาม 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

User avatar
M004
PHP VIP Members
PHP VIP Members
Posts: 1323
Joined: 01/01/1970 7:00 am

Re: _JEXEC คืออะไร

Post by M004 » 26/04/2013 10:47 pm

ครับ

Post Reply

Return to “Joomla Developing Knowledge”

Users browsing this forum: No registered users and 2 guests