phpでログイン認証画面システムを作成しました。
1.base.php、認証画面の表示。
2.lform.phpで、ログインフォームの呼び出し。
3.LoginUserCheck.phpで、DBに接続し、ユーザーが存在するならSESSION["flag"]に値を入力し
ページ内容の切り替え。
という内容を作りました。
ユーザーID または、パスワードを未入力で、「ログイン」ボタンを押したところ、
【ユーザーIDが入力されていません。
Warning: Cannot modify header information - headers already sent by ~~】と、
ユーザーに未入力を促すメッセージ + Warningメッセージが出るという事象が発生しました。
色々検索してみたところ、
【header関数の前に、何か出力しているとよく発生するエラー】
ということまでわかりました。
ただ、今回使用した3つのphpファイルには、【header関数は使用しておりません】。
色々対応していくと、
php.iniの【output_buffering = Off】から【output_buffering = On】に変更すると
【ユーザーIDが入力されていません。】のメッセージ出力のみで
Warningメッセージ が出なくなりました。
■質問
【output_buffering = Off】から【output_buffering = On】
にして、なぜWarningメッセージが出なくなったのでしょうか。
output_bufferingは、出力をバッファにためる?
ぐらいの認識なのですが、これによる効果のものなのでしょうか。
ご教授よろしくお願いします。
=======================*base.php*ここから=================
*base.php*
<?php
require_once("lform.php");
require_once("LoginUserCheck.php");
session_start();
if(isset($_POST['username'])){
$login = new LoginUserCheck($_POST['username'], $_POST['password']);
$login->usercheck();
}
if(!isset($_SESSION["flag"])){
//ログインできていなければログインページ表示
lform();
}else{
//ログインできていれば普通のページを表示
print("<html><head><title>セッション開始ページ</title></head><body>");
print("ログインしました<br>");
print("<a href='pageb.php'>PageBへのリンク</a>");
}
?>
====*lform.php*ここより====
<?php
function lform() {
//ログインフォーム表示
print("<html><head><title>ログインページ</title></head><body>");
print("<form method='POST' action=' " . $_SERVER['PHP_SELF'] . " '> ");
print("userID:<input type='text' name='username' size='15' maxlength='20'><br>");
print("pass:<input type='password' name='password' size='15' maxlength='20'><br>");
print("<input type='submit' value='ログイン' /></form>");
}
?>
====*LoginUserCheck.php*ここより====
<?php
class LoginUserCheck {
public function usercheck(){
//エラー処理
if($_POST['username']が未入力なら){
print("ユーザーIDが空白です<br>");
}
if($_POST['password']が未入力なら){
print("パスワードが空白です<br>");
}
//userとpassが入力済みなら接続し、SESSION[flag]を設定する。
if(!($_POST['username'] == "") && !($_POST['password']"")){
try {
~DB接続し、ログインができたなら、$_SESSION["flag"]に、値を代入~
} catch (PDOException $e) {
print("接続エラーー: " . $e->getMessage());
}
}
}
?>
==========================ソースここまで==============
No.1ベストアンサー
- 回答日時:
>今回使用した3つのphpファイルには、【header関数は使用しておりません】。
headerは使っていなくても、session_startやsetcookieがあれば「同じこと」ですよね(headerがどういう動作をするのかを考えれば自明だと思いますが・・・)。
>なぜWarningメッセージが出なくなったのでしょうか。
output_bufferingはheaderやsetcookie「以外の」出力(つまりhttpレスポンスヘッダでなくhttpレスポンスボディ)をバッファリングするからです。
http://www.php.net/manual/ja/intro.outcontrol.php
>output_bufferingはheaderやsetcookie「以外の」出力(つまりhttpレスポンスヘッダでなくhttpレスポンスボディ)をバッファリングするからです。
なるほどそういうことですか。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP php テーブルが作成できない 1 2022/11/17 23:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPとCSVで簡易データベースな...
-
FORMで送信ボタンと戻るボタン...
-
値が渡されない
-
form actionで二つ送信先を指定...
-
PEAR Image_QRCodeのエラー
-
ワンクリックしかできないクリ...
-
onedrive にexcelファイルをア...
-
こちらはただの直列処理ですか?
-
ワードプレス、Contact Form 7...
-
拡張子php画像をjpg画像等に変...
-
include先でのinclude元の変数...
-
リダイレクト元のURLの取得方法...
-
メールフォームのタイトルが文...
-
php エラー
-
PHPのif文でその処理を途中で抜...
-
VBでメールを送る時のSMT...
-
one drive のアップロード失敗...
-
別PHPファイルに変数を渡す
-
ワードプレスサイト PHP8.0.25...
-
パースエラーとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データ送信をボタンを押さずに...
-
form actionで二つ送信先を指定...
-
データベース接続 ログインフ...
-
ボタンのクリック数を合計保存...
-
FORMで送信ボタンと戻るボタン...
-
テキストボックスにデータベー...
-
header(Location: next.php) だ...
-
inputタグでphpを呼び出す際、...
-
Auth認証エラー
-
PHP table内、<a href使って su...
-
値が渡されない
-
別のファイルへ値を受け渡す方法
-
【WordPress】投稿がないカテゴ...
-
header.locationで、画面遷移、GET
-
multipart/form-dataを使ったデ...
-
選択肢により様々なページに飛...
-
PHP検索結果を別ページに還移さ...
-
textareaの受け渡し
-
xamppでformによるデータの送信...
-
同じコードを使っているのにエ...
おすすめ情報