前提・実現したいこと
ログイン機能を作っております。
php5.6では成功しているものの7.0以降にすると、エラーがおきてしまいます。
自分では、よくわからないためエラーの対応を教えてください。
もしよければ、こちらのコード事態は正常かどうかのご意見をいただきたいです。
発生している問題・エラーメッセージ
login_form.php Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at hoge/login_form.php:1) in hoge/login_form.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at hoge/login_form.php:1) in hoge/login_form.php on line 4 Warning: Cannot modify header information - headers already sent by (output started at hoge/login_form.php:1) in hoge/login_form.php on line 11
login_check.php Warning: session_regenerate_id(): Cannot regenerate session id - headers already sent in hoge/login_check.php on line 81 Warning: Cannot modify header information - headers already sent by (output started at hoge/db.php:1) in hoge/login_check.php on line 84
該当のソースコード
php
1<?php 2session_start(); 3 4header("Content-type: text/html; charset=utf-8"); 5 6//クロスサイトリクエストフォージェリ(CSRF)対策 7$_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32)); 8$token = $_SESSION['token']; 9 10//クリックジャッキング対策 11header('X-FRAME-OPTIONS: SAMEORIGIN'); 12 13?> 14 15<!DOCTYPE html> 16<html> 17<head> 18<title>ログイン画面</title> 19<meta charset="utf-8"> 20</head> 21<body> 22<h1>ログイン画面</h1> 23 24<form action="login_check.php" method="post"> 25 26<p>アカウント:<input type="text" name="account" size="50"></p> 27<p>パスワード:<input type="text" name="password" size="50"></p> 28 29<input type="hidden" name="token" value="<?=$token?>"> 30<input type="submit" value="ログインする"> 31 32</form> 33<a href="hoge/sendmail.php">新しくアカウントを作成</a> 34 35</body> 36</html>
<?php session_start(); header("Content-type: text/html; charset=utf-8"); //クロスサイトリクエストフォージェリ(CSRF)対策のトークン判定 if ($_POST['token'] != $_SESSION['token']){ echo "不正アクセスの可能性あり"; } //ここで処理が止まってしまう。 ?> </body> </html>
試したこと
output_buffering=On やbom付等の確認。session_start,headerの位置。
補足情報(FW/ツールのバージョンなど)
visualstadio 2019 ,ffftp
valudominサーバー エコプラン
回答1件
あなたの回答
tips
プレビュー