PHP中的sessions
和includes
存在一个非常棘手的问题。我有一个名为index.php
的页面,其中我在不同的页面之间有switch
函数:
<?php $p=(isset($_GET["p"])?$p=intval($_GET["p"]):$p=1); switch($p) {
case 1: $pagina = "login_and_registration.php";
break;
case 2: $pagina = "admin/registrazione.php";
break;
case 3: $pagina = "admin/login_test.php";
break;
case 4: $pagina = "logged_gym.php";
break;
case 5: $pagina = "logged_trainer.php";
break;
case 7: $pagina = "logout.php";
break;
case 8: $pagina = "admin/completa_profilo_trainer_sql.php";
break;
case 10: $pagina = "error.php";
break;
case 12: $pagina = "profilo_min.php";
break;
case 13: $pagina = "splash.php";
break;
default: $pagina = "index.php";
break;} ?>
然后关闭文件正文中的代码我有一些包括:
<header class="container_12">
<?php include("login_errors.php")?>
<div id="logo_container" class="grid_4 push_4"></div></header >
这一个:
<section>
<?php include_once($pagina);?>
</section>
当我填写此页面中的表格时,对应于切换功能中的第1页,我在登录时遇到此错误(我开始一个带名字的新会话):
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /Applications/MAMP/htdocs/FitnessOptimize/index.php:63) in /Applications/MAMP/htdocs/FitnessOptimize/admin/login_test.php on line 73
在第63行的index.php中,我发布了第一个include
。关于如何避免这个bug的任何想法?我的header ("Location: ")
;不要工作,我想是出于同样的原因。任何帮助将不胜感激!谢谢大家!
答案 0 :(得分:2)
发送标题前没有输出!
如果您在标题之前键入了任何内容,则会导致标题错误,即使<?php
之前的白色样条会导致错误
有关更多信息,请查看stackoverfow上的Headers already sent by PHP问题
答案 1 :(得分:1)
在您使用的页面顶部使用session_start();
功能$_SESSION
。确保在session_start()
$_SESSION[]
所以请在顶部写入页面
答案 2 :(得分:0)
session_start();
应位于页面的开头
答案 3 :(得分:0)
问题可能是由代码开头的不可打印字符引起的,或者您在标题中写了一些值。