在php中注册、会话启动和重定向

在php中注册、会话启动和重定向,php,session,registration,Php,Session,Registration,我有以下registration.php文件: <?php include_once("QueryNew.php"); if (!get_magic_quotes_gpc()) { $email=addslashes($_POST["email"]); $password=addslashes($_POST["password"]); $confirmpassword=addslashes($_POST["confirmpassword"]); $uid=uniqid(); }

我有以下registration.php文件:

<?php 
include_once("QueryNew.php"); 

if (!get_magic_quotes_gpc()) {

$email=addslashes($_POST["email"]);
$password=addslashes($_POST["password"]);
$confirmpassword=addslashes($_POST["confirmpassword"]);
$uid=uniqid();

}

if (trim($email," ") == "" || trim($password," ") == "" && trim($confirmpassword," ") == ""){
    echo "<script type='text/javascript'>window.location='logintips.php?regErr=All fields are mandatory'</script>";
}

if (trim($password," ") != trim($confirmpassword," ")){
    echo "<script type='text/javascript'>window.location='logintips.php?regErr=Passwords didnot match'</script>";
}

if (trim($email," ") != "" || trim($password," ") != "" && trim($confirmpassword," ") != ""){

        $insertQuery = "INSERT INTO user VALUES('".$uid."','".$email."','".$password."','',1,".CURRENT_TIMESTAMP.")";
        $qry = new QueryNew();
        $insert = $qry->executeSelect($insertQuery);

        $SELECT_STAR = "select uid, email, timezone from ";

        $selectQuery = $SELECT_STAR . "user" . " where email = '".$email."'";

        $qry = new QueryNew();
        $select = $qry->executeSelect($selectQuery);

        while($row = mysql_fetch_assoc($select)) {
            $uidS = $row['uid'];
            $emailS = $row['email'];
        }

**//store $uidS and $emailS in a session variable and redirect to a (home) page**

}
?>
这会产生一个错误:

**Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\website\try\MAIN\HOME\QueryNew.php:43) in C:\xampp\htdocs\website\try\MAIN\HOME\register.php on line 45**
如果有比上述更好的方法,请建议。


 ob_start();

------------------
-----------
-------

ob_end_flush() ;

阅读错误消息


QueryNew.php
正在生成一些输出(在第43行)。在开始会话之前,不应回显或打印任何内容。您可以在包含
QueryNew.php
之前启动会话

只需将ob_start()放在页面顶部,即可解决此错误。

原始错误消息比“上面的消息不起作用..说会话已创建”之类的消息要好数十万倍已在文件中定义,请尝试删除该文件line@zerkms:编辑原始帖子-在已开始的地方添加实际错误session@MohitBumb:嗯。。这就是为什么我发布了这个问题。。找到答案!谢谢但有并没有办法“用db值创建一个会话并重定向到其他页面(比如主页)”我检查了这个问题。。在我的完整文件中只有一个标记!您可以通过在脚本中调用OBJSTART()和ObjEnthFLUHSH(),或者在PHP.ini或服务器配置文件中设置OutPutsFuffon配置指令。一个好的设计不需要输出缓冲区,如果您使用OB,那么您应该考虑重新设计架构。
 ob_start();

------------------
-----------
-------

ob_end_flush() ;
<?php ob_start();
if(session_id()){
//Session is already started
}else{
session_start();
}
?>