还是那个老问题:在session_start();之前不能有任何输出,即使一个空格都不行!你用过header()函数吗?session_strart()同他有一样的要求,在这两个函数之前都不能有任何的http输出。举例:
<?phpsession_start();
……
?>
这时在session_start()之前有一个空行,这样就会出现你看到的错误提示了。<?php
<html>
session_start();
……
?>
这样也不行了,总之在session_start()之前不能让浏览器接收到任何可以解释或显示的数据。
所以必须将session_start()放在文件的最开始。
不过,在session_start()之前可以有php注解。

解决方案 »

  1.   

    将$s1="222";放在session_start();之前
      

  2.   

    其实并不一定session要在形式上放在最前面,但是,在内容上他必须在header中,发送到IE。headers already sent by,说明header早已经发送过了,则不会再发送第二次。所以会提示以上错误“header already sent by ”。关于这个问题,你还可以用缓冲区控制函数来实现:ob_start()&ob_end_flush()(建议你阅读先观的资料).对于第二种warning :Warning: open(c:\tmp\sess_f983a2399d340b31611056e2c4793533, O_RDWR) failed: m (2) in c:\inetpub\wwwroot\php\index.php on line 5
    是服务器端SESSION的存储路径(session.save_path,在php.ini中),你确定存在c:\tmp\这个目录吗?你配置了save-path的值了吗?如果没有的话,你修改一下,php.ini中session.save_path         = d:\mysite\tmp(一个你想要的路径) ; argument passed to 
    我想这样就应该可以了。
      

  3.   

    多谢各位我确实在前面有输出,另外,我把 session_save_path 写错了, c:\temp 写成 c:\tmp,现在没有错误提示了,不过我还是不懂用SESSION我在一个页面中
    session_start();
    session_register("s1");
    $s1="222";header("location:test2.php");在test2.php中
    echo session_name("s1");   怎么什么也没有输出?到底该怎么定义/读取SESSION变量?能给个例子么?
      

  4.   

    在test2.php顶部需有session_start();
      

  5.   

    session_name()函数不是这么用的,一般情况下不要使用取得session变量应该是:
    echo $HTTP_SESSIOM_VARS['s1'];
      

  6.   

    又发现个奇怪的问题
    <?php
    if ($ok) {
    ……
    $result=mysql_query("select * from test where psw='".$psw."'");
    if (!mysql_num_rows($result)) {
        echo "密码错误";
    } else {
        echo "通过";
    }
    }
    ?>
    ……
    <form method=post action="<?echo $PHP_SELF?>">
    <input type="password" name="psw">
    <input type="submit" name="ok" value="提交">
    </form>假设密码是abc,当我输入abc,提交时是通过的,但如果我输入abc再加空格,仍然是通过的,为什么 $psw="abc" 而不是 $psw="abc "?请高手指教分数可以再加
      

  7.   

    to:qsnake(呵呵) 
    多谢,请问cookie变量怎么读呢?只有 setcookie 函数,怎么没有 getcookie
      

  8.   

    好像可以直接用cookie的变量,不必要getcookie
      

  9.   

    test.php:setcookie ("test","111",time()+3600);header("location:index.php");index.php:echo $test;     //这里输出为空我现在发现是由于在test.php中用了 header,如果将header 改为 用脚本跳转页面,则在index.php中可以输出 $test 为111;
    为什么用了header函数COOKIE就不正常了呢?有什么办法解决这个问题么?PHP中有什么函数相当于 ASP 中的response.redirect呢?
    请高手回答,分数一定给,多谢了
      

  10.   

    有人能讲一下么?请问如何实现同ASP中的EXPIRES=0,即强制网页每次浏览都必须从网站重新读取(IE后退键实效)  
      

  11.   

    有人能讲一下么?请问如何实现同ASP中的EXPIRES=0,即强制网页每次浏览都必须从网站重新读取(IE后退键实效)  
      

  12.   

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Pragma" content="no-cache">
    <title></title>
    </head>
      

  13.   

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
      

  14.   

    about cookie
    test.php:
    setcookie ("test","111",time()+3600);
    header("location:index.php");index.php:
    echo $test;    //这里输出为空
    我这里是好的,有时只能用print ,不能用echo.我搞不清它们的区别
      

  15.   

    建议对于任何cookie,session变量
    这样取得:
    $HTTP_COOKIE_VARS['varname'],$HTTP_SESSION_VARS['varname']