2016-05-19 8 views
1

$_SESSIONを取得して、userセッションまたはadminセッションのいずれかを作成することはできません。コードの'admin'と 'user'の両方のセッションを停止する方法

User||1234||user admin||1234||admin

スタート:

<?php session_start();?> 
<?php 
$username = $_POST['username']; 
$password = $_POST['password']; 
$level; 
$date = date("d.m.Y");` 

現在のコード:

これは、アカウントファイルの内容である

if (isset($_POST['login'])){ 
    $file = explode(PHP_EOL, file_get_contents("Users/accounts.txt")); 
    $auth = false; 

foreach($file as $line) { 
    list($username, $password, $level) = explode("||", $line); 
    if ($_POST['username'] == $username && $_POST['password'] == $password) { 
     $auth = true; 
     break; 
    } 
} 

if($auth) { 
    echo "Login successfull!"; 
    $data = "Login successfull" . "\t" . "Username: " . $_POST['username'] . " Password: " . $_POST['password'] . " Level: " . $level . " Date: " . $date . "\r\n"; 
    file_put_contents('Users/logs.txt', $data, FILE_APPEND); 

    if($level = 'admin') { 
     $_SESSION['admin']=$username; 
     header('location: check.php'); 
    } 
    if($level = 'user') { 
     $_SESSION['user']=$username; 
     header('location: check.php'); 
    } 
} 
else { 
    echo "Invalid username or password"; 

    $data = "invalid login" . "\t" . "Username: " . $_POST['username'] . " Password: " . $_POST['password'] . " Level: " . $level . " Date: " . $date . "\r\n"; 

    file_put_contents('Users/logs.txt', $data, FILE_APPEND); 
    } 
} 
?> 

Current form: 

<form method="post"> 
<b>Username:</b><br> 
<input type="text" name="username" /><br>     
<b>Password:</b><br> 
<input type="password" name="password"/><br> 
<input type="submit" value="Login" name="login"/> 
<input type="reset" value="Reset" name="reset"/> 
</form>` 

が助けてください、私はしましたセッションや他の小さなものの名前を変更しようとしましたが、私は得ることができません私は特定のセッションが特定のページにアクセスするのを止めようとしているので、両方のセッションの実行を停止する必要があります。

答えて

0

ファイルを1行ずつ読み上げる場合は、ファイル全体を読み込んでからexplodeを使用しようとすると、非常に効率が悪くなります(明らかに必要なことはしません)。 この操作を行います。私は両方のアカウントを読んでいないソートしているが、あなたはあまりにも動作しません、しかし、私は `User`としてログインだろうというとき、私はまだ`管理者へのアクセス権を持っていることの問題が生じています

$file = fopen("inputfile.txt", "r"); 
if ($file) { 
    while (($line = fgets($file)) !== false) { 
    list($username, $password, $level) = explode("||", $line); 
    if ($_POST['username'] == $username && $_POST['password'] == $password) { 
     $auth = true; 
     break; 
    } 
    } 
+0

を何らかの理由で 'User'としてログインしていても、' user'と 'admin'の両方のセッションを作成するので、私が持っているページは適切にコーディングされていないことを知っています。手伝ってくれますか? –

+0

申し訳ありませんが、次の変更を加えました '$ level = 'admin'' =>' $ level ==' admin''と '$ level = 'user'' =>' $ level == 'ユーザー' –

関連する問題