Criar um utilizador/Senha muito simples no php

quero fazer um único login para apenas 1 Utilizador sem armazenar numa base de dados, mas parece que não consigo fazer isto funcionar.

O meu código: login.php

<html>
<head>
  <title>Login</title>
</head>
<h3>Add entry</h3>
<p> Add another Article</p>
<form action="trylog.php" method = "post">
  <label for="username">Username</label> <input type="username" id="usename" name="username"><br /><br />
  <label for="password">Password:</label> <input type="text" id="password" name="password"><br /><br />
  <button type = "submit">Login</button>
</form>
</html>
Trylog.php

<html>
<title>Login</title>
<body>
  <?php
  $usr = "admin";
  $psw = "password";
  $username = '$_POST[username]';
  $password = '$_POST[password]';
  //$usr == $username && $psw == $password
  session_start();
  if ($_SESSION['login']==true || ($_POST['username']=="admin" && $_POST['password']=="password")) {
    echo "password accepted";
    $_SESSION['login']=true;
    else {
      echo "incorrect login";
    }
    ?>

  <form name="input" action="adminportal.php" method="get">
    <input type="submit" value="Home">
  </form>
</body>
</html>
 11
php
Author: cagatayodabasi, 2013-10-23

5 answers

O teu código poderia parecer mais como:

<?php
session_start();
$errorMsg = "";
$validUser = $_SESSION["login"] === true;
if(isset($_POST["sub"])) {
  $validUser = $_POST["username"] == "admin" && $_POST["password"] == "password";
  if(!$validUser) $errorMsg = "Invalid username or password.";
  else $_SESSION["login"] = true;
}
if($validUser) {
   header("Location: /login-success.php"); die();
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <title>Login</title>
</head>
<body>
  <form name="input" action="" method="post">
    <label for="username">Username:</label><input type="text" value="<?= $_POST["username"] ?>" id="username" name="username" />
    <label for="password">Password:</label><input type="password" value="" id="password" name="password" />
    <div class="error"><?= $errorMsg ?></div>
    <input type="submit" value="Home" name="sub" />
  </form>
</body>
</html>
Agora, quando a página for redirecionada com base no header('LOCATION:wherever.php), Coloque session_start() no topo da página e teste para ter certeza $_SESSION['login'] === true. Lembre-se que == seria verdade se $_SESSION['login'] == 1 também. É claro que esta é uma má ideia por razões de segurança, mas o meu exemplo pode ensinar-lhe uma forma diferente de usar o PHP.
 22
Author: PHPglue, 2017-05-02 04:33:10

Aqui está um script php simples para login e uma página que só pode ser acessada por usuários logados.

Login.php

<?php
    session_start();
    echo isset($_SESSION['login']);
    if(isset($_SESSION['login'])) {
      header('LOCATION:index.php'); die();
    }
?>
<!DOCTYPE html>
<html>
   <head>
     <meta http-equiv='content-type' content='text/html;charset=utf-8' />
     <title>Login</title>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
   </head>
<body>
  <div class="container">
    <h3 class="text-center">Login</h3>
    <?php
      if(isset($_POST['submit'])){
        $username = $_POST['username']; $password = $_POST['password'];
        if($username === 'admin' && $password === 'password'){
          $_SESSION['login'] = true; header('LOCATION:admin.php'); die();
        } {
          echo "<div class='alert alert-danger'>Username and Password do not match.</div>";
        }

      }
    ?>
    <form action="" method="post">
      <div class="form-group">
        <label for="username">Username:</label>
        <input type="text" class="form-control" id="username" name="username" required>
      </div>
      <div class="form-group">
        <label for="pwd">Password:</label>
        <input type="password" class="form-control" id="pwd" name="password" required>
      </div>
      <button type="submit" name="submit" class="btn btn-default">Login</button>
    </form>
  </div>
</body>
</html>

Administrador.php (só os utilizadores registados podem aceder-lhe)

<?php
    session_start();
    if(!isset($_SESSION['login'])) {
        header('LOCATION:login.php'); die();
    }
?>
<html>
    <head>
        <title>Admin Page</title>
    </head>
    <body>
        This is admin page view able only by logged in users.
    </body> 
</html>
 5
Author: Dhyey, 2017-04-13 16:20:32

Em primeiro lugar, você precisa colocar session_start(); antes de qualquer saída para o navegador, normalmente no topo da página. Vê o manual.

Em segundo lugar, isto não afectará os seus resultados, mas estas linhas não estão a ser usadas em lado nenhum e devem ser removidas:

$usr = "admin";
$psw = "password";
$username = '$_POST[username]';
$password = '$_POST[password]';

...e as duas últimas linhas não funcionariam, você precisa colocar as citações dentro dos colchetes:

$username = $_POST['username'];

Se colocares session_start() no topo da tua Página (isto é, antes de a marca <html> etc), Isto

 1
Author: Robbie Averill, 2013-10-23 01:17:36
<?php
session_start();
  mysql_connect('localhost','root','');
    mysql_select_db('database name goes here');
    $error_msg=NULL;
    //log out code
    if(isset($_REQUEST['logout'])){
                unset($_SESSION['user']);
                unset($_SESSION['username']);
                unset($_SESSION['id']);
                unset($_SESSION['role']);
        session_destroy();
    }
    //

    if(!empty($_POST['submit'])){
        if(empty($_POST['username']))
            $error_msg='please enter username';
        if(empty($_POST['password']))
            $error_msg='please enter password';
        if(empty($error_msg)){
            $sql="SELECT*FROM users WHERE username='%s' AND password='%s'";
            $sql=sprintf($sql,$_POST['username'],md5($_POST['password']));
            $records=mysql_query($sql) or die(mysql_error());

            if($record_new=mysql_fetch_array($records)){

                $_SESSION['user']=$record_new;
                $_SESSION['id']=$record_new['id'];
                $_SESSION['username']=$record_new['username'];
                $_SESSION['role']=$record_new['role'];
                header('location:index.php');
                $error_msg='welcome';
                exit();
            }else{
                $error_msg='invalid details';
            }
        }       
    }

?>

// replace the location with whatever page u want the user to visit when he/she log in
 1
Author: jeche, 2015-09-04 11:34:35

O teu código poderia parecer mais como:

<?php
session_start(); $username = $password = $userError = $passError = '';
if(isset($_POST['sub'])){
  $username = $_POST['username']; $password = $_POST['password'];
  if($username === 'admin' && $password === 'password'){
    $_SESSION['login'] = true; header('LOCATION:wherever.php'); die();
  }
  if($username !== 'admin')$userError = 'Invalid Username';
  if($password !== 'password')$passError = 'Invalid Password';
}
?>
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
   <head>
     <meta http-equiv='content-type' content='text/html;charset=utf-8' />
     <title>Login</title>
     <style type='text.css'>
       @import common.css;
     </style>
   </head>
<body>
  <form name='input' action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'>
    <label for='username'></label><input type='text' value='<?php echo $username;?>' id='username' name='username' />
    <div class='error'><?php echo $userError;?></div>
    <label for='password'></label><input type='password' value='<?php echo $password;?>' id='password' name='password' />
    <div class='error'><?php echo $passError;?></div>
    <input type='submit' value='Home' name='sub' />
  </form>
  <script type='text/javascript' src='common.js'></script>
</body>
</html>
 0
Author: Phil Poore, 2017-01-06 14:44:38