PHP会话和包括

时间:2012-09-17 13:12:12

标签: php html

PHP中的sessionsincludes存在一个非常棘手的问题。我有一个名为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: ");不要工作,我想是出于同样的原因。任何帮助将不胜感激!谢谢大家!

4 个答案:

答案 0 :(得分:2)

发送标题前没有输出!

如果您在标题之前键入了任何内容,则会导致标题错误,即使<?php之前的白色样条会导致错误

有关更多信息,请查看stackoverfow上的Headers already sent by PHP问题

点击此链接至Having two different sessions in same domain

答案 1 :(得分:1)

在您使用的页面顶部使用session_start();功能$_SESSION 。确保在session_start()

之前没有一个空格 首先在php中所有标题传输中的文本,如果存在单个空格,则文本将被发送到浏览器,您的会话将无法启动,并且您无法使用$_SESSION[]所以请在顶部写入页面

答案 2 :(得分:0)

session_start();

应位于页面的开头

答案 3 :(得分:0)

问题可能是由代码开头的不可打印字符引起的,或者您在标题中写了一些值。