2012-05-01 5 views
2

내 진단이 다소 모호하면 미안하지만 문제를 진단하기가 다소 힘듭니다. 나는 꽤 표준적인 로그인 시스템과 그 대부분을 잘 작동한다. 오늘 브라우저를 다시 시작할 때 문제가 발생했습니다 ... admin2.php를 방문한 다음 admin1.php로 다시 이동하지 않으면 admin1.php에 로그인되지 않습니다.PHP 로그인 시스템/세션이 처음으로 작동하지 않습니다

그 후에 모든 것이 완벽하게 작동합니다. 로그 아웃하고 다시 로그인 할 수 있습니다. CSS는 이전에 다음은

admin1.php

<style> 
#form_contain { 
    text-align: center; 
} 

form { 
    display: inline-block; 
    margin: 100px 0 0 !important; 
} 

label { 
    display: table-cell !important; 
    vertical-align: middle; 
} 

input[type='text'], input[type="password"] { 
    float: left; 
    display: table-cell !important; 
    margin: 0 0 10px; 
    height: 25px; 
    width: 260px !important; 
} 
</style> 

<?php 
session_start(); 
include "lib/head.php"; 

function protect($string) 
{ 
$string = mysql_real_escape_string($string); 
return $string; 
} 

$user = $_SESSION['username']; 

if(!$_POST['submit']) 
{ 
    if ($_SESSION['logged'] == true) { 
     include_once("admin_main.php"); 
     } 
    else { 

?> 

<div id="form_contain"> 
    <form method="post" action="<?=$_SERVER['PHP_SELF']; ?>"> 
     <label>Username:</label> 
     <input type="text" name="username" maxlength="16"> 
     <br> 
     <label>Password:</label> 
     <input type="password" name="password" maxlength="16"> 
     <br> 
     <br> 
     <br> 
     <input type="submit" name="submit" value="Login" class="btn"> 
    </form> 
    <p id="alert"></p> 
</div> 


<?php 
    } 
} 
else 
{ 
    $user = protect($_POST['username']); 
    $pass = protect($_POST['password']); 

if($user && $pass) 
{ 
    $sql="SELECT id,username FROM catalog_users WHERE username='$user' AND password='$pass'"; 
    $query=mysql_query($sql) or die(mysql_error()); 

     if(mysql_num_rows($query) == 1) 
     { 
      $row = mysql_fetch_assoc($query); // mysql_fetch_assoc gets the value for each field in the row 
      $_SESSION['id'] = $row['id']; //creates the first session var 
      $_SESSION['username'] = $row['username']; // second session var 
      $_SESSION['logged'] = true; 

      echo ' 
       <script language="javascript"> 
        window.location = "admin1.php"; 
       </script>"; 

      '; 

     } 
     else 
     { 
      echo ' 
       <script language="javascript"> 
        window.location="admin_wrong.php";  
       </script> 
      '; 
     } 
} 
else 
{   
    echo ' 
     <script language="javascript"> 
      window.location="admin_wrong.php";  
     </script> 
    '; 
} 
} 
?> 

admin2.php

<?php 
session_start(); 
include('lib/head.php'); 


if (isset($_SESSION['logged']) && $_SESSION['logged'] == true) { 
    echo " 
     This is a secured page, welcome <b>".$_SESSION['username']."</b> 
     <br> 
     <br> 
     <a href='admin1.php'>Back</a> 
     <a href='logout.php'>Logout</a> 

     "; 
    } 
else { 
    echo "<b>Sorry, you cannot access this page</b>"; 
} 


?> 

업데이트 ... 내가 가지고있는 두 개의 파일이 있습니다 내 코드 상단의 <?php session_start()이 원인 코드 g 문제

+1

고대의'mysql_ *'함수로 새로운 코드 작성을 중단하십시오. 그들은 더 이상 유지되지 않으며 커뮤니티는 [비추천 프로세스]를 시작했습니다 (http://news.php.net/php.internals/53799). 대신 [prepared statement] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 배우고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http : //)를 사용해야합니다. php.net/mysqli). 만약 당신이 배울 점이 있다면, 여기 [PDO 관련 튜토리얼] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). –

+0

도 있습니다. '

관련 문제