lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« เมื่อ: 24 พฤศจิกายน 2007, 23:00:57 » |
|
คือถ้าเราต้องการให้คนอัพโหลดไฟล์อ่านทาง index.php แล้วไป form upload.php แต่เราไม่ต้องการให้คนเข้ามาทาง http://www.domain.com/upload.php  โดยตรง เลยนี่ทำไงครับ คือถ้ามีคนเข้ามาผ่านทาง http://www.domain.com/upload.php  โดยที่ไม่ผ่านการอัพโหลดไฟล์ทางหน้า index.php ให้ redirect มาหน้า index.php เลยอ่ะครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #1 เมื่อ: 24 พฤศจิกายน 2007, 23:48:01 » |
|
รอผู้รู้ ช่วยตอบทีครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
BosnoS
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 5,944
|
 |
« ตอบ #2 เมื่อ: 24 พฤศจิกายน 2007, 23:50:52 » |
|
$url = parse_url($_SERVER['HTTP_REFERER']); $domain = "jeedza.com"; //แก้เป็นโดเมนของเรา if(!eregi($domain, $url['host'])) die("กรุณากรอกข้อมูลผ่านทางเว็บเราเท่านั้นครับ"); อันนี้ผมเอามาจาก คุณโจ้ Ethaizone นะครับ เป็นการเช็คที่มา ว่า เข้าหน้านี้โดยผ่านหน้าไหนมาก่อน น่าจะเอาไปประยุกต์ เป็นโจทย์ที่คุณบอกได้ (มั่ง) 
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #3 เมื่อ: 25 พฤศจิกายน 2007, 00:10:00 » |
|
ไม่ได้ครับ แป่วๆ  คือเอาไปใส่แล้ว มันกลับอัพโหลดไรไม่ได้เลยงับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #4 เมื่อ: 25 พฤศจิกายน 2007, 00:24:59 » |
|
รอคุณ Ethaizone กับคุณ icez มาตอบคับ *-* หรือผู้รู้ ช่วยทีคับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,459
|
 |
« ตอบ #5 เมื่อ: 25 พฤศจิกายน 2007, 00:51:18 » |
|
ใช้วิธีเช็คค่าจากปุ่มซัพมิทสิครับ สมมุติฟอร์มแบบ post แล้วผมใช้ปุ่มแบบนี้ <input type="submit" name="submit" value="Upload" /> ก็... if($_POST['submit'] != "Upload") die("กรุณากรอกข้อมูลผ่านทางเว็บเราเท่านั้นครับ"); ประมาณนี้  ------------------- อ่า ลืมคิดไปกรณีโดนขโมยฟอร์ม เดียวมาโพส - -*
|
|
|
|
« แก้ไขครั้งสุดท้าย: 25 พฤศจิกายน 2007, 00:56:33 โดย EThaiZone »
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,459
|
 |
« ตอบ #6 เมื่อ: 25 พฤศจิกายน 2007, 01:02:06 » |
|
$url = parse_url($_SERVER['HTTP_REFERER']); $domain = "google.com"; //แก้เป็นโดเมนของเรา if(!eregi($domain, $url['host'])) die("กรุณากรอกข้อมูลผ่านทางเว็บเราเท่านั้นครับ"); if(!eregi("index.php", $url['path'])) die("คุณไม่ได้มาจากหน้าหลักของเรา [2]"); //ใช้ตรวจว่ามาจาก index.php หรือเปล่า
อันนี้ใช้ได้ผลนะครับ อย่าลืมแก้โดเมนด้วยล่ะ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #7 เมื่อ: 25 พฤศจิกายน 2007, 01:11:35 » |
|
เอาไปใส่ตรงไหนครับ อันนี้ code หน้า upload.php <? preg_match('/\.([a-zA-Z]+?)$/', $_FILES['file']['name'], $matches); if(in_array(strtolower($matches[1]), $accepted)) { if($_FILES['file']['size'] <= $maxsize) { $newname = md5_file($_FILES['file']['tmp_name']).'.'.$matches[1]; move_uploaded_file($_FILES['file']['tmp_name'], $filedir.'/'.$newname); $linkurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']); $imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$filedir.'/'.$newname; print '<H1><CENTER><B>Upload Succesful</B></CENTER></H1> } else echo ("<B><CENTER><H1>Your File Size is too large please reduce the size and try again.</H1></CENTER></B><br> <a href=\"index.php\"><B><CENTER><H1>Upload again</H1></CENTER></B></a>"); } else echo ("<B><CENTER><H1>File type is not support</H1></CENTER></B><br> <a href=\"index.php\"><B><CENTER><H1>Upload again</H1></CENTER></B></a>"); } ?>
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,459
|
 |
« ตอบ #8 เมื่อ: 25 พฤศจิกายน 2007, 01:21:50 » |
|
ใส่หลัง <? เลยครับ แล้วก็แก้ google.com ในนั้นเป็นโดเมนตัวเอง แล้วข้อความอีก 2 จุด อยากแก้เป็นคำอื่นก็แล้วแต่ครับ 
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #9 เมื่อ: 25 พฤศจิกายน 2007, 01:30:22 » |
|
คือผมใส่ไป <? $url = parse_url($_SERVER['HTTP_REFERER']); $domain = "โดเมนของเรา"; //แก้เป็นโดเมนของเรา if(!eregi($domain, $url['host'])) die("Error please select an image and click upload "); if(!eregi("index.php", $url['path'])) die("Error please select an image and click upload"); preg_match('/\.([a-zA-Z]+?)$/', $_FILES['file']['name'], $matches); if(in_array(strtolower($matches[1]), $accepted)) { if($_FILES['file']['size'] <= $maxsize) { $newname = md5_file($_FILES['file']['tmp_name']).'.'.$matches[1]; move_uploaded_file($_FILES['file']['tmp_name'], $filedir.'/'.$newname); $linkurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']); $imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$filedir.'/'.$newname; print '<H1><CENTER><B>Upload Succesful</B></CENTER></H1>
} else echo ("<B><CENTER><H1>Your File Size is too large please reduce the size and try again.</H1></CENTER></B><br> <a href=\"index.php\"><B><CENTER><H1>Upload again</H1></CENTER></B></a>"); } else echo ("<B><CENTER><H1>File type is not support</H1></CENTER></B><br> <a href=\"index.php\"><B><CENTER><H1>Upload again</H1></CENTER></B></a>");
?>
ผมลองอัพ โหลดไฟล์จากหน้า index.php มันก็แสดงขึ้นว่า Error please select an image and click upload อ่ะครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,459
|
 |
« ตอบ #10 เมื่อ: 25 พฤศจิกายน 2007, 01:54:05 » |
|
แปลกนะครับ เพราะผมลองในเครื่องก็ใช้ได้ เอาโค้ดไปให้เว็บอื่นใช้ก็ใช้ได้
ลอง echo ค่า $_SERVER['HTTP_REFERER'] ออกมาดูหน่อยสิครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #11 เมื่อ: 25 พฤศจิกายน 2007, 02:07:07 » |
|
<? echo $_SERVER['HTTP_REFERER']; ?> ผมลองงี้ แล้ว รันดู มันเป็นหน้าจอสีขาวธรรมดาอะครับ ไม่มีอะไรเลย error ก็ไม่มี
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,459
|
 |
« ตอบ #12 เมื่อ: 25 พฤศจิกายน 2007, 02:11:44 » |
|
เดียวก่อนนะครับ ผมบอกไม่ละเอียด คือให้ลองอัพโหลดไฟล์ตามปกติอะ แล้วค่อยดูว่ามีค่าอะไรคืนมาไหม คือว่าถ้าไม่มีอะไรผิดปกติ เวลาอัพโหลดไป echo $_SERVER['HTTP_REFERER']; แล้วมันจะคืนค่าเป็น url ของหน้า index.php มาครับ (คืน referrer มาว่างั้นเถอะ) ลองดูครับ  ปล. ขอไปนอนก่อนนะ พรุ่งนี้มีเรียน
|
|
|
|
« แก้ไขครั้งสุดท้าย: 25 พฤศจิกายน 2007, 02:16:17 โดย EThaiZone »
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #13 เมื่อ: 25 พฤศจิกายน 2007, 02:18:05 » |
|
อ่อ ผมลองอัพล่ะคับ ( รันในเครื่องใช้ appserv รุ่น 2.5.8 ได้ค่าคืนกลับมาคือ http://localhost/upload/index.php  นั่นก็ืคือหน้า แรกนั่นเอง แต่ งงว่าไม เอา code พี่ Ethaizone ไปใส่ กลับโชว์แต่คำ ว่า Error please select an image and click upload ตามที่ผมได้่ใส่ไปใน code $url = parse_url($_SERVER['HTTP_REFERER']); $domain = "โดเมนของเรา"; //แก้เป็นโดเมนของเรา if(!eregi($domain, $url['host'])) die("Error please select an image and click upload "); if(!eregi("index.php", $url['path'])) die("Error please select an image and click upload"); สงสัยคงเกี่ยวกับ if else ป่ะครับ มันไปซ้อนกับ code ของผม
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #14 เมื่อ: 25 พฤศจิกายน 2007, 02:24:49 » |
|
อ่อๆพี่ครับได้แล้วคับ ผมโง่เอง ตรง $domain = "localhost"; //แก้เป็นโดเมนของเรา ตอนแรกผมไม่ได้ใส่ localhost ไปใส่ domain แล้วรันในเครื่อง เลยไม่ได้ 555 ยังไงขอบคุณมากครับ ที่สละเวลามาตอบ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,459
|
 |
« ตอบ #15 เมื่อ: 25 พฤศจิกายน 2007, 02:26:00 » |
|
กำลังจะปิดคอม มากดอ่านอีกที คือเรื่อง if นี้ไม่เกี่ยวกับครับ เพราะ if ถ้าไม่ใส่ {} มันจะทำงานแค่บรรทัดเดียวต่อตาก if ส่วนการไม่มี else ก็ไม่มีผลอะไรครับ ผมว่า ตรง $domain = "โดเมนของเรา"; นี้ คุณใส่ถูกหรือเปล่าครับ อย่างถ้ารันในเครื่อง ก็ใส่ $domain = "localhost"; ถ้าเกิดผมทำเว็บอัพโหลดไว้ ethaizone.com/upload/index.php ก็จะใส่เป็น $domain = "ethaizone.com"; นะครับ :  ปล. พรุ่งนี้ไปเรียนสายแน่ๆ  ----------------------------------- คำเตือน - มีกระทู้ตอบใหม่ ขณะที่คุณพิมพ์ข้อความ อยากให้คุณแสดงตัวอย่างก่อนตั้งกระทู้อ่อๆพี่ครับได้แล้วคับ ผมโง่เอง ตรง $domain = "localhost"; //แก้เป็นโดเมนของเรา ตอนแรกผมไม่ได้ใส่ localhost ไปใส่ domain แล้วรันในเครื่อง เลยไม่ได้ 555 ยังไงขอบคุณมากครับ ที่สละเวลามาตอบ
ซะงั้นอะ 
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #16 เมื่อ: 25 พฤศจิกายน 2007, 02:30:27 » |
|
แล้วถ้าจาเปลี่ยนให้มันredirect อัตโนมัตกลับมาหน้า index เลย นี่ทำไงหรือครับ ผมลองใช้ header('Location: http://www.domain.com/  '); แทน die("Error please select an image and click upload "); ก็ไม่ได้อ่ะครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #17 เมื่อ: 25 พฤศจิกายน 2007, 02:31:33 » |
|
โทดทีครับที่ให้มาตอบอยู่เรื่อยๆ ไว้พรุ่่งนี้ค่อยมาตอบก็ได้ครับ ไม่รีบๆ 
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
lce
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 67
|
 |
« ตอบ #18 เมื่อ: 25 พฤศจิกายน 2007, 15:21:57 » |
|
ขุดต่อครับ รอพี่ Ethaizone
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
bankkungz
สมุนแก๊งเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 948
|
 |
« ตอบ #19 เมื่อ: 25 พฤศจิกายน 2007, 15:30:08 » |
|
ขุดครับ
น่าสนดีครับ
เอาไปประยุคได้หลายอย่างเลย (เท่าทีนึกๆดูนะ อิอิ *-*)
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
|