php mysql+;会话错误
我正在创建一个包含登录页、个人资料页和注销页的网站。我正在使用会话,但是我在处理会话时遇到了问题,我无法理解错误是什么,或者在哪里修复它 我得到的错误在profile.phpphp 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中定义的。它是否也在其中启动会话
**((“需要登录才能查看配置文件”)第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/echoinprofile.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;