ถามเกี่ยวกับ function นิดหนึ่งครับ
คือว่า ผมทดสอบใช้ function file_exists(); ครับแล้วมีปัญหาดังนี้
มันไม่ยอมตรวจสอบให้ในขณะที่เป็น http://www.aaaa.com ครับ
ตัวอย่างดังนี้
$URL="http://www.aaaa.com"; // ../test/web
if(file_exists("$URL/images/$re[image]")==1){
echo"xxxx";
}
ตามตัวอย่าง ถ้ามันตรวจสอบได้ค่าของมันจะเป็น 1 แต่ถ้าเปลี่ยน $URL เป็นเรียกจาก Folder โดยตรงจะได้ตามที่ต้องการคือ 1
แต่พอเปลี่ยน $URL เป็น http://www.aaaa.com กับไม่มีค่าอะไรออกมาเลย พอดีผมจำเป็นที่จะต้องเรียกใช้ไฟล์งานข้าม URL ครับ
งง หรือเปล่าครับ
คำสั่ง file ใช้สำหรับ อ่านค่าไฟล์มาเก็บไว้ในตัวแปร array
อ่านเพิ่มเติม
http://www.ninenik.com/php-manual/function.file.html
ส่านฟังก์ชัน is_array ก็ใช้ตรวจสอบว่า เป็น array หรือไม่
ซึ่งถ้าคำสั่ง file อ่านค่าไฟล์มาแล้วก็จะเป็นในตัวแปร array และก็จะคืนค่าเป็น array จากนั้นก็เช็คด้วย is_array ว่าคืนค่าเป็น array หรือไม่ ถ้าเป็น array แสดงว่ามีไฟล์นี้อยู่จริง
อ่านเพิ่มเติม
http://www.ninenik.com/php-manual/function.is-array.html
ขอบคุณครับผมได้ความรู้ใหม่เลยพอดีไม่เคยใช้ is_array() กับ file() ครับ ช่วยอธิบายได้ฟังหน่อยครับมันหรืออะไรครับ
ผมใช้คำสั่งนี้ครับ
if(is_array(@file($url_chekc))){
น่าจะเป็นข้อจำกัดของ function file_exists ไม่อนุญาตให้ใช้งานแบบ cross domain ส่วนถ้าอยู่ใน domain เดียวกัน ไม่แน่จะว่าสามารถใช้ได้หรือปล่าว ให้ลองทดสอบผ่าน server ดู
<?php
echo file_exists("http://www.youdomain.com/images/xxx.gif");
?>
กับ
<?php
echo file_exists("http://www.otherdomain.com/images/xxx2.gif");
?>
ถ้า domain ของเราเรียกผ่าน path url ใช้งานได้ และเรียกผ่าน domain อื่นใช้งานไม่ได้ แสดงว่าน่าจะเป็นเงื่อนไขการใช้งานแบบ cross domain ของฟังก์ชันที่ไม่รองรับ
หรือไม่ได้ทั้งสองกรณี น่าจะเป็นข้อจำกัดของ ฟังก์ชันที่ไม่รองรับ การกำหนดในรูปแบบ url
แต่ถ้าต้องการการตรวจสอบไฟล์ผ่าน cross domain น่าจะมีอีกหลายวิธี แนะนำ 2 วิธีด้านล่าง โดยวิธีที่ 2 จะเร็วกว่าวิธีแรก แต่ไม่มากนัก
วิธีที่ 1
<?php
$url_chekc="http://www.ninenik.com/images/logo_01_Sun.gif";
if(is_array(@file($url_chekc))){
echo "Found";
echo "<br>";
}
?>
วิธีที่ 2
<?php
$url_chekc="http://www.ninenik.com/images/logo_01_Su0n.gif";
$g_header=get_headers($url_chekc);
if(preg_match('@200 ok@ui',$g_header[0])){
echo "Found";
echo "<br>";
}
?>
