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

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

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

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

Q&A

解決済

3回答

1593閲覧

クエリをヘッダーで返したあと条件分岐で条件に合ったエラー文を出したいです。

Kuriaki

総合スコア85

PHP

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

0グッド

0クリップ

投稿2017/01/20 08:21

編集2017/01/20 08:55

題名見て何がやりたい河からないかもしれませんが、コード見ると多分わかると思います。
やりたいことは今resize.phpでクエリを変数に入れてあります。
それらをup.phpで$_GETでとって、up.phpでエラー文を表示したいです。
最終的には条件分岐で条件にあったエラー文を出したいです。

今のままですと、$errorのエラー文しか出てこないです。
テストで$error~$error4を全部echoしましたが、$error以外は空になっています。
urlがhttp://localhost/up/up.php?error=1234こうなっていて、
内容は
1234
Notice: Undefined index: error_2 in C:\xampp\htdocs\up\up.php on line 18

Notice: Undefined index: error_3 in C:\xampp\htdocs\up\up.php on line 19

Notice: Undefined index: error_4 in C:\xampp\htdocs\up\up.php on line 20
このようになっています。
説明不足や下手なところがあるかもしれませんが、よろしくお願いいたします。

php

1<?php 2 3 4/*if (isset($_GET['error'])) { 5 echo '<span style="color: #ee0000">5M以下のファイルを選択して下さい!</span>'; 6} 7 8if(isset($_GET['error2'])){ 9 echo '<span style="color: #ee0000">JPEGファイルを選択してください!</span>'; 10} 11if (isset($_GET['error3'])) { 12 echo '<span style="color: #ee0000">横幅を小さくしてください!</span>'; 13} 14if (isset($_GET['error4'])) { 15 echo '<span style="color: #ee0000">縦幅を小さくしてください!</span>'; 16}*/ 17echo $_GET['error']; 18echo $_GET['error_2']; 19echo $_GET['error_3']; 20echo $_GET['error_4']; 21?> 22<!DOCTYPE html> 23<html> 24<head> 25 26 <meta charset="utf-8"> 27 <title>php</title> 28</head> 29<body> 30<form action="resize.php" method="get" name="form" "> 31 32 33<input type="hidden" name="MAX_FILE_SIZE" value="20971520"> 34<p> 35<input type="text" name="upfile" size="30" id="upload"> 36</p> 37 38<p> 39<input type="submit" value="送信する"> 40</p> 41</form> 42</body> 43 44 </html> 45 46

php

1<?php 2ini_set('display_errors', '1'); 3error_reporting(E_ALL); 4 5if (!isset($_FILES['upfile'])) { 6 echo '<span style="color: #ee0000">恐らくアップロードページのHTMLに記述ミス有り!</span>'; 7 8} 9 10$file = $_FILES['upfile']; 11$tmp_name = $file['tmp_name']; // 一時ファイルのパス 12$filesize = $_FILES['upfile']['size']; 13 14 15if ($filesize > 5242880) { 16 echo '<span style="color: #ee0000">5M以下のファイルを選択して下さい!</span>'; 17} 18 19 20$error = "1"; 21$error_2 = "2"; 22$error_3 = "3"; 23$error_4 = "4"; 24header('location:http://localhost/up/up.php?error='.$error.$error_2.$error_3.$error_4); 25 26 27$finfo = new finfo(FILEINFO_MIME_TYPE); 28if (!preg_match('/\.jpg$|\.jpeg$/i', $file['name']) 29 || $finfo->file($tmp_name) !== 'image/jpeg') { 30 echo '<span style="color: #ee0000">JPEGファイルを選択してください!</span>'; 31 32} 33 34$result = true; 35$get = getimagesize($tmp_name); 36 37if ($get["0"]>1000) { 38 $result = false; 39 echo '<span style="color: #ee0000">横幅を小さくしてください!</span>'; 40} 41if ($get["1"]>1000) { 42 $result = false; 43 echo '<span style="color: #ee0000">縦幅を小さくしてください!</span'; 44} 45 46if ($result) { 47 echo '送信完了'; 48 49} 50 51?> 52

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

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

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

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

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

kei344

2017/01/20 08:55

「しゅうクエリ」とはなんでしょう。
Kuriaki

2017/01/20 08:55

失礼いたしました。誤字でした、すみません。
guest

回答3

0

ベストアンサー

$_GET['error']には1234といった、エラー番号を連結した文字列が入っていることを想定しているんですよね?
なら、比較すべきは$_GET['error']の中身の文字列に、それぞれのエラー番号が内包されているかです。strposを使えば、文字列の中に該当の文字列が含まれているかを判定できます。(本来の用途は該当の文字が何文字目にあるか、を得る関数ですが)

PHP

1if (isset($_GET['error'])) { 2 $error = $_GET['error']; 3 if(strpos($error, '1') !== FALSE) { 4 echo '<span style="color: #ee0000">5M以下のファイルを選択して下さい!</span>'; 5 } 6 7 if(strpos($error, '2') !== FALSE) { 8 echo '<span style="color: #ee0000">JPEGファイルを選択してください!</span>'; 9 } 10 if(strpos($error, '3') !== FALSE) { 11 echo '<span style="color: #ee0000">横幅を小さくしてください!</span>'; 12 } 13 if(strpos($error, '4') !== FALSE) { 14 echo '<span style="color: #ee0000">縦幅を小さくしてください!</span>'; 15 } 16}

投稿2017/01/20 08:35

masaya_ohashi

総合スコア9206

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

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

Kuriaki

2017/01/20 08:50

ご回答ありがとうございます。 また新しいこと勉強になりました。
guest

0

前回何名かで回答したとおりheader()の前に1文字でも出力はしてはいけません

また
$error = "1";
$error_2 = "2";
$error_3 = "3";
$error_4 = "4";
header('location:http://localhost/up/up.php?error='.$error.$error_2.$error_3.$error_4);

のところですが
url的にはup.php?error=1+2+3+4
のように返させるとか
up.php?e[]=1&e[]=2&e[]=3&e[]=4
のようにしたほうがうけた方がデータは拾いやすいです
(もちろんerror=1234でも分割処理できますけどね)

投稿2017/01/20 08:29

yambejp

総合スコア114843

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

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

0

header('location:http://localhost/up/up.php?error='.$error."&error_2=".$error_2."&error_3=".$error_3."&error_4=".$error_4);

とりあえず、目下のやりたいことはこれかなと思いますが、正直言って目指すものはスキル以上のことを受託している気がします。
余計なおせっかいとは存じますが、趣味か勉強でしたらいいとして、
もしお仕事として受けているのでしたら、業者に委託するのが一番かと思います。

投稿2017/01/20 08:37

namimon

総合スコア726

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

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

Kuriaki

2017/01/20 08:49

ご回答ありがとうございます。 最近はじめたばかりで、ちゃんとした学習計画もないもので、 ほんとうに助かりました。
退会済みユーザー

退会済みユーザー

2017/01/20 08:51

urlencode 必須です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問