- 締切済み
会員管理システムを作っているのですが、エラーが出て困っています。
phpとsmartyで会員管理システムを構築しているのですが、以下のようなエラーが出て困っています。 エラー文 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\Login.class.php:1) in C:\xampp\htdocs\login.php on line 5 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\Login.class.php:1) in C:\xampp\htdocs\login.php on line 5 Warning: Smarty error: unable to read resource: "login.tpl" in C:\xampp\htdocs\Smarty.class.php on line 1092 このエラー文は何と言っているのですか? また、解決方法が分かる方、ご回答お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- masa6272
- ベストアンサー率66% (93/140)
最初の2つですが、session_start()の前にHTMLが送られているという意味です。session_start()はすべての出力の前に処理する必要があります。空白、改行1文字でも送っていたら、session_start()は動作しません。 ファイルの先頭 改行 <?php session_start(); でも、だめです。ファイルの先頭の改行が出力されています。 次のエラーは文字通りlogin.tplがないか、読めないと言うことです。Windowsのようですので、アクセス権の問題ではないでしょう。 テンプレートの名前が違うか、置く場所が間違っています。template_dirで指定した所に置いてあります?
補足
確認してみましたが、<?phpの前に改行も空白もありませんでした。 参考までにlogin.phpのプログラムを載せておきます。 <?php require('Smarty.class.php'); require('Login.class.php'); session_start(); $smarty = new Smarty; $login = new Login; if(empty($_SESSION["form1"])){ $_SESSION["form1"] = "input"; }else{ $login->checkPassword(); } $smarty->assign('pagetitle','ログイン画面'); $smarty->assign('errormsg',$login->errormsg); $smarty->assign('user', $login->user); $smarty->assign('passwd', $login->pass); if("checked" != $_SESSION["form1"]){ $smarty->display('login.tpl'); }else{ $_SESSION["user"] = "$login->user"; $smarty->display('welcome.tpl'); } ?> よろしくお願いします。