質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

851閲覧

phpでアップロードされたファイルの拡張子が.jpg .gifでなかった場合、エラーメッセージを表示させたい。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/02/27 14:10

PHPで一言掲示板のようなものを作っており、会員登録をするプログラムを作っています。

実現したいこと
ファイルの拡張子が.jpg .gifでなかった場合、エラーメッセージを表示させたい。
ファイルの拡張子を調べるコードは17行目から、エラーメッセージは77行目から記述しています。

困っていること
試しに自分でPDFなどをファイル選択してみたが、エラーメッセージがでてきません。

<?php session_start(); if(!empty($_POST)){ if(isset($_POST['name'])&&$_POST['name']===""){ $error['name']='blank'; } if(isset($_POST['email'])&&$_POST['email']===""){ $error['email']='blank'; } if(isset($_POST['password'])&&$_POST['password']===""){ $error['password']='blank'; } if(isset($_POST['password'])&&strlen($_POST['password'])<4){ $error['length']='length'; } if(isset($_FILES)){ $fileName=$_FILES['image']['name']; if(!empty($fileName)){ $ext=substr($fileName,-3); if($ext!='jpg'&&$ext!='gif'){ $ $error['image']='type'; } } } if(empty($error)){ $image=date('YmdHis').$_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'],'../member_picture/'.$image); $_SESSION['join']=$_POST; $_SESSION['join']['image']=$image; header('Location:check.php'); exit(); } } ?> <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="../css/style.css"> <meta charest="UTF-8"> <title>簡易版ツイッター会員登録ページ</title> </head> <body class="index"> <header> <h1>会員登録</h1> </header> <main> <p>次のフォームに必要事項をご記入ください</p> <form action="" method="POST" enctype=”multipart/form-data”> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd><input type="text" name="name" size="35" value="<?php echo isset($_POST['name'])? htmlspecialchars($_POST['name']): "" ?>"> <?php if(isset($error['name'])&&$error['name']==='blank'):?> <p class="error">*ニックネームを入力してください</p> <?php endif ?> </dd> <dt>メールアドレス<span class="required">必須</span></dt> <dd><input type="text" name="email" size="35" value="<?php echo isset($_POSY['email'])? htmlspecialchars($_PIST['email']):""?>"> <?php if(isset($error['email'])&&$error['email']==='blank'):?> <p class="error">*メールアドレスを入力してください</p> <?php endif ?>
</dd> <dt>パスワード<span class="required">必須</span></dt> <dd><input type="password" name="password" size="20" maxlength="20" value=""> <?php if(isset($error['password'])&&$error['password']==='blank'):?> <p class="error">*パスワードを入力してください</p> <?php endif ?> <?php if(isset($error['password'])&&$error['password']==='length'):?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php endif ?> </dd> <dt>写真など</dt> <dd><input type="file" name="image" size="35"></dd> <p><?php print_r($error) ?></p> <?php if(isset($error['image'])&&$error['image']==='type'):?> <p class="error">*画像は「.jpg」か「.gif」のものにしてください</p> <?Php endif ?> <?php if(!empty($error)):?> <p class="error">*恐れ入りますがもう一度画像を指定してください</p> <?php endif ?> </dl> <input type="submit" value="入力内容を確認する">
</form> </main> </body> </html> どのように解決すればよろしいでしょうか? お教えください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/02/27 22:58

コードはマークダウンのcode機能を利用してご提示ください。 また、自身が調べたこと試したことを記載してください。
m.ts10806

2020/02/27 23:05

また質問は何度でも編集できます。新たに投稿する必要はありません。
guest

回答2

0

ベストアンサー

行頭の$は何でしょうか?
ここでエラーが出ているので$error['image']='type';が実行されません。

php

1$ $error['image']='type';

エラーを表示するように先頭にdisplay_errorserror_reportingの設定を入れて実行しましょう。

php

1<?php 2ini_set('display_errors', 1); 3ini_set('error_reporting', E_ALL);

投稿2020/02/27 14:27

編集2020/02/27 14:32
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/27 14:29

ありがとうございます! $を消したのですが、エラーメッセージがまだ出力されません...
Y.H.

2020/02/28 07:59 編集

> エラーを表示するように先頭にdisplay_errorsとerror_reportingの設定を入れて実行しましょう。 これやりました??? 回答に書いた箇所以外にも、盛大にエラーが出てる筈なんですが・・・ $_PIST とか $_POSYとか。
退会済みユーザー

退会済みユーザー

2020/02/28 07:56

エラー表示をしたら原因がわかり、そこを修正したらうまく動きました! ありがとうございます!!
guest

0

ファイルの拡張子が.jpg .gifでなかった場合

拡張子の判断はちょっと危険です、見た感じ

  • 「.JPG」はNG
  • 「.xjpg」はOK

になるように見えます

投稿2020/02/28 00:31

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/02/28 00:32

typeをチェックして、「image/jpeg」や「image/gif」を ヒットさせるようにした方がよいでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問