2017-01-13 12 views
1

Я ищу для создания простого скрипта сеанса входа, это не должно быть очень безопасным, и я надеялся сделать это без необходимости в базе данных. В основном я хочу, чтобы люди приглашали на веб-страницу, и они могут получить к нему доступ только с именем пользователя и паролем в приглашении, поэтому мне требуется более одного входа. Я также хотел бы отобразить сообщение после успешного входа с чем-то вроде «Добро пожаловать имя пользователя».Простой сеанс входа в PHP без базы данных

Я нашел код, который, кажется, хорошо выполняет эту работу, но как я могу настроить его, чтобы скрыть форму после входа?

<?php 
session_start(); 

$userinfo = array(
       'user1'=>'password1', 
       'user2'=>'password2' 
       ); 

if(isset($_GET['logout'])) { 
    $_SESSION['username'] = ''; 
    header('Location: ' . $_SERVER['PHP_SELF']); 
} 

if(isset($_POST['username'])) { 
    if($userinfo[$_POST['username']] == $_POST['password']) { 
     $_SESSION['username'] = $_POST['username']; 
    }else { 
     //Invalid Login 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Login</title> 
    </head> 
    <body> 
     <?php if($_SESSION['username']): ?> 
      <p>You are logged in as <?=$_SESSION['username']?></p> 
      <p><a href="?logout=1">Logout</a></p> 
     <?php endif; ?> 
     <form name="login" action="" method="post"> 
      Username: <input type="text" name="username" value="" /><br /> 
      Password: <input type="password" name="password" value="" /><br /> 
      <input type="submit" name="submit" value="Submit" /> 
     </form> 
    </body> 
</html> 
+3

так что здесь не происходит и начался сеанс? любые ошибки также? –

+1

* «Я нашел код, который, как представляется, хорошо выполняет эту работу, но как я могу настроить его, чтобы скрыть форму после входа в систему?» * - О, так это работает тогда, на что «это» является реальным вопросом, правильно? –

+0

Привет, Фред. Форма входа в систему по-прежнему отображается после успешного входа в систему, я бы хотел, чтобы это отображалось только в том случае, если они не вошли в систему. У меня нет никаких ошибок, кроме этого. – Marc

ответ

1

Проверьте это:

<?php 
session_start(); 

$userinfo = array(
       'user1'=>'password1', 
       'user2'=>'password2' 
       ); 

if(isset($_GET['logout'])) { 
    $_SESSION['username'] = ''; 
    header('Location: ' . $_SERVER['PHP_SELF']); 
} 

if(isset($_POST['username'])) { 
    if($userinfo[$_POST['username']] == $_POST['password']) { 
     $_SESSION['username'] = $_POST['username']; 
    }else { 
     //Invalid Login 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Login</title> 
    </head> 
    <body> 
     <?php if($_SESSION['username']): ?> 
      <p>You are logged in as <?=$_SESSION['username']?></p> 
      <p><a href="?logout=1">Logout</a></p> 
     <?php else: ?> 
     <form name="login" action="" method="post"> 
      Username: <input type="text" name="username" value="" /><br /> 
      Password: <input type="password" name="password" value="" /><br /> 
      <input type="submit" name="submit" value="Submit" /> 
     </form> 
    <?php endif; ?> 
    </body> 
</html> 
1

Просто поместите вашу форму в состоянии

if(empty($_SESSION['username'])){ 
    // your html form here 
} 
1

Изменить

if(isset($_GET['logout'])) 
    { 
      $_SESSION['username'] = ''; 
      header('Location: /'); 
    } 

в

if(isset($_GET['logout'])) 
    { 
      Session_destroy(); 
      header('Location: /'); 
    } 

Если вы не убиваете/не уничтожаете сеанс, у вас будет большая проблема.