-
ผิดตรงไหนอ่ะ
<?
//$absolute_path = "/usr/apache/htdocs/uploadim"; //Absolute path to where files are uploaded
if($extensions==".gif"||$extensions==".jpg"||$extensions==".jpeg"||$extensions==".png"){
$absolute_path="/keep/pic/";
}
if($extensions==".exe"){
$absolute_path="/keep/program/";
}
if($extensions==".mp3"){
$absolute_path="/keep/mp3/";
}
if($extensions!=".gif"||$extensions!=".jpg"||$extensions!=".jpeg"||$extensions!=".png"||$extensions!=".exe"||$extensions!=".mp3"){
$absolute_path="/keep/etc/";
}
$size_limit = "no"; //do you want a size limit yes or no.
$limit_size = "1048576"; //How big do you want size limit to be in bytes
$limit_ext = "no"; //do you want to limit the extensions of files uploaded
$ext_count = "11"; //total number of extensions in array below
$extensionss = array(".gif", ".jpg", ".jpeg", ".png" , ".mp3" , ".exe" , ".zip" , ".rar" , ".txt" ,
".doc" , ".php"); //List extensions you want files uploaded to be
?>
ผิดตรงไหนอ่ะ ทำไมมันเข้าไปอยู่ใน case สุดท้ายหมดเลยอ่ะ บอกหน่อย
-
Re: ผิดตรงไหนอ่ะ
เท่าที่ดูมัน logic error นา
ลองสมมุติว่าผมใช้ไฟล์ที่มี extension เป็น .jpg ดูนะ
อ่ะชื่อไฟล์ gimmebaby.jpg
ผ่าน if อันแรกตรงกะเคสนี้ ดังนั้น $absolute_path เลยเป็น "/keep/pic/"
ต่อไปไม่เข้า if ที่สองเลยข้าม
if ที่สามก็ข้าม
ต่อมาปัญหามันอยู่ตรงนี้แหละ!!
if อันนี้เช็คว่าถ้าสตริง $extensions ไม่ตรงกะ ".gif"
ซึ่ง gimmebaby.jpg มันก็ไม่ตรงอยู่แล้วดังนั้นมันจึงตกไปอยู่ที่ "/keep/etc/" อย่างไม่ต้องสงสัย..
จะเห็นได้ว่า or ในที่นี้ไม่ได้ช่วยอะไรเลยเพราะมันเกิด shortcircuit ขึ้นแน่ๆด้วยอะไรก็ตามที่ไม่ใช่ .gif
เพราะฉะนั้นถ้าคุณลองอัพโหลดไฟล์ .gif ล่ะก็รับรองว่ามันจะไปอยู่ที่ "/keep/pic/"
.....
สงสัยอยู่ว่า
$extensionss = array(".gif", ".jpg", ".jpeg", ".png" , ".mp3" , ".exe" , ".zip" , ".rar" , ".txt" ,
".doc" , ".php");
มีไว้ทำไมเพราะตัวแปรมันคนละตัวกันนี่ $extensionss กับ $extensions
หรือเราไม่แน่นเบสิก php ก็ขอโทษที
บ่ค่อยปึ้ก
ลองแก้ด้วยวิธีการเช็คประเทอื่นๆก่อนแล้วค่อยย้อนกลับมาเช็ครูปกะ exe ดูสิ เราคิดว่าน่าจะแก้ logic error ได้
-
Re: ผิดตรงไหนอ่ะ
ขอบใจ แก้แล้วได้ผลไง แล้วจะมาบอก
-
Re: ผิดตรงไหนอ่ะ
if () {
}
if () {
}
สำหรับ โปรแกรมนี้ ใช้ไม่ได้ครับ
เพราะมันไม่ใช่ cascade
เราต้องใช้
if () {
} elseif () {
} elseif () {
} else {
}
แบบนี้นะครับ
ส่วนการ match ให้ใช้ preg_match("/$.gif/i", $extention) แทนนะครับ
เราจำ pattern ของ preg_match ไม่ได้ ขอให้ไปอ่านเอาอีกที ในส่วนของ regular expression นะครับ
-
Re: ผิดตรงไหนอ่ะ
วู้ๆ ความรู้ใหม่อีกแล้ว แบบว่าเพิ่งจับได้ว่า php ก็คือ c ที่ไม่ต้อง compile นี่เอง
ขอบคุณสำหรับทุกคำแนะนำนะครับ แต่ผมเปลี่ยนมาใช้ switch case แทนแล้วหล่ะ(ที่จริงน่าจะใช้แต่แรกแล้ว)
$type= strrchr($file_name,'.');
switch ($type){
case ".jpg" : case ".gif" : case ".png" : case ".jpeg";{
$absolute_path = "/keep/pic/";
break;
}
case ".exe";{
$absolute_path = "/keep/program/";
break;
}
case ".doc" : case ".txt" ;{
$absolute_path = "/keep/text/";
break;
}
case ".zip" : case ".rar";{
$absolute_path = "/keep/zip/";
break;
}
case ".mp3";{
$absolute_path = "/keep/mp3/";
break;
}
default;{
$absolute_path = "/keep/etc/";
break;
}
}
[Edited by momo on 11-16-2002 at 10:48 PM GMT]