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

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

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

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

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

Q&A

解決済

2回答

989閲覧

header()を使った際に出るエラーについて

ott0000

総合スコア21

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

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

0グッド

0クリップ

投稿2022/11/07 09:39

編集2022/11/07 19:13

前提

phpのサイトで、複数ページあるためヘッダーの固定をしているサイトを作っているのですが、
header()を使った際に出るエラーが出てしまいます。

実現したいこと

ヘッダーは上に表示したまま header()を使えるようにしたい。

試したこと

検索にて「Warning: Cannot modify header information - headers already sent by (output started at 」と調べたのですが、 header()の前に何かしらの出力があってはダメと書いてたため、上にヘッダー出力している<?php include("./header.php");?>が原因かと思いheader()より下に書いた

結果
エラーは出なくなったが、ヘッダーの位置が下になってしまったので、

include()を上の表示するために<header>タグ使用、またposition:absolute;で位置の調整を
書いてみましたが失敗。

逆にif文込みでheader()をinclude()の元の位置の上に移動しましたが、
$errorの数を読み取らなくなり失敗。

他にどうすればいいか分からず、すいませんがご指摘お願いいたします。

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

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\44\contact.php:105) in C:\xampp\htdocs\44\contact.php on line 136

該当のソースコード

contact.php

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title></title> 7 <link rel="stylesheet" type="text/css" href="contact.css"> 8 <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> 9 <meta name="viewport" content="width=device-width,initial-scale=1"> 10 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 11 12 13 14</head> 15 16<body> 17 18 19 20 21 22<?php 23header("Content-Type: text/html; charset=UTF-8"); 24 25 26 27session_start(); 28header('Expires: -1'); 29header('Cache-Control:'); 30header('Pragma:'); 31 32if($_SERVER['REQUEST_METHOD'] === 'POST'){ 33 $user_name = $_POST['name']; 34 $user_furigana = $_POST['furigana']; 35 36 $user_otoiawasenaiyou = $_POST['otoiawasenaiyou']; 37 38$error = array(); 39 40 41} 42 43?> 44 45<?php 46 47include("./header.php"); 48?> 49 50 51 52<div class="otoiawase"> 53<div class="waku"> 54 55 <h1>お問い合わせ</h1> 56 <div class="otoiawase2"> 57 <p class="koumoku">下記の項目をご記入さい</p> 58 59 <div class="nyuryoku"> 60 <form method="post" action="./contact.php" name="form"> 61 62 63 <p class="nyuryokus">氏名<span>*</span></p> 64 <?php 65 if($_SERVER['REQUEST_METHOD'] === 'POST'){ 66 if ($user_name =='' or mb_strlen($_POST['name']) > 10){ 67 echo $error[$user_name] = '<span color="#FF0000">氏名は必須入力です。10文字以内でご入力ください。</span>'; 68 69 } 70 } 71 ?> 72 <input type="text" name="name" 73 placeholder="山田太郎" value="<?php if($_SERVER['REQUEST_METHOD'] === 'POST'){ 74 echo htmlspecialchars($_POST['name']);}?>"> 75 <p class="nyuryokus">フリガナ<span>*</span></p> 76 <?php 77 if($_SERVER['REQUEST_METHOD'] === 'POST'){ 78 if ($user_furigana =='' or mb_strlen($_POST['furigana']) > 10){ 79 echo $error[$user_furigana] = '<span color="#FF0000">フリガナは必須入力です。10文字以内でご入力ください。</span>'; 80 } 81 } 82 ?> 83 84 <input type="text" name="furigana" 85 placeholder="ヤマダタロウ" value="<?php if($_SERVER['REQUEST_METHOD'] === 'POST'){ 86 echo htmlspecialchars($_POST['furigana']);}?>"> 87 88 </div> 89 <p class="koumoku nyuryokus">お問い合わせ内容をご記入ください 90 <span>*</span></p> 91 <?php 92 if($_SERVER['REQUEST_METHOD'] === 'POST'){ 93 if ($user_otoiawasenaiyou ==''){ 94 echo $error[$user_otoiawasenaiyou]='<span color="#FF0000">お問い合わせ内容は必須入力で 95 す。</span>'; 96 } 97 } 98 ?> 99 <textarea type="text" name="otoiawasenaiyou" class="otoiawasenaiyou1" value="<?php 100 if($_SERVER['REQUEST_METHOD'] === 'POST'){ 101 echo htmlspecialchars($_POST['otoiawasenaiyou']);}?>"></textarea> 102 103 <a href=""><input class="bottun" type="submit" value="送 信" onclick="return check()"></a> 104 105 </form> 106 107 108 //ここにエラー 109 <?php if($_SERVER['REQUEST_METHOD'] === 'POST'){ 110 $_SESSION['form'] = $_POST; 111 if (count($error) === 0) { 112 header('Location:confirm.php'); 113 exit; 114 115 }}?> 116 117 118 119 120 121 </div> 122 </div> 123 124 </div> 125 </div> 126 127 128 <?php include("./footer.php"); ?> 129 130 131 132 133</body> 134 135 136</html>

header.php

1 2<!DOCTYPE html> 3<html lang="ja"> 4<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# website: http://ogp.me/ns/website#"> 5<meta charset="UTF-8"> 6<meta name="viewport" content="width=device-width,initial-scale=1.0"> 7<title></title> 8<meta name="description" content="width=device-width,initial-scale=1"> 9<link rel="stylesheet" href="./header.css"> 10</head> 11<body> 12 <div class="wrapper"> 13 <header> 14 15 16 17 18 19 20 21 22 23 24 25<div class="login" > 26 <p>ログイン</p> 27 <div class="boder"></div> 28 <div class="login1"> 29 <input type="text" name="mall" placeholder="メールアドレス"><br> 30 <input type="text" name="pass" placeholder="パスワード"><br> 31 <a href=""><input class="bottun" type="submit" value="送 信"></a> 32 33 34 </div> 35 <div class="boder"></div> 36 <div class="login1"> 37 <button class="icon"><img src="./cafe/img/twitter.png" width="30px" height="30px"></button> 38 <button class="icon"><img src="./cafe/img/fb.png" width="30px" height="30px"></button> 39 <button class="icon"><img src="./cafe/img/google.png" width="30px" height="30px"></button> 40 <button class="icon"><img src="./cafe/img/apple.png" width="30px" height="30px"></button> 41</div> 42</div> 43 44 45 46 47<div class="menuhaikei js-header "> 48 <div class="menu width1200"> 49 50 <div class="logo"> 51 <img src="./cafe/img/logo.png"> 52 </div> 53 54 <div class="back_hamburger open"> 55 <button class="hamburger"> 56 <span class="hamburger_bar"></span> 57 <span class="hamburger_bar"></span> 58 <span class="hamburger_bar"></span> 59 </button> 60 </div> 61 62 <ul> 63 <li><a href="./index.php #area-1">は</a></li> 64 <li><a href="./index.php #area-2">体</a></li> 65 <li><a href="./contact.php">お</a></li> 66 </ul> 67 68 <div class="p2"> 69 <p2 class="open2">サ</p2> 70 </div> 71 72 </div> 73 74 <div class="hamburger_menu"> 75 <ul> 76 <li><a href="" class="open2" >サ</a></li> 77 <div class="boder"></div> 78 <li><a href="./index.php #area-1">は</a></li> 79 <li><a href="./index.php #area-2">体</a></li> 80 <li><a href="./contact.php">お</a></li> 81 </ul> 82 </div> 83 84 85 86</div> 87</header> 88</div> 89<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 90<script> 91 92</script> 93</body> 94 95 96</html> 97

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

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

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

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

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

guest

回答2

0

ベストアンサー

headerはあらゆる出力の前に記載する必要があります
場合によってはBOMでさえ引っかかることがありますので・・・

投稿2022/11/07 09:50

yambejp

総合スコア114572

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

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

ott0000

2022/11/07 10:13

やっぱりそうですよね…回答いただいてから$errorのエラー判定を上に書き直して、header()馬上に書き直し、解決できましたありがとうございます。
guest

0

headerを含む部分だけ上に持っていけばいいのではないでしょうか。

php

1<?php 2header("Content-Type: text/html; charset=UTF-8"); 3 4 5 6session_start(); 7header('Expires: -1'); 8header('Cache-Control:'); 9header('Pragma:'); 10 11if($_SERVER['REQUEST_METHOD'] === 'POST'){ 12 $user_name = $_POST['name']; 13 $user_furigana = $_POST['furigana']; 14 15 $user_otoiawasenaiyou = $_POST['otoiawasenaiyou']; 16 17$error = array(); 18 19 20} 21 22?> 23<!DOCTYPE html> 24 25<!-- 中略 --> 26 27<body> 28 29<?php 30 31include("./header.php"); 32?> 33

投稿2022/11/07 09:44

maisumakun

総合スコア145121

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問