Visualizzazione risultati 1 fino 10 di 10

Discussione: come inserire altri utenti

  1. #1
    astefantasmaaa non è connesso Neofita
    Data registrazione
    23-05-2008
    Messaggi
    12

    Predefinito come inserire altri utenti

    Salve , volevo chiedevi un aiuto , questo script è uno script di login.

    Vorrei sapere come devo modificarlo per aggiungere altri utenti?

    file login.php:
    Codice:
    <form method="post" action="login.php">
    Username<br><input type="text" name="username"><br>
    Password<br><input type="password" name="password"><br><br>
    <input type="submit" name="login" value="Login">
    </form>
    
    <?
        if ($_POST["login"] != "")
        {
            $username = $_POST["username"];
            $password = $_POST["password"];
            if ($username == "demo" && $password == "demo")
    
            {
                setcookie("login", "OK");
                echo "Benvenuto!<br><br>";
                echo "<a href='privata.php'>ENTRA</a>";
            }
            else
            {
                echo "Accesso negato!";
            }
        }
    ?>
    file pagina privata.php:
    Codice:
    <?
        if ($_COOKIE["login"] == "")
        {
            header("location: /login.php");
        }
    ?>
    <html>
    <body>
    <p>Contenuto dell'area privata...</p>
    </body>
    </html>
    se potete aiutarmi ve ne sarei infinitamente grato

  2. #2
    Ospite Guest

    Predefinito

    Lo ho migliorato un po....
    Dovrebbe andare....

    Codice PHP:
    <?
    $utenti
    =array();
    $utenti[0]=array();
    $utenti[0]['user']="user1";
    $utenti[0]['pass']="Password1";
    $utenti[1]=array();
    $utenti[1]['user']="user2";
    $utenti[1]['pass']="Password2";
    $utenti[2]=array();
    $utenti[2]['user']="user3";
    $utenti[2]['pass']="Password3";
    ?>
    <form method="post" action="login.php">
    Username<br><input type="text" name="username"><br>
    Password<br><input type="password" name="password"><br><br>
    <input type="submit" name="login" value="Login">
    </form>

    <?
    if (!empty($_POST["login"]))
    {
    $username = $_POST["username"];
    $password = $_POST["password"];
    foreach(
    $utenti as $utente){
    if (
    strtolower($username) == strtolower($utente['user'])){
    if(
    strtolower($password) == strtolower($utente['pass'])){
    setcookie("login", "OK");
    setcookie("user", stripslashes($_POST['user']));
    echo
    "Benvenuto <b>".$username."!<br><br>";
    echo
    "<a href='privata.php'>ENTRA</a>";
    $status=0;
    }else{
    $status=1;
    }
    }
    }

    if(empty(
    $status)){
    echo
    "L'utente digitato non esiste....";
    }elseif(
    $status==0){
    echo
    "Login riuscito!";
    }elseif(
    $status==1){
    echo
    "Password errata!";
    }
    }
    ?>
    Puoi anche usare un file come database per i nomi degli utenti e le relative password.
    ti basta sostituire tutto il pezzo prima del form HTML con questo.

    Codice PHP:
    <?

    $user_file
    ="./db/utenti.txt"; // nome del file da usare come Database

    $user_file=file($user_file);
    $utenti=array();
    foreach(
    $user_file as $id=>$value){
    $data=explode("|||", $value);
    $user=$data[0];
    $pass=$data[1];
    $utenti[$id]=array();
    $utenti[$id]['user']=$user;
    $utenti[$id]['pass']=$pass;
    }

    ?>
    Nel file ./db/utenti.txt:
    Codice:
    user1|||password1|||
    user2|||password2|||
    user3|||password3|||
    Fammi sapere come va...

    Ciauz!

  3. #3
    Guest

    Predefinito

    Ciao! Mi sembra che il codice di Matt93 sia già molto interessante, sempre ammettendo che tu NON voglia usare un db... cosa che cmq consiglio se il sistema diventa abbastanza complesso.
    Ad ogni modo mi domando, perché semplicemente non usate il sistema di sessioni del php al posto che andare agire sui cookie??
    Io farei così, è molto comodo:

    Codice PHP:
    <!-- Inizio file -->

    <?php
    //session_start inizializza la sessione utente
    //e DEVE essere all'inizio del codice
    session_start();

    //... codice vario...
    ?>

    <!-- HTML vario -->

    <?php
    if (!empty($_POST["login"]))
    {
    $username = $_POST["username"];
    $password = $_POST["password"];
    foreach(
    $utenti as $utente) {

    //fossi in te non userei strtolower
    //ed eseguirei un log-in case sensitive per la password
    if (strtolower ($username) == strtolower ($utente['user'])){
    if (
    $password == $utente['pass']){
    //puoi memorizzare dentro $_SESSION
    //delle variabili che verranno condivise tra tutte le pagine
    //per questo utente.
    $_SESSION['username'] = $username;
    echo
    "Benvenuto <b>".$username."!<br><br>";
    echo
    "<a href='privata.php'>ENTRA</a>";
    $status=0;
    }else{
    //termina la sessione che si stava creando, log-in fallito
    session_destroy();
    $status=1;
    }
    }

    if(empty(
    $status)){
    echo
    "L'utente digitato non esiste....";
    }elseif(
    $status==0){
    echo
    "Login riuscito!";
    }elseif(
    $status==1){
    echo
    "Password errata!";
    }
    }
    ?>

    <!-- Altro HTML vario -->
    Ti ricordo che devi eseguire sempre session_start() in tutte le pagine dove devi controllare l'identità dell'utente. A quel punto potrai semplicemente controllare che !empty($_SESSION['username']) per sapere se l'utente si è loggato o meno...
    Ricorda che in caso contrario la sessione va terminata per evitare problemi, e quindi è necessario seguire un session_destroy().

    Buona fortuna!!
    Facci sapere come è andata ;)

    Jacopo

  4. #4
    Ospite Guest

    Predefinito

    si, le sessioni sono meglio... cmq salverei anche sui cookie i dati così da permettere un funzione di autologin.....

    Ciauz!

  5. #5
    Guest

    Predefinito

    Umm, in effetti è interessante l'autologin... anche se non l'ho mai implementato :S
    In pratica tu alla comparsa di un utente che non rispetta !empty($_SESSION['username']) tenteresti un log-in da cookie prendendo i campi username & password?? (scusa il vaghissimo OT, ma magari può interessare anche a astefantasmaaa)
    C'è qualche precauzione da prendere al riguardo? Non so, magari memorizzarli in chiaro non il massimo ^o)
    Ciao, Jacopo

  6. #6
    Ospite Guest

    Predefinito

    si, proprio così.
    come precauzioni di solito cripto la password nei cookie ( base_64() )
    in questo caso mi sono limitato all'autocompilazione dei campi.....

    Codice PHP:
    <?
    $utenti
    =array();
    $utenti[0]=array();
    $utenti[0]['user']="user1";
    $utenti[0]['pass']="Password1";
    $utenti[1]=array();
    $utenti[1]['user']="user2";
    $utenti[1]['pass']="Password2";
    $utenti[2]=array();
    $utenti[2]['user']="user3";
    $utenti[2]['pass']="Password3";

    if (!empty(
    $_POST["login"]))
    {
    $username = $_POST["username"];
    $password = $_POST["password"];
    foreach(
    $utenti as $utente){
    if (
    strtolower($username) == strtolower($utente['user'])){
    if(
    $password == $utente['pass']){
    $_SESSION['user']=$username;
    if(
    $_POST['autolog']==1){
    setcookie("user", stripslashes($username));
    setcookie("pass", base64_encode(stripslashes($username)));
    }else{
    setcookie("user","", time()-86400);
    setcookie("pass","", time()-86400);
    }
    $status=0;
    }else{
    $status=1;
    }
    }
    }
    }
    ?>
    <form method="post" action="login.php">
    Username<br><input type="text" name="username" value="<?
    if(!empty($_COOKIE['user'])){
    echo
    $_COOKIE['user'];
    }
    ?>"><br>
    Password<br><input type="password" name="password" value="<?
    if(!empty($_COOKIE['pass'])){
    echo
    $_COOKIE['pass'];
    }
    ?>"><br>
    Autologin:<br/>
    <select name="autolog">
    <option value="0">No</option>
    <option <?
    if(!empty($_COOKIE['user'])){
    echo
    'selected="selected" ';
    }
    ?> value="1">Si</option>
    </select><br>
    <input type="submit" name="login" value="Login">
    <?
    if(!empty($status) && $status==0){
    ?>
    <br/>Benvenuto <b><?= $username ?></b>!<br><br>
    <a href='privata.php'>ENTRA</a>
    <? } ?>
    </form>

    <?
    if (!empty($_POST["login"])){
    if(empty(
    $status)){
    echo
    "L'utente digitato non esiste....";
    }elseif(
    $status==0){
    echo
    "Login riuscito!";
    }elseif(
    $status==1){
    echo
    "Password errata!";
    }
    }
    ?>

  7. #7
    Guest

    Predefinito

    Ciao Matt93!
    Sì, è una soluzione interessante per non avere i dati in chiaro, certo non è una criptazione, ma almeno il primo che passa di turno nn dovrebbe riuscire a leggerlo :)
    Magari si potrebbero non usare i classici "user" & "pass" nel cookie per fare un po' di ulteriore offuscamento...

    Mi pare che ci sia un errore però nel dodice, ovvero alla riga:
    echo $_COOKIE['pass'];

    in realtà dovrebbe essere:
    echo base64_decode($_COOKIE['pass'])

    Questo perché altrimenti riempi il campo di default con la pass codificata il B64,
    che darebbe un errore in fase di login ;)

    Ah, facci sapere come è andata astefantasmaaa! ^o^

    Grazie dello snap Matt, ero curioso di sapere la tua opinione ;)
    A presto,

    Jacopo

    PS Provate un po' a premere CTRL+I, CTRL+B & co mentre scrivete un post ;)
    L'ho appena scoperto e sono al 7ttimo cielo, lOl

  8. #8
    astefantasmaaa non è connesso Neofita
    Data registrazione
    23-05-2008
    Messaggi
    12

    Predefinito

    Citazione Originalmente inviato da matt93 Visualizza messaggio
    Lo ho migliorato un po....
    Dovrebbe andare....

    Codice PHP:
    <?
    $utenti
    =array();
    $utenti[0]=array();
    $utenti[0]['user']="user1";
    $utenti[0]['pass']="Password1";
    $utenti[1]=array();
    $utenti[1]['user']="user2";
    $utenti[1]['pass']="Password2";
    $utenti[2]=array();
    $utenti[2]['user']="user3";
    $utenti[2]['pass']="Password3";
    ?>
    <form method="post" action="login.php">
    Username<br><input type="text" name="username"><br>
    Password<br><input type="password" name="password"><br><br>
    <input type="submit" name="login" value="Login">
    </form>

    <?
    if (!empty($_POST["login"]))
    {
    $username = $_POST["username"];
    $password = $_POST["password"];
    foreach(
    $utenti as $utente){
    if (
    strtolower($username) == strtolower($utente['user'])){
    if(
    strtolower($password) == strtolower($utente['pass'])){
    setcookie("login", "OK");
    setcookie("user", stripslashes($_POST['user']));
    echo
    "Benvenuto <b>".$username."!<br><br>";
    echo
    "<a href='privata.php'>ENTRA</a>";
    $status=0;
    }else{
    $status=1;
    }
    }
    }

    if(empty(
    $status)){
    echo
    "L'utente digitato non esiste....";
    }elseif(
    $status==0){
    echo
    "Login riuscito!";
    }elseif(
    $status==1){
    echo
    "Password errata!";
    }
    }
    ?>
    Puoi anche usare un file come database per i nomi degli utenti e le relative password.
    ti basta sostituire tutto il pezzo prima del form HTML con questo.

    Codice PHP:
    <?

    $user_file
    ="./db/utenti.txt"; // nome del file da usare come Database

    $user_file=file($user_file);
    $utenti=array();
    foreach(
    $user_file as $id=>$value){
    $data=explode("|||", $value);
    $user=$data[0];
    $pass=$data[1];
    $utenti[$id]=array();
    $utenti[$id]['user']=$user;
    $utenti[$id]['pass']=$pass;
    }

    ?>
    Nel file ./db/utenti.txt:
    Codice:
    user1|||password1|||
    user2|||password2|||
    user3|||password3|||
    Fammi sapere come va...

    Ciauz!
    Ciao e grazie a tutti...comunque ho provato il primo, però quando si logga esce la scritta "L'utente digitato non esiste.... "

    come si può rimediare?

    provate pure voi : http://astefantasmaaa.altervista.org/login.php

    utente: user1 password: Password1

  9. #9
    Ospite Guest

    Predefinito

    scusa, un mio piccolo errore, mi sono scordato che empty() è diverso da is set()...

    sostituisci questo
    Codice PHP:
    if(empty($status)){
    echo
    "L'utente digitato non esiste....";
    }elseif(
    $status==0){
    echo
    "Login riuscito!";
    }elseif(
    $status==1){
    echo
    "Password errata!";
    }
    con questo

    Codice PHP:
    if(!isset($status)){
    echo
    "L'utente digitato non esiste....";
    }elseif(
    $status==0){
    echo
    "Login riuscito!";
    }elseif(
    $status==1){
    echo
    "Password errata!";
    }

  10. #10
    astefantasmaaa non è connesso Neofita
    Data registrazione
    23-05-2008
    Messaggi
    12

    Predefinito

    Grazie mille! ti sono debitore ;)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •