Free Hosting

วันอาทิตย์ที่ 29 มีนาคม พ.ศ. 2558

การเขียน PHP เพื่อให้ URL ซ่อนชื่อไฟล์


การเขียนโปรแกรม PHP ให้ URL ซ่อนชื่อของไฟล์
สวัสดีครับวันนี้พอดีมีคนโทรมาถามผม เรื่องการทำ URL ซ่อนไฟล์ว่ากันทำยังไง ผมเลยเอามาเขียนบทความให้อ่านกันซะเลยครับ 
การซ่อนไฟล์นี้มันดียัง ?
 การซ่อนไฟล์ข้อดีของมัน อย่างแรกเลยสามารถซ่อนไฟล์ที่อยู่ในไดเร็คทรอรี่ต่างๆ บนเว็บได้ โดยที่ผู้ใช้งานเปิดเข้ามาในเว็บเรา จะได้ไม่ทราบว่าที่อยู่ของไฟล์นี้์จริงๆอยู่ที่ไหน อย่างที่สองก็คือสามารถทำให้ URL นั้นสั้นลง จำได้ง่าย อย่างที่สามก็สามารถทำให้เว็บที่อาจจะไม่มีโปรแกรมมิ่งบนเว็บเลย เอาไปใช้งานได้เหมือนราวกับว่าเว็บไซต์ของเรานั้น มีระบบโปรแกรมซับซ้อนมากมาย ทำให้น่าเชื่อถือยิ่งขึ้น(เหมาะสำหรับเว็บไซต์ประเภทพวก โชว์ผลงานของตัวเองPortfolio หรือ พวกรับทำเว็บไซตต่างๆ)

เอาละครับ มารู้จักฟังก์ชั่นและคำสั่งต่างๆที่ใช้กันในบทความนี้กันก่อนครับ….

ฟังก์ชั้นเกี่ยวกับตัวแปร
isset(ชื่อตัวแปร) เป็นฟังก์ชั่นที่เอาไว้ตรวจสอบค่าของตัวแปรว่ามีอยู่จริงหรือไม่ ถ้ามีจะส่งคืนค่าจริงมาให้ ถ้าไม่มีจะส่งคืนค่าเท็จออกมา
รูปแบบการใช้
<?php
if(isset(ตัวแปร)) {
มีค่าตัวแปรอยู่จริง
}ELSE {
ไม่มีค่าตัวแปรอยู่จริง

} // ปิด else
?>

คำสั่งในการควบคุมโปรแกรม
คำสั่ง switch เอาไว้ช่วยในการเปรียบเทียบตัวแปรตัวนึง กับค่าหลายๆค่า ซึ่งเราจะสะดวกมาก เมื่อลองเปรียบเทียบกับการเอา if มาใช้หลายๆชุด อาจจะทำให้สับสนในการเขียนโปรแกรมได้
รูปแบบการใช้
<?php
switch (ตัวแปร)
{
case ค่าของตัวแปร :
คำสั่งที่ทำงานภายใน Case นี้
break;
case ค่าของตัวแปร :
คำสั่งที่ทำงานภายใน Case นี้
break;

} // switch
?>
เมื่อนำคำสั่งและฟังก์ชั่นมาใช้งานได้แล้ว จะมีสิ่งที่เพิ่มมาในโค้ดโปรแกรมนี้อีกตัวคือ ตัวดำเนินการ 
ตัวดำเนินการที่ว่านี้คือ !
 (นิเสธ) เป็นตัวดำเนินการทางตรรกะเปรียบเทียบค่าจริง/ค่าเท็จ สำหรับ ! (นิเสธ) นี้จะให้ค่าจริงเมื่อค่าของตัวแปรนั้นเป็นเท็จ คือไม่มีค่า และจะให้ค่าเท็จเมื่อตัวแปรนั้นเป็นจริง คือมีค่าอยู่จริง 
สรุปง่ายคือ ! (นิเสธ) เป็นการให้ค่าตรงกันข้ามกันครับ
รูปแบบการใช้

!$ตัวแปร
มาอธิบายโค้ดของโปรแกรมนี้กันก่อนนะครับ
<?php
//////////////เมนูหลัก//////////////////////////////////
if(!isset($page)) {//ถ้าตัวแปรไม่ได้รับค่าใดๆ จะทำในคำสั่งด้านล่างนี้ครับ
/* หน้าหลักครับ เมื่อเข้ามา สมมุติ เช่น http://www.yourdomain.com/ ก็จะเจอหน้านี้เลย เพราะว่ามันไม่ได้รับค่าตัวแปรใดๆ*/
include “main.php”;//เป็นการดึงเอาหน้า Webpage หลักที่เราต้องการให้โชว์เมื่อเข้ามาหน้าแรก
}ELSE {/*เมื่อมันได้รับค่ามา จะเข้ามาทำในเงื่อนไขข้างล่างนี้นะครับ อย่าสับสนนะเรื่อง isset เพราะตัวอย่างนี้ได้เอา ! นิเสธ เข้ามาใช้งาน จึงทำให้ isset ทำงานตรงกันข้ามกัน เป็นจริงออกเท็จ เป็นเท็จออกจริง*/
SWITCH ($page) {//จะทำการเปรียบเทียบค่าของตัวแปรที่ได้รับมาว่า ถ้าตรงกับ Case ไหน ก็ให้ทำงานคำสั่งภายใน Case นั้นๆ
/////////// หน้า Home //////////////////
case mainpage : include “main.php”;
break;
/////////// หน้า News //////////////////
case news : include “news.html”;
break;
/////////// หน้า FAQ //////////////////
case faq : include “faq.html”;
break;
/////////// หน้า Download //////////////////
case download : include “download.html”;
break;
/////////// หน้า Product //////////////////
case product : include “product.php”;
break;
/////////// หน้า Support //////////////////
case support : include “support.html”;
break;
/////////// หน้า Contact US //////////////////
case contact : include “contact.html”;
break;
} // ปิดSWITCH
} //ปิด ELSE
?>
โปรแกรมข้างบนนี้ จะทำงานอยู่ในไฟล์ index.php หลักของไดเร็คทรอรี่ หรือของเว็บไซต์นั้นๆ เมื่อเวลาเราจะเรียกใช้งาน ไฟล์ เราจะไม่เรียกจากไฟล์โดยตรง เพื่่อที่จะทำการซ่อนไฟล์ หรือทำให้ Url ของการเรียกใช้งานสั้นลง จะได้จำกันง่ายๆ เช่น http://www.yourdomain.com/?page=news เป็นต้น
สำหรับการเอาไปทำลิงค์ก็ง่ายๆเลยครับ ตัวอย่างเช่น
<a href=”?page=new”>ข่าวสาร</a> หรือ  <a href=”http://yourdomain.com/?page=new”>ข่าวสาร</a>เป็นต้น
แล้วเปิดเว็บบราวเซอร์รันโปรแกรมตัวนี้ดู  (ดูตัวอย่างคลิ๊กที่นี่)
เมื่อโปรแกรมมันเข้าเงื่อนไขคือ ตัวแปรไม่มีค่าจะเป็นจริง จะดึงไฟล์ main.php ขึ้นมาโชว์หน้าหลัก ดังรูปข้างล่างนี้ครับ
ให้เราลองเลือกคลิ๊กเมนูซักตัวเพื่อดูการทำงานของโปรแกรมต่อ ในที่นี้ผมเลือกที่ Support
ที่นี้โปรแกรมจะทำการส่งค่าให้ตัวแปร $page แล้วทำให้เข้าเงื่อนไขอีกว่า ถ้าตัวแปรนี้มีค่าให้เป็นเท็จ แต่เนื่องด้วยว่า เป็นเท็จนี้จะเข้าไปยังเงื่อนไขอื่นๆที่อยู่ภายในคำสั่ง switch อีกต่อ แล้วทำการเปรียบเทียบค่าของตัวแปรว่าตรงกับ Case ไหน ก็ให้มันทำงานใน Case นั้นๆ
ดังตัวอย่างรูปข้างล่างนี้ จะให้ค่า page=support มันก็จะเข้าไปเช็คว่า ภายใต้ตัวแปร page เงื่อนไข Case ไหนเป็น support ให้ทำงานใน Case นั้นๆ
รูปข้างล่างนี้เป็นผลจากที่เราส่งค่า support ให้กับตัวแปร page แล้วสั่งให้มันทำตามเงื่อนไข ไปเรียกไฟล์ support.php ขึ้นมาโชว์
แนะนำเพิ่มเติม เรื่องของการ Include() ไฟล์
การ include นั้นจะทำได้เฉพาะในไฟล์ที่เป็น .php เท่านั้น .html จะทำไม่ได้ แต่ไฟล์ที่ Iclude มาใส่ในไฟล์ .php นั้น จะเป็นไฟล์ .php หรือ .html ก็ได้ไม่มีปัญหา เช่น
สมมุติเช่น
ไฟล์นี้เป็น .php
 (รูปแบบนี้ถูก)
<?php
include(“test.php”);
include(“test.html”);
?>
ไฟล์นี้เป็น .html (รูปแบบนี้ผิด)
<?php
include(“test.php”);
include(“test.html”);
?>
เป็นต้น

และอีกอย่างนึงปัญหาเรื่อง path ของรูป
สมมุติอีกกรณีนึง ให้ดูโครงสร้างโฟลเดอร์ก่อนนะครับ

|___gallery
|       |_gallery.php
|___images
|       |_picture01.jpg
|       |_picture02.jpg
|       |_picture03.jpg
|
|____main.php
|____news.php
|____index.php
เวลาเราเรียกใช้งานคือ http://www.yourdomain.com/?page=news หรือ http://www.yourdomain.com/?page=mainpage แบบนี้การเรียกดึงรูปจะไม่มีปัญหาเพราะว่าไฟล์ news.php และ main.php อยู่ข้างนอกสุดของไดเร็คทรอรี่ การเรียกให้งานรูปก็ปกติ คือ <img src=”images/picture01.jpg”>
แต่ที่มันมีปัญหาก็คือการเรียกใช้ gallery.php ไฟล์มันอยู่ข้างในโฟลเดอร์ของมันเอง gallery/gallery.php เวลาเราเรียกใช้งานคือ http://www.yourdomain.com/?page=gallery โค้ดในการ include ของไฟล์ index.php <?php include(“gallery/gallery.php”); ?> มันจะดึงข้อมูลมาได้ก็จริง แต่รูปที่มันดึงมาจะไม่ถูกต้อง มันจะไม่โชว์รูป เช่น ปกติถ้าเราไม่ใช้ URL ในการ ซ่อนไฟล์ gallery.php จะเรียกใช้งานรูปข้างนอกโฟลเดอรก็์คือ <img src=”../images/picture01.jpg”> แต่เมื่อเราเอามาใช้ในการทำ URL ซ่อนไฟล์    Path ของไฟล์รูปนั้น จะต้องทำการเปลี่ยนเป็น <img src=”images/picture01.jpg”> ด้วย เพราะว่าเราใช้ ไฟล์ index.php ในการเรียกใช้งาน ไฟล์ในไดเร็คทรอรี่ต่างๆ ไฟล์ของรูปที่เราเรียกก็ต้องเปรียบเสมือนว่ามันอยู่ในไฟล์ index นี้ด้วย พอเข้าใจมั้ยครับ
เอาละครับ ลองทำกันดู เข้าใจหรือไม่เข้าใจกันก็มาบอกกันด้วยนะ อย่าลืมดาวน์โหลดโค้ดโปรแกรมตัวอย่างด้วยละ ถ้างงลองเปิดไฟล์ index.php ในนั้นดู ผมมีคำอธิบายเอาไว้ให้แล้วนะครับ เจอกันใหม่ในบทความวันพรุ่งนี้ ขอบคุณทุกท่านที่เข้ามาอ่านบทความของผมกันทุกวัน สวัสดีครับ บาย…….

0 ความคิดเห็น:

แสดงความคิดเห็น


พื้นที่โฆษณา

Free Hosting

พื้นที่โฆษณา

Free Hosting
 

Copyright © สอนเขียนโปรแกรม html php css Java SQL jQuery XML Ajax Design by ScriptMasterWebDesign | Theme by ScriptMasterWebDesign | Powered by HosTing