画像のアップロードの処理を条件分岐で書いてます。
①画像が選択されていない場合は「画像が選択されておりません」のエラーが、
②png・jpeg画像が投稿されると「対象ファイルはPNGまたはJPGのみです!」のエラーが、
③画像のアップロードに失敗すると「ファイルのアップロードに失敗しました」のエラーが
表示されるようにしたいです。
gif画像を投稿すると、「対象ファイルはPNGまたはJPGのみです!」と
「ファイルのアップロードに失敗しました」の2つのエラーが表示されてしまいます。
if文のロジックがおかしいとは思いますが、原因が特定できず・・・
どなたかご教示ください。
php
1<?php 2error_reporting(E_ALL & ~E_NOTICE); 3require_once('functions.php'); 4 5if ($_SERVER['REQUEST_METHOD'] == 'POST') { 6 $name = $_POST['name']; 7 $image_name = $_POST['image_name']; 8 $img_data = "images/" . $_FILES["img_data"]["name"]; 9 $errors = array(); 10 11 if ($name == '') { 12 $errors['name'] = "投稿者が入力されておりません。"; 13 } 14 15 if ($image_name == '') { 16 $errors['img_name'] = "画像タイトルが入力されておりません。"; 17 } 18 19 if (strlen($_FILES["img_data"]["name"]) > 0) { 20 $fileinfo = pathinfo($_FILES["img_data"]["name"]); 21 $fileext = strtoupper($fileinfo["extension"]); 22 //$errmsg = ""; 23 24 if ($fileext != "PNG" and $fileext != "JPG") { 25 $errors['file_extension'] = "対象ファイルはPNGまたはJPGのみです!"; 26 } else { 27 $img_data = "images/" . $_FILES["img_data"]["name"]; 28 29 if (!move_uploaded_file($_FILES["img_data"]["tmp_name"], $img_data)) { 30 $errors['file_upload_failure'] = "ファイルのアップロードに失敗しました。"; 31 } 32 } else (file_exists($img_data)) { 33 $errors['file_upload_none'] = "画像が選択されておりません"; 34 } 35 } 36 37 if (empty($errors)) { 38 header('location: postdone.php'); 39 exit; 40 } 41} 42 43 44?> 45 46<!DOCTYPE html> 47<html> 48<head> 49 <meta charset="utf-8"> 50 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 51 <title>画像投稿ページ</title> 52 <link rel="stylesheet" href="reset.css"> 53 <link rel="stylesheet" href="style.css"> 54</head> 55<body> 56<h1>画像投稿掲示板</h1> 57<hr> 58<form class="contents" action="" method="post" enctype="multipart/form-data"> 59<table border="0" cellspacing="0" cellpadding="0" class="table_basic"> 60 61<colgroup> 62 <col width="33%" /> 63 <col width="67%" /> 64</colgroup> 65 66 <tr> 67 <th><span>投稿者</span><span class="must">必須</span></th> 68 <td ><input type="text" name="name" value="" class="box"><br> 69 <?php if ($errors['name']) : ?> 70 <?php echo h($errors['name']) ?> 71 <?php endif ?> 72 </td> 73 </tr> 74 75 <tr> 76 <th><span>画像タイトル</span><span class="must">必須</span></th> 77 <td><input type="text" name="image_name" value="" class="box"><br> 78 <?php if ($errors['img_name']) : ?> 79 <?php echo h($errors['img_name']) ?> 80 <?php endif ?> 81 </td> 82 </tr> 83 84 <tr> 85 <th><span>画像ファイル</span><span class="must">必須</span></th> 86 <td><input type="file" name="img_data" value="選択してください"><br> 87 <?php if ($errors['file_extension']) : ?> 88 <?php echo h($errors['file_extension']) ?> 89 <?php endif ?> 90 <?php if ($errors['file_upload_failure']) : ?> 91 <?php echo h($errors['file_upload_failure']) ?> 92 <?php endif ?> 93 <?php if ($errors['file_upload_none']) : ?> 94 <?php echo h($errors['file_upload_none']) ?> 95 <?php endif ?> 96 </td> 97 </tr> 98 99</table> 100<p class="button"><input type="submit" name="submit" value="投稿する" width="50px"></p> 101</form> 102<p class="link"><a href="index.php">画像一覧ヘージはこちら>></a></p> 103</body> 104</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/20 12:15