• User Attivo

    Ho quindi i tre fogli:

    utenti.php:
    [php]<?php
    $utenti[]=array('id' => 'id1', 'nomeutente' => 'user1', 'password' => 'pass1');
    $utenti[]=array('id' => 'id2', 'nomeutente' => 'user2', 'password' => 'pass2');
    header('Location: login.php');
    exit;
    ?>[/php]

    protetta.php:
    [php]<?php
    session_start();
    fopen("utenti.php","a+");
    if(isset($_SESSION['login']))
    echo 'Contenuto privato';
    else
    echo 'Contenuto pubblico';
    ?>[/php]

    login.php:
    [php]<?php
    include('utenti.php');
    $c = count($utenti);
    $i = 0;
    while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
    $i++;
    if($i<$c)
    {
    $_SESSION['login'] = $utenti*['id'];
    // reindirizzo l'utente
    header('Location: protetta.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/php]

    In questo modo però aprendo la pagina di login mi esce scritto: Nome Utente o Password errati.
    Ho saltato qualche pezzo? In pratica non carica il contenuto di body dando subito il messaggio di errore..


  • ModSenior

    In utenti.php le righe che fanno il redirect dovresti toglierle.
    Mentre in login.php dovresti controllare che il modulo sia inviato prima di fare le operazioni.


  • User Attivo

    Ah visto che ne hai parlato, in utenti.php avevo messo il redirect perchè aprendo appunto la pagina utenti.php rimaneva il foglio bianco, e quindi l'ho messo per reindirizzare chi ci potrebbe passare alla pagina di login. Disturba lo script in questo modo? Meglio che lo tolgo?

    Per la pagina di login efettivamente mettendo il codice sotto il form mi carica la pagina..
    Solo che inserendo nome e password di un utente mi reindirizza alla pagina protetta ma stampa il contenuto pubblico e non privato..


  • ModSenior

    Se vuoi mettere il redirect fai un controllo sull'url richiesto in modo da fare il redirect solo se viene richiesta quella pagina, altrimenti fai redirect ogni volta che usi il file in lettura.
    [php]
    <?php
    session_start();
    if(isset($_POST['user'])){
    include('utenti.php');
    $c = count($utenti);
    $i = 0;
    while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
    $i++;
    if($i<$c)
    {
    $_SESSION['login'] = $utenti*['id'];
    // reindirizzo l'utente
    header('Location: protetta.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>
    [/php]


  • User Attivo

    Ora va perfetto, ho provato anche la pagina di logout e almeno quella sono riuscito da solo 😄
    Per ora penso possa bastarmi questo, vedrò di adattarlo allo scopo che ho in mente, e in caso avessi problemi ritorno qui 🙂

    Grazie mille!


  • ModSenior

    Figurati.

    :ciauz:


  • User

    Ciao a tutti,
    mi sono appena iscritto in questo forum perchè è molto bello e molto utile per me che sono alle prime armi in php.
    A me serviva uno script di login senza database ed ho trovato questo,l'ho provato in locale e sul web ma al momento dell'invio dei dati non fa niente,cioè mi spiego meglio quando immetto i dati rimane la pagina del login e non mi dà nè Nome utente e password errati e nè mi indirizza alla pagina privata...Che devo fare?Da cosa è dovuto? Vi posto lo script.

    Login.php
    [PHP]<?php
    session_start();
    if(isset($_POST['user'])){
    include('utenti.php');
    $c = count($utenti);
    $i = 0;
    while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
    $i++;
    if($i<$c)
    {
    $_SESSION['login'] = $utenti*['id'];
    // reindirizzo l'utente
    header('Location: privata.php');

    // se non esiste da l'errore
    

    }else{
    die('Nome Utente o Password errati');
    }}
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onFocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onFocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/PHP]

    Ah,un'ultima cosa ma per il file utenti nome utente e password gli devo scrivere a mano giusto? se è così in quali campi devo scriverli?

    Scusate se sto facendo domande da vero principiante ma la verità è che sto alle prime con il php...
    Grazie e spero mi rispondiate...
    Stek:ciauz:


  • User

    Ciao a tutti volevo sapere come devo fare ad aggiungere nomeutente e password al file utenti.php....mi potreste dare una mano??
    :ciauz:Grazie mille:ciauz:


  • ModSenior

    [php]
    $utenti[]=array('id' => 1, 'nomeutente' => 'nomeutente1', 'password' => 'password1');
    $utenti[]=array('id' => 2, 'nomeutente' => 'nomeutente2', 'password' => 'password2');
    [/php]


  • User

    Grazie TheDarkita,
    il file ce l'ho pure io, solo che non ho capito dove devo inserire i dati di ogni utente...quindi password e user.....non è che mi pioi fare un'esempio?
    grazie stek


  • ModSenior

    L'esempio è proprio quello invece di nomeutente1, devi mettere il nome utente dell'utente 1, in password1 la password dell'utente 1, e cosi via...


  • User

    Grazie TheDarkita,
    ora provo...!


  • User

    Ciao TheDarkita,
    ho provato lo script on-line una volta modificato il file utenti.php,sono andato a vedere se mi faceva entrare ma mi dice sempre:Nome utente o password errati...Che devo fare? Posto il codice...

    Login.php:
    [php]<?php
    session_start();
    if(isset($_POST['user'])){
    include('utenti.php');
    $c = count($utenti);
    $i = 0;
    while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass) $i++;
    if($i < $c)
    {
    $_SESSION['login'] = $utenti*['id'];
    // reindirizzo l'utente
    header('Location: protetta.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die ('Nome Utente o Password errati');

    }
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onFocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onFocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/php]utenti.php
    [php]<?php
    $utenti[]=array('id' => 1, 'nomeutente' => 'stefano', 'password' => 'stefano');
    $utenti[]=array('id' => 2, 'nomeutente' => 'nomeutente2', 'password' => 'password2');
    ?> [/php]Protetta.php:
    [php]<?php
    session_start();
    fopen("utenti.php","a+");
    if(isset($_SESSION['login']))
    echo 'Contenuto privato';
    else
    echo 'Contenuto pubblico';
    ?>
    [/php]Mi puoi dare una mano TheDarkita??
    Grazie Stek=)=)


  • User

    Ciao TheDarkita,
    sto provando a capire dov'è l'errore, ma non lo sto riuscendo a trovare...
    Mi potresti dare una dritta???
    Grazie Stek :ciauz:


  • User

    Ad un primo sguardo mi sembra manchino le variabili $user e $pass che qui recupero con

    $user = $_POST['user'];
    $pass = $_POST['pass'];
    

    ed anche l'action del form era da completare:

    <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
    

    quindi dovrebbe essere (ma devo testare pure io, ANZI chiedo agli esperti consigli e ragguagli):

    login.php

    <?php
    session_start();
    if(isset($_POST['user'])){
    
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    include('utenti.php');
    $c = count($utenti);
    $i = 0;
    while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
    $i++;
    if($i<$c)
    {
    $_SESSION['login'] = $utenti*['id'];
            // reindirizzo l'utente
            header('Location: protetta.php');
           
        
        // se non esiste da l'errore
    }else{
            die('Nome Utente o Password errati');
    }}
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
     <input name="user" type="text" id="user" value="Nome Utente"  onFocus="if(this.value=='Nome Utente') this.value='';" /><br />
     <input name="pass" type="password" id="pass" value="Password"  onFocus="if(this.value=='Password') this.value='';" /><br />
     <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>
    

  • User

    Ciao Motorpsyco,
    grazie per la risposta, comunque l'ho provato e l'autentificazione avviene, solo che avviene anche se c'è un solo dato corretto(pass o user) ed una volta entrato mi da contenuto privato ma l'ho da anche se si mette l'URL nella barra del browser....Aspetto una vostra risposta
    Grazie Stek


  • User

    ciao stek,
    è vero: ho fatto una prova anche io.
    purtroppo non ho le conoscenze tali da capire al volo di cosa si tratta e sono impegnatissimo con il lavoro (mi aspetta un sabato notte niente male ohibò)

    speriamo in qualche anima pia... :ciauz:


  • User

    Ciao motorpsyco,
    spero anch'io che qualcuno mi possa aiutare sto veramente impazzendo!!!
    Comunque per questa sera Buon Lavoro...
    Grazie stek


  • User

    Ciao a tutti,
    da quanto tempo...nono è che qualcuno sarebbe così gentile da darmi una mano per quaesto script,ve ne sarei molto grato,perche non so più dove sbattere la testa...❌x
    Spero che qualcuno risponda...
    Ciao Stek


  • ModSenior

    Ciao stek96,

    ti basta verificare che sia settata la variabile
    $_SESSION['login'].