2013-04-17 6 views
0

학교 프로젝트에 문제가 있습니다. 선생님이나 급우들에게 도움을 요청했지만 그들 중 누구도해야 할 일을 모릅니다.SESSION에서 변수를 가져올 수 없습니다.

나는 브라우저 기반 게임을 만들었으며 분명히 사용자가 있어야합니다. 그리고 이것이 바로 문제가있는 곳입니다.

내가 로그인하여 인증 페이지로 진행하면 POST에서 정보를 추출하지만 인증시 세션에 정보를 삽입하고 홈페이지 색인으로 이동하면 세션 정보를 얻지 못하게됩니다. 그냥 오류가 발생합니다.

참고로, 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 eally는 그것의 만기가되기 전에 이것을 끝내야합니다.

+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

... 또는 그 내용을 입력하기 전에'session_start()'를 실행하십시오. – Havelock

+1

Genereal 규칙은 (물론 ) – Sahil

+0

과 같은 태그 사이에 첫 번째 줄에 session_start를 두었습니다. 먼저 session_start()를 넣으려고했으나 작동하지 않았습니다. 나는 여전히 이전과 같은 문제를 겪고있다. –

1

가 만들거나 당신이 그것으로 기록하기 전에 세션을 다시 시작해야하는 출력하기 전에해야합니다. 따라서 Authenticate.php $_SESSION['player'] = $player;을 수행하는에서 다른 파일에서 세션을 수행하는 것과 똑같이 세션을 만듭니다. @DamienLegros는 그의 대답에 언급 한 바와 같이 또한

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... 

같은 것을, 당신은 항상 첫 번째 중 하나 즉, 가능한 한 빨리 코드에서 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'])) 
... 
... 
... 

참고 : '당신이 세션에 기록하기 전에뿐만 아니라 당신의 Authenticate.php 페이지 상단

관련 문제