質問: phpでログイン機能を実装中にエラーが起きました。 headerで指定したページに飛ばず、画面が真っ白になってしまいます。 エラーメッセージ PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /Applications/MAMP/htdocs/shopkart/function/common.php:2) in /Applications/MAMP/htdocs/shopkart/staff_login/staff_login_check.php on line 35 Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/shopkart/function/common.php:2) in /Applications/MAMP/htdocs/shopkart/staff_login/staff_login_check.php on line 39 該当のソースコード ・staff_login_check.php prepare($sql); $data[]=$staff_code; $data[]=$staff_pass; $stmt->execute($data); $dbh=null; $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { print 'スタッフコードかパスワードが間違っています。'; print ' 戻る'; } else { session_start(); $_SESSION['login']=1; $_SESSION['staff_code']=$staff_code; $_SESSION['staff_name']=$rec['name']; header('Location:staff_top.php'); exit(); } } catch(Exception $e) { print 'ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?> ※先頭の
回答: ありがちなケースとして common.php のプログラムの最後に ?> (ここに改行) こんな風に閉じタグの後ろに改行が入ってると改行が出力されてエラーになります。 PHPプログラムの最後は閉じタグ「?>」を記述しない方が無難です