2012-05-01 19 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

もあります。 '