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

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

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

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

Q&A

解決済

1回答

715閲覧

PHPのheaderでエラーを吐く...

nguyenseiji

総合スコア156

PHP

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

0グッド

0クリップ

投稿2020/08/12 12:04

編集2020/08/12 12:56

PHPのheaderを使いたいのですがうまく機能しません

エラー文『Cannot modify header information - headers already sent by』

調べたところprintやechoを使っているとエラーになると記載されていましたが

出力するようなコマンドは使用しておりません

自分なりの見解ですがif文で下記のコードを1個の時と2個以上使うときで2個以上使うとエラーが吐くっ見たいです

$stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)');

$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR);
$stmt->bindValue(2,$userName,PDO::PARAM_STR);
$stmt->bindValue(3,$fullName,PDO::PARAM_STR);
$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT);
$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR);
$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT);
$stmt->bindValue(7,$cart1Image,PDO::PARAM_STR);
$stmt->bindValue(8,$cart1Tittle,PDO::PARAM_INT);
$stmt->bindValue(9,$cart1Volume,PDO::PARAM_INT);
$stmt->bindValue(10,$cart1Price,PDO::PARAM_INT);
$stmt->bindValue(11,$cart1Id,PDO::PARAM_STR);
$stmt->bindValue(12,$cart1RandomCode,PDO::PARAM_INT);

$stmt->execute();

この場合はどのような書き方が一番よいのでしょうか?
実装内容的にカラムを一個追加する時と2個以上別々で追加する時で分けたいです

php

1<?php 2try{ 3 4ini_set('display_errors', "On"); 5require_once("../../confidential/detabaseAccses.php"); 6 7 8session_start(); 9session_regenerate_id(true); 10 11 12$userName = $_SESSION["userName"]; 13 14$isComingCarts = $_POST["isComingCarts"] ; 15$cart1Id = $_POST["cart1Id"]; 16$cart2Id = $_POST["cart2Id"]; 17$cart3Id = $_POST["cart3Id"]; 18$cart4Id = $_POST["cart4Id"]; 19$cart5Id = $_POST["cart5Id"]; 20 21 22 23$cart1Volume = $_POST["cart1Volume"]; 24$cart2Volume = $_POST["cart2Volume"]; 25$cart3Volume = $_POST["cart3Volume"]; 26$cart4Volume = $_POST["cart4Volume"]; 27$cart5Volume = $_POST["cart5Volume"]; 28 29 30 31$cart1Image = $_POST["cart1Image"]; 32$cart2Image = $_POST["cart2Image"]; 33$cart3Image = $_POST["cart3Image"]; 34$cart4Image = $_POST["cart4Image"]; 35$cart5Image = $_POST["cart5Image"]; 36 37 38$cart1Tittle = $_POST["cart1Tittle"]; 39$cart2Tittle = $_POST["cart2Tittle"]; 40$cart3Tittle = $_POST["cart3Tittle"]; 41$cart4Tittle = $_POST["cart4Tittle"]; 42$cart5Tittle = $_POST["cart5Tittle"]; 43 44 45$cart1Price = $_POST["cart1Price"]; 46$cart2Price = $_POST["cart2Price"]; 47$cart3Price = $_POST["cart3Price"]; 48$cart4Price = $_POST["cart4Price"]; 49$cart5Price = $_POST["cart5Price"]; 50 51 52 53 54$cart1RandomCode = $_POST["cart1RandomCode"]; 55$cart2RandomCode = $_POST["cart2RandomCode"]; 56$cart3RandomCode = $_POST["cart3RandomCode"]; 57$cart4RandomCode = $_POST["cart4RandomCode"]; 58$cart5RandomCode = $_POST["cart5RandomCode"]; 59 60 61 62 63 64$fullName = $_POST["fullName"]; 65$postalCode = $_POST["postalCode"]; 66$streetAddress = $_POST["streetAddress"]; 67$phoneNumber = $_POST["phoneNumber"]; 68 69 70 71 72 73 74if($isComingCarts == 0){ 75 76 77 $purchaseCode = str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"); 78 79 $stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)'); 80 81$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR); 82$stmt->bindValue(2,$userName,PDO::PARAM_STR); 83$stmt->bindValue(3,$fullName,PDO::PARAM_STR); 84$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT); 85$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR); 86$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT); 87$stmt->bindValue(7,$cart1Image,PDO::PARAM_STR); 88$stmt->bindValue(8,$cart1Tittle,PDO::PARAM_INT); 89$stmt->bindValue(9,$cart1Volume,PDO::PARAM_INT); 90$stmt->bindValue(10,$cart1Price,PDO::PARAM_INT); 91$stmt->bindValue(11,$cart1Id,PDO::PARAM_STR); 92$stmt->bindValue(12,$cart1RandomCode,PDO::PARAM_INT); 93 94$stmt->execute(); 95 96 97 98 99 100 101 102 103}else if($isComingCarts == 1){ 104 105 106 107 108 $purchaseCode = str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"); 109 110 $stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)'); 111 112$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR); 113$stmt->bindValue(2,$userName,PDO::PARAM_STR); 114$stmt->bindValue(3,$fullName,PDO::PARAM_STR); 115$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT); 116$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR); 117$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT); 118$stmt->bindValue(7,$cart1Image,PDO::PARAM_STR); 119$stmt->bindValue(8,$cart1Tittle,PDO::PARAM_INT); 120$stmt->bindValue(9,$cart1Volume,PDO::PARAM_INT); 121$stmt->bindValue(10,$cart1Price,PDO::PARAM_INT); 122$stmt->bindValue(11,$cart1Id,PDO::PARAM_STR); 123$stmt->bindValue(12,$cart1RandomCode,PDO::PARAM_STR); 124 125$stmt->execute(); 126 127 128 129$purchaseCode = str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"); 130 131$stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)'); 132 133$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR); 134$stmt->bindValue(2,$userName,PDO::PARAM_STR); 135$stmt->bindValue(3,$fullName,PDO::PARAM_STR); 136$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT); 137$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR); 138$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT); 139$stmt->bindValue(7,$cart2Image,PDO::PARAM_STR); 140$stmt->bindValue(8,$cart2Tittle,PDO::PARAM_INT); 141$stmt->bindValue(9,$cart2Volume,PDO::PARAM_INT); 142$stmt->bindValue(10,$cart2Price,PDO::PARAM_INT); 143$stmt->bindValue(11,$cart2Id,PDO::PARAM_STR); 144$stmt->bindValue(12,$cart2RandomCode,PDO::PARAM_STR); 145 146 147$stmt->execute(); 148 149 150 151$purchaseCode = str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"); 152 153$stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)'); 154 155$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR); 156$stmt->bindValue(2,$userName,PDO::PARAM_STR); 157$stmt->bindValue(3,$fullName,PDO::PARAM_STR); 158$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT); 159$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR); 160$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT); 161$stmt->bindValue(7,$cart3Image,PDO::PARAM_STR); 162$stmt->bindValue(8,$cart3Tittle,PDO::PARAM_INT); 163$stmt->bindValue(9,$cart3Volume,PDO::PARAM_INT); 164$stmt->bindValue(10,$cart3Price,PDO::PARAM_INT); 165$stmt->bindValue(11,$cart3Id,PDO::PARAM_STR); 166$stmt->bindValue(12,$cart3RandomCode,PDO::PARAM_STR); 167 168$stmt->execute(); 169 170 171 172$purchaseCode = str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"); 173 174$stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)'); 175 176$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR); 177$stmt->bindValue(2,$userName,PDO::PARAM_STR); 178$stmt->bindValue(3,$fullName,PDO::PARAM_STR); 179$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT); 180$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR); 181$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT); 182$stmt->bindValue(7,$cart4Image,PDO::PARAM_STR); 183$stmt->bindValue(8,$cart4Tittle,PDO::PARAM_INT); 184$stmt->bindValue(9,$cart4Volume,PDO::PARAM_INT); 185$stmt->bindValue(10,$cart4Price,PDO::PARAM_INT); 186$stmt->bindValue(11,$cart4Id,PDO::PARAM_STR); 187$stmt->bindValue(12,$cart4RandomCode,PDO::PARAM_STR); 188 189$stmt->execute(); 190 191 192 193$purchaseCode = str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"); 194 195$stmt = $dbh->prepare('INSERT INTO purchasehistory (purchaseCode,userName,fullName,postalCode,streetAddress,phoneNumber,image,tittle,volume,price,id,randomCode) values(?,?,?,?,?,?,?,?,?,?,?,?)'); 196 197$stmt->bindValue(1,$purchaseCode,PDO::PARAM_STR); 198$stmt->bindValue(2,$userName,PDO::PARAM_STR); 199$stmt->bindValue(3,$fullName,PDO::PARAM_STR); 200$stmt->bindValue(4,$$postalCode,PDO::PARAM_INT); 201$stmt->bindValue(5,$streetAddress,PDO::PARAM_STR); 202$stmt->bindValue(6,$phoneNumber,PDO::PARAM_INT); 203$stmt->bindValue(7,$cart5Image,PDO::PARAM_STR); 204$stmt->bindValue(8,$cart5Tittle,PDO::PARAM_INT); 205$stmt->bindValue(9,$cart5Volume,PDO::PARAM_INT); 206$stmt->bindValue(10,$cart5Price,PDO::PARAM_INT); 207$stmt->bindValue(11,$cart5Id,PDO::PARAM_STR); 208$stmt->bindValue(12,$cart5RandomCode,PDO::PARAM_STR); 209 210$stmt->execute(); 211 212 213 214 215 216 217 218 219 220 221} 222 223header('Location:../../salesPage/no1.php'); 224 225 226 227 228}catch(PDOException $e){ 229 print "表示エラー"; 230 print "<br>"; 231 die($e->getMessage()); 232 } 233 234 235?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

already sent by

なので、Locationが2回送信されているのが問題かと思います。
途中でLocationしたいのでしたら直後にexit()してそこで終了させるべきと思います。

確かLocation送信したとて、後続の処理は実行されたはずなので。

投稿2020/08/12 12:47

m.ts10806

総合スコア80765

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

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

nguyenseiji

2020/08/12 12:57

ありがとうございます ソースコードの方を修正させて頂きました if文でどちらの方向に進んでも heraderが実行されるようにif文の外に記載しましたが やはりエラーになってしまいます
nguyenseiji

2020/08/12 12:58

Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Hagoli\salesPage\buy\confirmPurchase.php:57) in C:\xampp\htdocs\Hagoli\salesPage\buy\confirmPurchase.php on line 223
nguyenseiji

2020/08/12 13:00

ありがとうございます exit()を header('Location:../../salesPage/no1.php');の前に 追加したら無事できました!
nguyenseiji

2020/08/12 13:05

すいません やはりできていなかったです exit()を使用する事によってエラー文が表示されていなかっただけでした...
m.ts10806

2020/08/12 13:08

とりあえず インデントはきちんと整えたほうが良いですよ。 ファイル名も単なる文字の羅列とはいえ、detabaseAccsesのようにスペルミスも今後大きな過ちをおかす可能性があります。
kyoya0819

2020/08/12 14:16 編集

参考になりそうなリンクを貼っておきます。 https://bit.ly/3kCc3lv > これらを元に、出力の前に header() 関数を呼び出すか、header() 関数が呼び出された後でアウトプットを開始するようにすれば問題が解決できます。 (bit.ly使ってますがリンク先はSOjaです
nguyenseiji

2020/08/13 03:19

ん... やはりできないですね 別の方法として下記のコードを記載しようかと思うのですが 問題ないでしょうか?
nguyenseiji

2020/08/13 03:19

print '<META http-equiv="Refresh" content="1;URL=shippingProcess.php">';
nguyenseiji

2020/08/13 03:19

上記のコードでしたら問題なく移行できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問