无法从SESSION获取变量

时间:2013-04-17 08:01:06

标签: php session

我的学校项目有问题。我已经向老师和同学们寻求帮助,但他们都不知道该怎么做。

我制作了一款基于浏览器的游戏,显然它需要有用户。这就是问题所在。

当我登录并继续进行身份验证页面时,它从POST中提取信息就好了,但是当我在身份验证中将信息插入SESSION然后转到主页索引时,它拒绝获取SESSION信息,我只是得到一个错误。

注意,design2.php与登录过程无关。

以下是代码:

的login.php

<?php
include_once'design2.php';
?>

<div id="center">

<form method="POST" action="authenticate.php">
User Name <input id="input" type="text" name="player" size="21">
Password <input id="input" type="password" name="password" size="21">
<br>
<input type="submit" value="Login" name="submit">

<br><br>Not Registered? <a id='underlinelink' href='register.php'>Register</a>

Authenticate.php

<?php
include_once 'connect.php';
?>
<div id="center">
<?php
if (isset($_POST['submit']))
{
  $player=$_POST['player'];
  $password=$_POST['password'];
  $player=strip_tags($player);
  $password=strip_tags($password);
  $password=md5($password);

  $query = "select name, password from players where name='$player' and password='$password'";
  $result = mysql_query($query) or die("Could not query players");
  $result2 = mysql_fetch_array($result);
  if ($result2)
  { 
    $_SESSION['player'] = $player;

    echo "<big>Logged in successfully<br>";
    echo "<A id='underlinelink' href='index.php'>Continue</a></big>";
  }
  else
  {
   echo "<big>Wrong username or password.<A id='underlinelink' href='login.php'>Try Again</a></big>";
  }
}
?>
</div>

Design.php(这是我网站上的每个网页)

<?php
include_once 'connect.php';
?>

<link href="stilark.css" rel="stylesheet" type="css" />

<?php
session_start();  

if(isset($_SESSION['player']))
    $player = $_SESSION['player'];
else
    echo "could not logg in, <a href='login.php'>Go back</a>"; 
    exit;

$playerinfo="SELECT * from players where name='$player'";
$playerinfo2=mysql_query($playerinfo) or die("could not get player stats!");
$playerinfo3=mysql_fetch_array($playerinfo2);

?>

请帮忙,我真的需要在到期前完成这项工作。

3 个答案:

答案 0 :(得分:1)

您需要在写入之前创建或恢复会话。因此,在您执行$_SESSION['player'] = $player; Authenticate.php 中,首先创建一个与您在其他文件中完全相同的会话。像这样的东西

Authenticate.php

<?php
session_start();
include_once 'connect.php';
?>
<div id="center">
<?php

// Rest of your code
// ...

if ($result2)
{ 
    $_SESSION['player'] = $player;

// and so on...

另外,正如@DamienLegros在他的回答中所说,你应该在代码中尽早得到session_start()语句,即作为第一个语句之一,所以你要确保之前没有输出它开始了。否则,您将开始收到错误,指出headers has already been sent

答案 1 :(得分:0)

您的session_start()必须在任何输出之前

<?php
session_start(); 
include_once 'connect.php';
?>

<link href="stilark.css" rel="stylesheet" type="css" />

答案 2 :(得分:0)

<?php
session_start();
include_once 'connect.php';
?>
<div id="center">
<?php
if (isset($_POST['submit']))
...
...
...

注意:在session_start();页面

的顶部添加Authenticate.php