¿Cómo puedo crear un sencillo script de inicio de sesión que no requiere una base de datos. Me gustaría estar seguro.

Bien, ¿qué acerca de este script, yo sólo lo hizo por mi conocimiento en php.

<?php 
//Start session
session_start(); 

//Username and password
$ID = "admin";
$pass = "123456";

if (isset($_POST["ID"]) && isset($_POST["pass"])) { 

    if ($_POST["ID"] === $anvandarID && $_POST["pass"] === $pass) { 
    /
    $_SESSION["inloggedin"] = true; 

    header("Location: safe_site.php"); 
    exit; 
    } 
        //Wrong login - message
        else {$wrong = "Bad ID and password, the system could not log you in";} 
}
?> 

La safe_site.php contiene este y parte del contenido:

session_start();

if (!isset($_SESSION["inloggning"]) || $_SESSION["inloggning"] !== true) {
header("Location: login.php");
exit;
}
¿Cómo crear un sencillo script de inicio de sesión que no requiere una base de datos en ASP?
Con OpenID 🙂
Ahora ¿qué pasa con mi ejemplo he añadido en el primer post anterior aquí.
No, no realmente, pero ahora he visto que la Marca ha publicado una rápida y sucia de solución y yo lo uso ahora! Gracias a todos por su ayuda, les agradezco por su tiempo.
La solución de Marca está bien si sólo una pequeña lista de usuarios. Que la solución no escala muy bien.

OriginalEl autor | 2009-09-04

10 Comentarios

  1. 21

    No es la solución ideal, pero he aquí un rápido y sucio ejemplo que muestra cómo se puede almacenar información de inicio de sesión en el código 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>
    Gracias! Que es tal vez mejor que la mía.
    Que no es seguro en absoluto.
    Cómo sobre algunos detalles?
    La única manera de que nadie va a ver esas contraseñas es si el servidor web deja de análisis de PHP. Y entonces tendrás un problema más grande en sus manos 🙂 solo busca algo rápido y fácil.
    Servidor no tiene que dejar de análisis de PHP, cuando no hay otra vulnerabilidad en la aplicación (siempre hay al menos uno 🙂 ), que el atacante será capaz de leer a otras personas contraseñas sin que nadie sepa y que es un gran problema, como usted dijo. Pocos sha1 función de llamadas no matar a nadie y va a ser más seguro.

    OriginalEl autor

  2. 11

    FacebookConnect o OpenID son dos grandes opciones.

    Básicamente, su inicio de sesión de usuarios a otros sitios que ya son miembros de (Facebook, o Google), y luego de obtener la confirmación de que el sitio de decirle a usted, el usuario es de confianza – iniciar una sesión, y que están conectados. Ninguna base de datos necesaria (a menos que desee asociar más datos a su cuenta).

    El developers.facebook.com/connect.php URL se muestra ahora “lo sentimos, el link que has seguido puede ser roto, o que la página ha sido eliminada.” – debe ser eliminado.

    OriginalEl autor

  3. 8

    Me gustaría utilizar una de dos archivo de configuración como esta:

    index.php

    <?php 
    session_start(); 
    define('DS',  TRUE); //used to protect includes
    define('USERNAME', $_SESSION['username']);
    define('SELF',  $_SERVER['PHP_SELF'] );
    if (!USERNAME or isset($_GET['logout']))
    include('login.php');
    //everything below will show after correct login 
    ?>

    login.php

    <?php defined('DS') OR die('No direct access allowed.');
    $users = array(
    "user" => "userpass"
    );
    if(isset($_GET['logout'])) {
    $_SESSION['username'] = '';
    header('Location:  ' . $_SERVER['PHP_SELF']);
    }
    if(isset($_POST['username'])) {
    if($users[$_POST['username']] !== NULL && $users[$_POST['username']] == $_POST['password']) {
    $_SESSION['username'] = $_POST['username'];
    header('Location:  ' . $_SERVER['PHP_SELF']);
    }else {
    //invalid login
    echo "<p>error logging in</p>";
    }
    }
    echo '<form method="post" action="'.SELF.'">
    <h2>Login</h2>
    <p><label for="username">Username</label> <input type="text" id="username" name="username" value="" /></p>
    <p><label for="password">Password</label> <input type="password" id="password" name="password" value="" /></p>
    <p><input type="submit" name="submit" value="Login" class="button"/></p>
    </form>';
    exit; 
    ?>

    OriginalEl autor

  4. 4

    Guardar el nombre de usuario y contraseña hash en la matriz en un archivo php en lugar de db.

    Cuando usted necesita para autenticar al usuario, calcular los hashes de sus credenciales y, a continuación, comparar los hash en la serie.

    Si utiliza la función de hash seguro (ver la función de hash hash algos en la documentación de PHP), debe estar bastante seguro (usted puede considerar el uso de salado hash) y también añadir algunas protecciones a la forma en sí.

    OriginalEl autor

  5. 2

    Si usted no tiene una base de datos, donde el registro PERMANENTE de sus usuarios datos de inicio de sesión se almacenan? Seguro que, mientras el usuario está conectado, el usuario mínima información necesaria para que su sitio de trabajo puede ser almacenado en una sesión o cookie. Pero después de que se cierre la sesión y, entonces, ¿qué? La sesión se va, la cookie puede ser hackeado.

    Por lo que su usuario vuelve a su sitio. Él intenta iniciar sesión en. Lo confiable cosa ¿su sitio de comparar su información de inicio de sesión?

    OriginalEl autor

  6. 1

    Intente esto:

    <?php
    session_start();
    $userinfo = array(
    'user'=>'5d41402abc4b2a76b9719d911017c592', //Hello...
    );
    if(isset($_GET['logout'])) {
    $_SESSION['username'] = '';
    header('Location:  ' . $_SERVER['PHP_SELF']);
    }
    if(isset($_POST['username'])) {
    if($userinfo[$_POST['username']] == md5($_POST['password'])) {
    $_SESSION['username'] = $_POST['username'];
    }else {
    header("location:403.html"); //replace with 403
    }
    }
    ?>
    <?php if($_SESSION['username']): ?>
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Logged In</title>
    </head>
    <body>
    <p>You're logged in.</p>
    <a href="logout.php">LOG OUT</a>
    </body>
    </html>
    <?php else: ?>
    <html>
    <head>
    <title>Log In</title>
    </head>
    <body>
    <h1>Login needed</h1>
    <form name="login" action="" method="post">
    <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
    <tr>
    <td colspan="3"><strong>System Login</strong></td>
    </tr>
    <tr>
    <td width="78">Username:</td>
    <td width="294"><input name="username" type="text" id="username"></td>
    </tr>
    <tr>
    <td>Password:</td>
    <td><input name="password" type="password" id="password"></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="Submit" value="Login"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    <?php endif; ?>

    Tendrá un cierre de sesión, algo como esto (logout.php):

    <?php
    session_start();
    session_destroy();
    header("location:index.html"); //Replace with Logged Out page. Remove if you want to use HTML in same file.
    ?>
    //Below is not needed, unless header above is missing. In that case, put logged out text here.
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <body>
    <!-- Put logged out message here -->
    </body>
    </html>
    Frank, bonita respuesta – sin embargo, la pregunta había sido contestada y la respuesta fue aceptada. Si se quiere explicar por qué su respuesta es diferente o mejor que el aceptado respuesta, que podría ser de ayuda.

    OriginalEl autor

  7. 0

    si usted no tiene una base de datos, usted tendrá que codificar los datos de inicio de sesión en su código, o leer desde un archivo plano en el disco.

    No puedo almacenar datos de inicio de sesión en las variables?
    Puede, eso es lo que él entiende por “codificar los datos de inicio de sesión en el código.”

    OriginalEl autor

  8. 0

    Usted puede hacer el control de acceso en el nivel de servidor Web utilizando la autenticación Básica de HTTP y htpasswd. Hay una serie de problemas con este:

    1. No es muy seguro (nombre de usuario y la contraseña son trivialmente codificado en el cable)
    2. Es difícil de mantener (tienes que iniciar sesión en el servidor para agregar o quitar usuarios)
    3. Usted no tiene control sobre el cuadro de diálogo de inicio de sesión presentado por el navegador
    4. No hay manera de salir de la sesión, corto de reiniciar el navegador.

    A menos que usted está construyendo un sitio web para uso interno con pocos usuarios, yo no lo recomiendo.

    OriginalEl autor

  9. 0

    ***Script de inicio de SESIÓN que no se enlace a una base de datos o archivo externo. Bueno para una contraseña global –

    Lugar en el formulario de inicio de Sesión de la página el lugar esta en la parte superior de la página de inicio de sesión – por encima de todo lo demás***

    <?php
    if(isset($_POST['Login'])){
    if(strtolower($_POST["username"])=="ChangeThis" && $_POST["password"]=="ChangeThis"){
    session_start();
    $_SESSION['logged_in'] = TRUE;
    header("Location: ./YourPageAfterLogin.php");
    }else {
    $error= "Login failed !";
    }
    }
    //print"version3<br>";
    //print"username=".$_POST["username"]."<br>";
    //print"password=".$_POST["username"];
    ?>

    *De inicio de sesión en las páginas siguientes – Lugar esta en la parte superior de cada página que debe ser protegido por el inicio de sesión. esto comprueba la sesión, y si un nombre de usuario y contraseña *

    <?php
    session_start();
    if(!isset($_SESSION['logged_in']) OR $_SESSION['logged_in'] != TRUE){
    header("Location: ./YourLoginPage.php");
    }
    ?>
    No es esta la solución de la misma como lo que ya en la pregunta original?

    OriginalEl autor

  10. -3

    No hay ninguna razón para no usar la base de datos de inicio de sesión de la aplicación, lo menos que puedes hacer es descargar e instalar SQLite si su empresa de alojamiento no le proporciona suficiente DB.

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here