2013-04-17 2 views
0

У меня проблема с моим школьным проектом. Я попросил обоих моих учителей и одноклассников о помощи, но никто из них не знает, что делать.Невозможно получить переменные с СЕССИИ

Я сделал браузерную игру, и, очевидно, ей нужны пользователи. И вот в чем проблема.

Когда я вхожу в систему и перехожу к странице аутентификации, она извлекает информацию из POST только в порядке, но когда я вставляю информацию в SESSION в аутентификацию, а затем перехожу на индекс домашней страницы, она отказывается получить информацию СЕССИИ и i просто получите сообщение об ошибке.

ПРИМЕЧАНИЕ, 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); 

?> 

Пожалуйста, помогите, ir необходимо сделать это до своего прихода.

+0

ли 'session_start()', прежде чем писать в сессии, а также. Итак 'session_start()' перед тем, как вы '$ _SESSION ['player'] = $ player;' – Havelock

ответ

0

Ваш session_start() должен быть до любого вывода

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

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

... или в этом случае. – Havelock

+1

Генетическое правило заключается в том, что поставить session_start как первую строку после (конечно, между тегами вроде ) – Sahil

+0

попытался сначала поставить session_start(), не работал. Я по-прежнему получаю ту же проблему, что и раньше. –

1

Вам нужно создать или возобновить сеанс, прежде чем писать в него. Итак, в вашем Authenticate.php, где вы делаете $_SESSION['player'] = $player;, создайте сеанс сначала точно так же, как вы делаете это в других файлах. Что-то вроде этого

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

серьезно, большое спасибо за помощь <3 люблю тебя @havelock за ваши быстрые и точные ответы! –

+0

Не проблема, это забавно, что ваш учитель не заметил этого.Ну, в зависимости от того, какой предмет он/она учит ;-) – Havelock

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

примечание: добавить session_start(); в верхней части страницы Authenticate.php

Смежные вопросы