2012-07-09 4 views
-1

메인 페이지에 Im이 있고 다른 페이지로 이동했는데 더 이상 저장된 세션이 표시되지 않는 문제가 있습니다. 그러나 로그인을 클릭하면 이미 Im이라고 표시됩니다. 하지만 내가/admin /과 같은 다른 디렉토리로 간다면 세션 데이터가 여전히 존재합니다. 모든 솔루션? 모든 페이지세션 데이터가 페이지간에 손실 됨

<div id="loginoutbox"> 
<?php session_start(); 
    if($_SESSION["username"]) { ?> 
<div> 
    Hello <?php echo $_SESSION['username']; ?>! | </div> 
<a id="register" href="http://www.kdogisthebest.webege.com/admin/" class="button">Dashboard</a> | 
<a id="signin" href="#fallr-confirmlike" class="button">Logout</a>  
<?php }else{ ?> 
<div style="display: inline-block; font-size: 14px; padding-left: 20px;">Hello Guest!</div> 
<a id="register" href="#fallr-register" class="button">Register</a> | 
<a id="signin" href="#fallr-signin" class="button">Login</a> 
<?php } ?> 
</div> 

데모 --->http://www.kdogisthebest.webege.com/index.php

사용자 이름 = demouser

비밀번호에

login.php

<?php 
session_start(); 
require_once('connections/Main.php'); 

if($_SESSION['username']) { 

    echo '<div class="error_message">Attention! '.$_SESSION['username'].'. You are already logged in.</div>'; 
    echo "<br />"; 
    echo "Go <a target='top' href='index.php'>back</a> to the page you were viewing before this.</li>"; 

    exit(); 
} 

// Has an error message been passed to login.php? 
$error = $_GET['e']; 

if($error == 1) { 
    $error = '<div class="error_message">Attention! You must be logged in to view this page.</div>'; 
} 

// Only process if the login form has been submitted. 

if(isset($_POST['login'])) { 

    $username = $_POST['username']; 
    $password = $_POST['password']; 

     if (empty($username) || empty($password)) { 
     $error = '<div class="error_message">Attention! Please enter your Username and Password.</div>'; 
    } else { 

    mysql_select_db($database_Main); 
    // Add slashes to the username and md5() the password 
    $user = mysql_real_escape_string(addslashes($_POST['username'])); 
    $pass = mysql_real_escape_string(md5($_POST['password'])); 


    $sql = "SELECT * FROM users WHERE username = '$user' AND password= '$pass' OR email = '$user' AND password= '$pass' "; 

    $result = mysql_query($sql); 

    // Check that at least one row was returned 
    $rowCheck = mysql_num_rows($result); 

    if($rowCheck > 0) { 
    while($row = mysql_fetch_array($result)) { 

     // Start the session and register a variable 
     if(isset($_POST['remmemberme'])){ 
      setcookie(kitbusername, $user, time()+(3600*24*30)); 
     } 
     $_SESSION['username'] = $user; 
     //session_register('username'); 

     echo '<script>parent.changeURL("index.php"); </script>'; 

     } 

     } else { 

     // If nothing is returned by the query, unsuccessful login code goes here... 

     $error = '<div class="error_message">Attention! Incorrect username or password.</div>'; 
     } 
    } 
} 
echo $error; ?> 

header.php = demouser

+0

기본 디버깅을 먼저 요구합니다. 'error_reporting (~ 0); ini_set ('display_errors', 1);'스크립트의 맨 처음에. 또한 [오류 로깅 사용] (http://www.cyberciti.biz/tips/php-howto-turn-on-error-log-file.html)을 읽고 오류 로그를 따르십시오. – hakre

+0

나는 session_start()가 어떤 html 코드보다 먼저 호출되어야한다고 생각한다. – caRameL

+0

html dont do anything을하기 전에 그것을 호출하십시오. – kezi

답변

0

var_dump를 사용하여 $ _SESSION 변수를 덤프 한 후 확인하십시오. 페이지를 변경 한 후 변수가 NULL로 표시됩니다. 나는 고글을 치고 연구를했으며 나는이 방법으로 행동하게 만드는 PHP 서버 구성이라고 결론을 내리는 것이 가장 좋습니다.

1

<?php session_start();은 어떤 출력이든보다 앞에 이되어야합니다. 그것을 페이지 상단에 놓으십시오.

+0

그런 경우에는 출력 버퍼링도 문제를 해결합니다. – hakre

+0

차이가 없습니다. 그러나 그것을 시도하고 그것은 작동하지 않았다. – kezi

관련 문제