• 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'].


  • User

    Ciao Thedarkita,
    grazie per avermi risposto...susami tanto però non ho capito cosa vuoi dire, mi puoi fare un esempio o mostrarmi cosa vuoi dire...???
    Te ne sarei grato...
    Grazie Stek


  • ModSenior

    Basta aggiungere in cima ai file da proteggere:
    [php]
    <?php
    session_start();
    if(!isset($_SESSION['login']))
    die('Accesso nno autorizzato');
    ?>[/php]


  • User

    Ciao Thedarkita,
    grazie per la risposta...
    allora io ho questo file:

    Protetta.php
    [php]<?php
    session_start();
    fopen("utenti.php","a+");
    if(isset($_SESSION['login']))
    echo 'Contenuto privato';
    else
    echo 'Contenuto pubblico';
    ?> [/php]dove lo devo mettere questo:
    [php] <?php
    session_start();
    if(!isset($_SESSION['login']))
    die('Accesso nno autorizzato');
    ?> [/php]Poi un'altra cosa: allora aggiungo i dati(nomeutente e pass) nel file utenti, ma quando vado al login mi dice Nome o Pass non corretti...cosa devo fare?
    Ti posto i file:

    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>[/php]ed il file utenti.php
    [php]<?php
    $utenti[]=array('id' => 1, 'nomeutente' => 'stefano', 'password' => 'io');
    $utenti[]=array('id' => 2, 'nomeutente' => 'luca', 'password' => 'luca');
    ?> [/php]Cosa devo fare?

    Facendo come mi aveva consigliato motorpsyco, i dati inseriti nel file utenti.php una volta che verifico ,l'autenticazione funziona, 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.
    Grazie Thedarkita per il tempo che stai dedicando a cercare di spiegarmi...scusami se ti faccio domande da vero principiante!
    Grazie stek


  • ModSenior

    Se vuoi proteggere una pagina basta che quel codice lo inserisci all'inizio della pagina, e mostrerà l'errore a chi non è loggato.


  • User

    Ciao Thedarkita,
    allora, se devo proteggere le pagine inserisco quel pezzo che mi hai dato tu,invece per il login quello con il fopen?
    E per le altre cose che mi dici?
    Grazie Stek