我的学校项目有问题。我已经向老师和同学们寻求帮助,但他们都不知道该怎么做。
我制作了一款基于浏览器的游戏,显然它需要有用户。这就是问题所在。
当我登录并继续进行身份验证页面时,它从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);
?>
请帮忙,我真的需要在到期前完成这项工作。
答案 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