2014-05-08 20 views
2

我有一個PHP窗體檢查發佈文本和圖像的問題。我如何處理表單檢查這兩種類型的數據?PHP窗體檢查文本和圖像

$latErr = $lngErr = $photoErr = ""; 
$lat = $lng = $photo = ""; 

//what if i am not using form action-PHP_SELF, currently i am use anotherfile.php, what do i use below? 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 

if (empty($_POST["inputfield1"])) { 
$latErr = "Latitude is required. Enable your browser geolocation."; 
} else { 
$lat = test_input($_POST["inputfield1"]); 
} 

if (empty($_POST["inputfield2"])) { 
$lngErr = "Longitude is required. Enable your browser geolocation."; 
} else { 
$lng = test_input($_POST["inputfield2"]); 
} 

//can i check for image like this? 
if (empty($_POST["photo"])) { 
$photoErr = "Please select your image."; 
} else { 
$photoErr = test_input($_POST["photo"]); 
} 
} 
+0

如果我不使用form action =「<?php echo htmlspecialchars($ _ SERVER [」PHP_SELF「]);?>」我使用form action =「addfile.php」 – user2192094

回答

2

您需要使用的輸入型file,然後檢查是否$_FILES有任何上傳的圖片:

if (empty($_FILES['photo']['name'])) { 
    // error - no photo selected 
} 
if (empty($_POST['inputfield1'])) { 
    // error - no text input 
} 


// ... 
// ... form ... 
<form method="POST" enctype="multipart/form-data"> 
    <input type="file" name="photo" /> 
    <input type="text" name="inputfield1" /> 
// ... 
+0

感謝您的幫助。 – user2192094

0

如果有人使用捲曲,而不發送圖像,你的代碼會崩潰,因爲它試圖看看如果有通過POST發送的「照片」。你應該嘗試做這樣的事情:

if($_FILES['photo']['error'] == 4) 
$photoErr = "No file was uploaded"; 
+0

我的不好。抱歉.. – Zerquix18

0
if(isset($_FILES['input_field_name']['name'])){ 
    //File Exists 
} 

if(isset($_POST['input_fiel_text'])){ 
    //Text field exists 
} 
0

,你可以獲取圖像的詳細信息,有一個良好的控制

 $name = $_FILES['filename']['name']; 
     $dir = pathinfo($name); 
     $extension = $dir['extension']; 
     $extensionsAutorisees = array("png","gif","bmb"); 
     $to_dir = dirname(__FILE__)."/img/"; 
     $new_name = $name.".".$extension; 

     if (!(in_array($extension, $extensionsAutorisees))) { 
      .... error with extension alow 
     } else {  
      ..... your action 
     } 
0

我喜歡馬克·M的答案,他是對的,但我想添加驗證你上傳的圖像到:

public static function isValidUpload() { 

    if ($_FILES['photo']['error'] !== UPLOAD_ERR_OK) { 
     return false; 
    } 

    $info = getimagesize($_FILES['photo']['tmp_name']); 

    return !(($info === FALSE) || (($info[2] !== IMAGETYPE_GIF) && ($info[2] !== IMAGETYPE_JPEG) && ($info[2] !== IMAGETYPE_PNG))); 
} 

不檢查擴展名,因爲我可以寫一個PHP文件和保存爲evil.png。在這種情況下,儘管擴展名是PNG,但這將是一個潛在的危險PHP。