在php中注册、会话启动和重定向
我有以下registration.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(); }
<?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();
}
?>