php mysql+;会话错误

php mysql+;会话错误,php,mysql,session,cookies,Php,Mysql,Session,Cookies,我正在创建一个包含登录页、个人资料页和注销页的网站。我正在使用会话,但是我在处理会话时遇到了问题,我无法理解错误是什么,或者在哪里修复它 我得到的错误在profile.php**((“需要登录才能查看配置文件”)第8行** 任何人有想法或解决方案请告诉我 login.php 您使用的是$\u SESSION,但没有在login.php页面中使用行SESSION\u start()正确启动会话。您所写的内容可能有一些错误。$logged==0是在global.php中定义的。它是否也在其中启动会话

我正在创建一个包含登录页、个人资料页和注销页的网站。我正在使用会话,但是我在处理会话时遇到了问题,我无法理解错误是什么,或者在哪里修复它

我得到的错误在profile.php
**((“需要登录才能查看配置文件”)第8行**
任何人有想法或解决方案请告诉我

login.php
您使用的是
$\u SESSION
,但没有在login.php页面中使用行
SESSION\u start()
正确启动会话。

您所写的内容可能有一些错误。
$logged==0
是在global.php中定义的。它是否也在其中启动会话(例如,在global.php中是否有
session\u start()

据我所知,
$logged
可能是任何东西,因此您会得到错误。如果不是在global.php中,那么在logging.php中启动会话也应该是固定的

嗯。从global.php中删除所有内容。如果希望只保留会话_start(),但将其从login.php和profile.php中删除

然后,您必须将检查数据库密码和用户名的sql查询移动到login.php而不是global.php,并使其如下所示

 //check if the member exist
 $query = mysql_query("SELECT * FROM members WHERE id='$session_id' AND   password='$session_pass'LIMIT 1")or die("could not ");
$count_count = mysql_num_rows($query);
if($count_count == 0){
//loged in stuff here
$logged = 1;
header("Location: profile.php");

 while($row = mysql_fetch_array($query)){
     $session_username = $row['username'];
  }
  //create sessions
$_SESSION['username'] = $session_username;
$_SESSION['id'] = $session_id;
$_SESSION['pass'] = $session_pass;


}else{
 $logged = 0;
 header("Location: logout.php");
exit();
}
在login.php中不需要这些代码(用上面的代码替换它们)


您需要知道的一件事是,在您已经开始发送内容之后,您无法发送标题。在发送HTML/echoin
profile.php
之后,您有
标题(“位置:…”)
,是什么设置了
$logged
?是的,global.php包含一个session\u start(),但是我不太理解您答案的第二部分,如果您在global中没有session\u start(),那么您在login.php中错误地使用了$\u session。您必须开始会话。现在,如果您在global中启动会话,为什么要在profile.php中再次启动它,那么$logged的分配又如何呢。请在您的问题中添加global.php。@idipous我编辑我的问题并添加global.php plz我需要此帮助,请查看我的编辑。你有几件事被误解了。如果你复制并粘贴我写的东西,很可能它不会马上起作用,但你会离我更近。似乎您从不同的地方复制粘贴的代码,或者您还不了解一些php概念。别担心,你会成功的。
<?php  
ob_start();
session_start();

require_once('for members/scripts/global.php'); 

if($logged == 0){
 echo("you need to be loged in to view profiles");
 exit();
}
if(isset($_GET['id'])){
 $id=$_GET['id'];
 $id= preg_replace("#[^0-9]#","",$id);

}else{
$id=$_SESSION['id'];
}
//collect member information
$query = mysql_query("SELECT * FROM members WHERE id='$id'LIMIT 1") or die("could not collect user information ");
$count_mem = mysql_num_rows($query);
if($count_mem == 0){
 echo("the user does not exit");
 exit();

}
while($row = mysql_fetch_array($query)){
  $username = $row['username'];
  $fname = $row['firstname'];
  $lname = $row['lastname'];
  $profile_id= $row['id'];

  if($session_id == $profile_id){
  $owner = true;
  }else{
   $owner = false;

  }

}



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php print("$fname"); ?> <?php print("$lname"); ?>'s profile</title>
<link href="style/stylesheet.css" type="text/css"/>
</head>

<body>
<div class="container center"> 
<h1><?php print("$username"); ?></h1>
<?php
if($owner == true ){
    header("Location: profile.php");
?>
<!--
<a href="#">edit profile</a><br />
<a href="#">account settings</a><br />
-->
<?php
}else{
    header("Location: index.php");
?>
<!--
<a href="#">private message</a><br />
<a href="#">add as friend</a><br />
--> 
<?php
}
?>
</div>
</body>
</html>
<?php flush(); ?>
<?php
session_start();

session_destroy();
/*
if(isset($_COOKIE['id_cookie'])){

setcookie("id_cookie", "", time()-50000,"/");

setcookie("pass_cookie", "", time()-50000,"/");

}
*/
if(isset($_SESSION['username'])){ 
echo("we could not log out try again!");
exit();
}else{
 header("Location: home.php");

}

?>
<?php
if(!isset($_SESSION))
{
session_start();
} 

require_once('connect.php'); 


//checking if sessions are set

if(isset($_SESSION['username'])){
 $session_username = $_SESSION['username'];
 $session_pass = $_SESSION['pass'];
 $session_id = $_SESSION['id'];

 //check if the member exist
 $query = mysql_query("SELECT * FROM members WHERE id='$session_id' AND password='$session_pass'LIMIT 1")or die("could not ");
$count_count = mysql_num_rows($query);
if($count_count == 0){
//loged in stuff here
$logged = 1;

 while($row = mysql_fetch_array($query)){
     $session_username = $row['username'];
  }
  //create sessions
$_SESSION['username'] = $session_username;
$_SESSION['id'] = $session_id;
$_SESSION['pass'] = $session_pass;


}else{
 header("Location: logout.php");
exit();
}



}
$logged = 0;
/*
elseif(isset($_COOKIE['id_cookie'])){
    $session_id = $_COOKIE['id_cookie'];
    $session_pass = $_COOKIE['pass_cookie'];

 $query = mysql_query("SELECT * FROM members WHERE id='$session_id' AND password='$session_pass'LIMIT 1")or die("could not ");
$count_count = mysql_num_rows($query);
if($count_count > 0){


//loged in stuff here
$logged = 1;
}else{
 header("Location: logout.php");
exit();
 }
 //if user is not log in

}
*/

?>
 //check if the member exist
 $query = mysql_query("SELECT * FROM members WHERE id='$session_id' AND   password='$session_pass'LIMIT 1")or die("could not ");
$count_count = mysql_num_rows($query);
if($count_count == 0){
//loged in stuff here
$logged = 1;
header("Location: profile.php");

 while($row = mysql_fetch_array($query)){
     $session_username = $row['username'];
  }
  //create sessions
$_SESSION['username'] = $session_username;
$_SESSION['id'] = $session_id;
$_SESSION['pass'] = $session_pass;


}else{
 $logged = 0;
 header("Location: logout.php");
exit();
}
$message = "";
if(isset($_POST['email'])){

  $email = $_POST['email'];
  $pass = $_POST['pass'];


  //error handeling
  if((!$email)||(!$pass)){
  $message = "please insert both fields";

  }else{
   // secure data
   $email = mysql_real_escape_string($email);
   $pass = sha1($pass);
   $query = mysql_query("SELECT * FROM members WHERE email='$email'AND password='$pass'LIMIT 1")or die(mysql_error());
   $count_query = mysql_num_rows($query);
   if($count_query == 0){
   $message = "the information was incorrect!";
   }else{
   //start the sessions
   $_SESSION['pass']=$pass;
   while($row = mysql_fetch_array($query)){
       $username = $row['username'];
       $id = $row['id'];

    }
    $_SESSION['username'] = $username;
    $_SESSION['id'] = $id;