我設計了一個PHP文件上傳表單,它將3張圖片作爲varchar數據類型存儲在數據庫中,並將其移動到目標目錄。幫我重新格式化我的PHP驗證代碼
上傳或插入值,以我想確保
a)其是文件類型的圖像/ JPEG
b)該三個圖像應該有不同的固定尺寸的值的數據庫(前對此我取出由和getimagesize()的尺寸值;及驗證它)
c)和,以檢查是否文件名的重複在目錄(我正在通過file_exists())
如果檢查存在任何一個如果條件返回false,那麼腳本應該死()
我已經定義了它的代碼,但是我的代碼的問題是,如果最後一個條件返回false,那麼上面的條件將執行代碼並執行一些操作move_uploaded_file我不想發生,請看看代碼
請檢查最後4條件,因爲我想要重新格式化。
$w_title = 685;
$h_title = 50;
$w_brief = 685;
$h_brief = 177;
$w_detail = 685;
if(empty($_POST['ns_title']) || empty($_FILES["ns_pic_title"]["name"]) || empty($_FILES["ns_pic_brief"]["name"]) || empty($_FILES["ns_pic_detail"]["name"])) {
echo "<script type=\"text/javascript\">" . "alert(\"Please Fill All the Required Fields\");" . "</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;post-news.php\"/>";
die();
}
else {
$ns_title = htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['ns_title'])));
if($_FILES["ns_pic_title"]["type"] == "image/jpeg" && $_FILES["ns_pic_brief"]["type"] == "image/jpeg" && $_FILES["ns_pic_detail"]["type"] == "image/jpeg") {
$ns_pic_title_loc= $_FILES["ns_pic_title"]["tmp_name"];
$ns_pic_title_name = $_FILES["ns_pic_title"]["name"];
list($width_title, $height_title) = getimagesize($ns_pic_title_loc);
$ns_pic_brief_loc = $_FILES["ns_pic_brief"]["tmp_name"];
$ns_pic_brief_name = $_FILES["ns_pic_brief"]["name"];
list($width_brief, $height_brief) = getimagesize($ns_pic_brief_loc);
$ns_pic_detail_loc = $_FILES["ns_pic_detail"]["tmp_name"];
$ns_pic_detail_name = $_FILES["ns_pic_detail"]["name"];
list($width_detail, $height_detail) = getimagesize($ns_pic_detail_loc);
if(file_exists($ns_target.$ns_pic_title_name)) {
echo "<script type=\"text/javascript\">" . "alert(\"File Already Exists, Please Choose a Different Name for the File\");" . "</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;post-news.php\"/>";
die();
}
if(!$width_title == $w_title && !$height_title == $h_title) {
echo "<script type=\"text/javascript\">" . "alert(\"Incorrect File Dimension for Title News, please make sure it is (685 X 50)\");" . "</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;post-news.php\"/>";
die();
}
else {
move_uploaded_file($ns_pic_title_loc, $ns_target.$ns_pic_title_name);
}
if(!$width_brief == $w_brief && !$height_brief == $h_brief) {
echo "<script type=\"text/javascript\">" . "alert(\"Incorrect File Dimension for Brief News, please make sure it is (685 X 177)\");" . "</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;post-news.php\"/>";
die();
}
else {
move_uploaded_file($ns_pic_brief_loc, $ns_target.$ns_pic_brief_name);
}
if(!$width_detail == $w_detail) {
echo "<script type=\"text/javascript\">" . "alert(\"Incorrect File Dimension for Detail News, please make sure it is (685 in width)\");" . "</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;post-news.php\"/>";
die();
}
else {
move_uploaded_file($ns_pic_brief_loc, $ns_target.$ns_pic_brief_name);
}
我如何格式化代碼,以便
一)應檢查所有三個條件
B),如果它的任何一個返回false,那麼就應該立即停止執行
謝謝
+1哇!精彩而徹底。 – 2010-08-23 18:00:25
布蘭登,我會提出一個改變:在'失敗()'使用'死'而不是'回聲'。這樣你就不需要'valid_image()'中的'return'語句,在當前的實現中,即使在前一個失敗的情況下,你也會繼續檢查所有條件。如果在'失敗'中使用'die',你會在第一次異常時退出。 – 2010-08-23 18:11:37
+1這太棒了我還是有點新手,雖然我會嘗試改變我的代碼功能,看起來相當體面和整潔,我很欣賞你通過我的帖子和答覆它的痛苦。 – 2010-08-23 18:12:48