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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

995閲覧

phpの設定が原因なのですが、どうしてもわかりません。

jmasa

総合スコア2

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/12/13 09:46

前提・実現したいこと

最初に、
wordpress テーマ sango 子テーマ poripu の中で、プラグインで、コンタクト7をインストールしています。

実現したいこと、(全て固定ページで制作しています。)
問合わせフォーム → ファイルアップロードフォーム(任意のフォルダーに、zipファイルアップロード800MB以下)
→ アップロード完了画面 へ遷移させたいのです。

発生している問題・エラーメッセージ

問い合わせフォームから、ファイルアップロードフォームへはページ遷移します。 その後、ファイルアップロードは任意のフォルダーにアップロードされるまでは確認できました。 最後の アップロード完了画面 へのページ遷移がどうしてもできません。

該当のソースコード

ソースコード 1(header("Location:で実装したもの) ★下記ソースの場合、  Warning: Cannot modify header information - headers already sent by~ 14行目で...  とエラーになってしまいます。★ <?php $idno=1; if($idno=='') { $idno=1; } $s=$_get['s']; $d = ""; $sc=$_POST['task']; $d=$_POST['switch_d']; $path="/home/***/********.com/public_html/****/****/upload/FILE/"; if($sc=="upload") { if(!empty($_FILES) && $_FILES['files']['size'][0]>0) { if(preg_match('/.zip/i',$_FILES['files']['name'][0])) { $filename = $_FILES['files']['name'][0]; $f1=move_uploaded_file($_FILES['files']['tmp_name'][0], $path.$filename); header("Location: https://www.~/?post=●●●"); ★★ ← ここの行でエラーになります。★★ exit(); } else { header("Location: https://www.~/?post=●●●"); exit(); } } else { header("Location: https://www.~/?post=●●●"); exit(); } } ?>

試したこと

ソースコード 2(そのため、javascript で改めて、実装しました) <?php $idno=1; if($idno=='') { $idno=1; } $s=$_get['s']; $d = ""; $sc=$_POST['task']; $d=$_POST['switch_d']; $path="/home/***/********.com/public_html/****/****/upload/FILE/"; if($sc=="upload") { if(!empty($_FILES) && $_FILES['files']['size'][0]>0) { if(preg_match('/.zip/i',$_FILES['files']['name'][0])) { $filename = $_FILES['files']['name'][0]; $f1=move_uploaded_file($_FILES['files']['tmp_name'][0], $path.$filename); echo <<< EOD <script> document.addEventListener( 'wpcf7mailsent', function( event ) { location = 'https://www.~/?post=●●●';/* アップロード完了画面のURL */ }, false ); </script> EOD; } else { echo <<< EOD <script> document.addEventListener( 'wpcf7mailsent', function( event ) { location = 'https://www.~/?post=●●●';/* アップロードフォーム画面のURL */ }, false ); </script> EOD; } } else { echo <<< EOD <script> document.addEventListener( 'wpcf7mailsent', function( event ) { location = 'https://www.~/?post=●●●';/* アップロードフォーム画面のURL */ }, false ); </script> EOD; } } ?>

補足情報(FW/ツールのバージョンなど)

しかし、エラーは無くなりましたが、ページ遷移ができなくて困っています。
ご教授頂けますと幸いです。

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

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

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

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

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

guest

回答2

0

Warning: Cannot modify header information - headers already sent by

エラーメッセージで検索するとWordPress 以外も含めて同じような例がたくさん見つかると思います。
PHP の設定ではなく、ソースコードの問題です。

header() 関数を使う場合、header() 関数の前で、文字等の出力がされていると質問のエラーが発生します。

PHPマニュアル header

覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の出力の前にコールする必要があることです。

頻出するエラーとして、include または require 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。

とあるように、対策は、HTMLやプログラムの中で header より前に出力をしている部分を探して、headerより前に出力しないように修正することになります。

投稿2020/12/13 12:30

CHERRY

総合スコア25171

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

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

jmasa

2020/12/13 13:27

CHERRY様 早々のご連絡頂きまして、誠にありがとうございます。 おっしゃる通りでございます。 すいません、知識不足であるため、いくら該当箇所を探そうにも発見できずに途方に暮れておりました。 エラー該当箇所 ~ $f1=move_uploaded_file($_FILES['files']['tmp_name'][0], $path.$filename); header("Location: https://www.~/?post=●●●"); ★★ ← ここの行でエラーになります。★★ ~ については、問題ないでしょうか。 デバック等 発見方法等ご教授頂けますと幸いです。 お手数をお掛けいたします。何卒、よろしくお願い申し上げます。 jmasa
guest

0

自己解決

CHERRY様

冷静になって、ソースを見直したところ、現状のコードでは

<!doctype html>の後に記述されていることになっており、

そのため、上記のエラーが発生しておりました。

改めて、wordpress内 - header.php 内 - <!doctype html> より以前に、
当該php記述を行ったところ、正常に動作確認することができました。

ご指摘頂きまして、誠にありがとうございました。
今後は、同内容の案件がきましても、対応することが出来ることに確信を持つことができました。

本当にありがとうございました。

jmasa

投稿2020/12/13 14:20

jmasa

総合スコア2

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

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

javahack

2020/12/14 04:28

CHERRYさんの回答をヒントに問題が解決できたのならベストアンサーはCHERRYさんに付けた方が良いのでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問