###前提・実現したいこと
PHP5.5(CGI)からPHP5.6(モジュール及びCGI)に変更後sessionやheaderでエラーが出るようになり機能しなくなった問題を解決したいのでよろしくお願いします。
###発生している問題・エラーメッセージ
PHP5.5(CGI)では動作していましたが、PHP5.6(モジュール及びCGI)やPHP7.1(CGI)に変更したらwarningが出て機能しなくなった。
エラーメッセージ 1つ目:37行目 Warning: session_regenerate_id(): Cannot regenerate session id - headers already sent 2つ目:41行目 Warning: Cannot modify header information - headers already sent
###該当のソースコード
PHP
1<?php 2session_start(); 3//error_reporting(E_ALL); 4//ini_set('display_errors', 1); 5 6require_once('../models/DBlogin.php'); 7$dblogin = new DBlogin(); 8 9 10 11 12 $errorMessage = ""; 13//ログインボタンが押されたら 14if(isset($_POST["login"])) { 15 // 1.ユーザIDの入力チェック 16 if (empty($_POST["email"])) { 17 $errorMessage = "E-mailが未入力です。"; 18 } else if (empty($_POST["password"])) { 19 $errorMessage = "パスワードが未入力です。"; 20 } 21 22 if (!empty($_POST["email"]) && !empty($_POST["password"])) { 23 //エンティティ 24 $email = $dblogin->h($_POST["email"]); 25 $password = $dblogin->h($_POST["password"]); 26 //ハッシュ 27 $password = $dblogin->hashPassword($password); 28 //loginチェック 29 $result = $dblogin->isUserCheck($email, $password); 30 if ($result === true) { 31 //user_name categoryの取得 32 $user_name = $dblogin->getUserName($email); 33 $category = $dblogin->getCategory($email); 34 $user_id = $dblogin->getUserId($email); 35 //sessionの設定 36 **session_regenerate_id(true);** 37 $_SESSION["NAME"] = $user_name; 38 $_SESSION["CATEGORY"] = $category; 39 $_SESSION['USER_ID'] = $user_id; 40 **header("Location: main.php");** 41 } else { 42 $errorMessage = "E-mailまたはパスワードが違います"; 43 } 44 } 45} 46 47?> 48<!DOCTYPE html> 49<html lang="ja"> 50続く~
###試したこと
・session及びheaderより上でのhtml、print、echoが有るか確認
・requireしているファイルはPHPの記述のみで1行目の<?phpより前には何も記述は無しで最後の?>は記述していません。
###補足情報(言語/FW/ツール等のバージョンなど)
レンタルサーバー:lolipop
PHP バージョン5.6(モジュール)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 05:11