以下は、
(1) テキストフォームに記入された値をPOSTすると
(2) 文字列はSESSION変数としてセットされてpage2に遷移し
(3) page2 に書き出される
というものですが、
ローカルのWInXP(SP3)+IIS+PHP5.2.6では動作するプログラムが
今般レンタルしたサーバー上で(FreeBSD+Apache1.3.37+PHP5.2.2)
では動作しません。
具体的には、page2.phpに遷移できずに
Warning: Cannot modify header information - headers already sent by (output started at /usr/home/myaccountname/public_html/page1.php:7) in /usr/home/myaccountname/public_html/page1.php on line 14
となります。
ちなみに、page1.phpの<?php $_SERVER["PHP_SELF"] ?>を
page1.phpに書き換えても改善ありませんでした。
ローカルで動いていたものがそのまま動作するとも思っていませんが、
見直すべき設定項目として、何がありますでしょうか?
---------------------------page1.php
<?php
session_cache_limiter('none');
session_start();
?>
<html>
<body>
<form method="post" action="<?php $_SERVER["PHP_SELF"] ?>">
<input type="text" name="email">
<input type="submit" name="reg">
</form>
<?php
if ($_POST['email'] != "") {
$_SESSION["email"] = $_POST["email"];
header("Location: page2.php");
}
?>
</body>
</html>
---------------------------page2.php
<?php
session_cache_limiter('none');
session_start();
?>
<html><body>
<?php
echo $_SESSION["email"];
?>
</body></html>
No.1ベストアンサー
- 回答日時:
page1.phpに問題があります。
header関数はあらゆる出力の前にコールされる必要があることになっています。
http://jp2.php.net/header
従って、header関数を使うなら以下のような感じに書き直すべきでしょう。
<?php
session_cache_limiter('none');
session_start();
if (isset($_POST['email'])) {
$_SESSION["email"] = $_POST["email"];
header("Location: page2.php");
}
?>
<html>
(省略)
</html>
余談ですが、遷移先は絶対URIで記述しないと受け付けないクライアントもあった気がします。
UmJammerさん、早速のご回答ありがとうございました。
ご教示の内容を読んで凍り付いてしまったのですが、
なまじっか、Win(IIS)上で、ちゃんと動いていたことに過信し、
既に、ほとんどのプログラムが完成してしまっている状況です。
さあ、本番環境(レンタルサーバー)でテストしようかという矢先の
トラブルで、途方に暮れています。困りました、、、
ともかく、対策を考えて見ます。ありがとうございました。
No.2
- 回答日時:
ANo.1です。
なるほど、同様の記述がたくさんあるということですね。
良い方法かわかりませんが、output_bufferingを有効にするという対策もあるかと思います。
UmJammerさん、たびたびのアドバイスありがとうございました。
わたしもちょうど、output_bufferingを有効にするという対策にたどり着いていたところです。
http://go4it.seesaa.net/article/73726670.html
(そういえば、過去にIISで開発時も、この設定をOnにしたような記憶もあるような気がします。)
一応、Onで動作は確認できました。首吊りそうでした(^^;ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー Warning: Cannot modif...
-
日付と年月日を選択するコード...
-
文字化けについて
-
「ksort」は日本語も対応してい...
-
前後の全角スペースを削除する...
-
PHP(smarty)についての質問(文...
-
onedrive にexcelファイルをア...
-
別ファイルの変数を呼び出した...
-
PHPの設定で、 エラーが発生し...
-
【PHP】declare命令で”Fatal er...
-
.phpと.incファイルの違いはな...
-
CFileDialogの最初のディレクト...
-
bindValueエラー
-
「@$変数」の「@の意味は?」
-
apache・phpが起動しない・・・
-
フォントの色を変えるには?
-
バッチを用いたフォルダの自動移動
-
MySQLのdatetime型の月日0を削...
-
<A href ~ と一緒に値を渡すには
-
makefile でファイルをコピーす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化けについて
-
日付と年月日を選択するコード...
-
複数の文字列をファイルに書き...
-
phpの画面表示が真っ白です
-
ヒアドキュメントを中断してinc...
-
前後の全角スペースを削除する...
-
PHP(smarty)についての質問(文...
-
初心者で数当てゲームを作って...
-
どうしたら確認ができますか!?
-
すみません また宜しくお願い...
-
ローカル環境で動くのに本番環...
-
PHPのWebアプリ作成
-
PHPをはじめて1日目なので・・・
-
PHPで地域名のみ変更
-
php エラー
-
HTMLとPHP間のデータ受け渡し
-
さくらインターネットレンタル...
-
file_get_contents関数なのですが
-
XAMPP1.7.1上でPHPを実行すると...
-
mb_convert_variablesで変換出...
おすすめ情報