Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problemi con autenticazione

    Ciao a tutti. Vi chiedo una mano nei miei studi di php e scusate il thread lungo
    Sto testando una procedura di autenticazione (esattamente come riportato nel libro) ma la cosa non funzia. Sono ore che ci sbatto la testa...

    La procedura in teoria:

    Apro il file "secret.php" , il quale include auth.inc.php
    ----secret.php
    <?php
    include 'auth.inc.php';
    ?>
    <html>
    <head>
    <title>Secret</title>
    </head>
    <body>
    <h1>You've found my password!</h1>
    </body>
    </html>
    -----------------

    -----auth.inc.php----
    <?php
    // start or continue session
    session_start();

    if (!isset($_SESSION['logged']) || $_SESSION['logged'] != 1) {
    header('Refresh: 5; URL=login.php?redirect=' . $_SERVER['PHP_SELF']);
    echo '

    You will be redirected to the login page in 5 seconds.</p>';
    echo '

    If your browser doesn\’t redirect you properly automatically, ' .

    'click here.</p>';
    die();
    }
    ?>
    -------------------------------

    Non essendomi ancora loggato DOVREI essere reindirizzato al file login.php MA QUESTO NON ACCADE.

    Apro allora il file login.php. Digito le password(al momento indicate nel file stesso). DOVREI essere indirizzato al file secret.php, ma NON SOLO questo non avviene, username e passwors( asterischi) rimangono lì statici come se non avvenissene nessuna azione!!
    Eppure nel libro lo da per funzionante!
    Sicuramente c'è un errore, ma non riesco a trovarlo...mi date una mano?
    ---------login.php-------
    <?php
    session_start();

    include 'db.inc.php';
    // filter incoming values
    $username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
    $password = (isset($_POST['password'])) ? $_POST['password'] : '';
    $redirect = (isset($_REQUEST['redirect'])) ? $_REQUEST['redirect'] : 'secret.php';

    if (isset($_POST['submit'])) {
    if (!isset($_SESSION['logged']) || $_SESSION['logged']!= 1) {

    if (!empty($_POST['username']) && $_POST['username'] == 'wroxbooks' && !empty($_POST['password']) && $_POST['password'] == 'aregreat') {

    $_SESSION['username'] = $username;
    $_SESSION['logged'] = 1;

    header ('Refresh: 5; URL=' . $redirect);
    echo "

    You will be redirected to your original page request.</p>";
    echo '

    If your browser doesn\'t redirect you properly automatically, ' .
    'click here.</p>';


    die();
    } else {
    // set these explicitly just to make sure
    $_SESSION['username'] = '';
    $_SESSION['logged'] = 0;


    $error = '

    You have supplied an invalid username and/or ' .
    'password!
    Please <a href="register.php">click here ' .
    'to register</a>if you have not done so already.</p>';
    }
    }
    }

    ?>

    <html>
    <head>
    <title>Login</title>
    </head>
    <body>
    <?php
    if (isset($error)) {
    echo $error;
    }
    ?>
    <form action="login.php" method="post">
    <table>
    <tr>
    <td>Username:</td>
    <td><input type="text" name="username" maxlength="20" size="20"
    value="<?php echo $username; ?>"/></td>
    </tr><tr>
    <td>Password:</td>
    <td><input type="password" name="password" maxlength="20" size="20"
    value="<?php echo $password; ?>"/></td>
    </tr><tr>
    <td> </td>
    <td>
    <input type="hidden" name="redirect" value="<?php echo $redirect ?>"/>
    <input type="submit" name="submit" value="Login"/>
    </tr>
    </table>
    </form>
    </body>
    </html>
    ------------------------------------------------

    Grazie mille a chi mi aiuterà a capire dov'è l'errore o la mancanza di qualcosa.
    Buona giornata a tutti

  2. #2
    il tread effettivamente e' lungo.
    Ti consiglio di verificare cosa succede controllando con firebug.

    il problema che dici tu
    username e passwors( asterischi) rimangono lì statici come se non avvenissene nessuna azione!!

    e' spiegato dal fatto che i campi di input vengono riscritti con le variabili passate
    <td><input type="text" name="username" maxlength="20" size="20" value="<?php echo $username; ?>"/></td> </tr>
    <tr> <td>Password:</td> <td><input type="password" name="password" maxlength="20" size="20" value="<?php echo $password; ?>"/></td>
    a te sembra che non succeda niente ma qualcosa invece succede, prova a verificare con firebug come ti dicevo.
    il problema lo devi cercare da qualche altra parte, includi nel codice qualche cosa che ti faccia vedere le variabili

    io ho trovato questo codice che e' fantastico

    Codice PHP:
    echo '<table border=1><tr> <th>variable</th> <th>value</th> </tr>';
    foreach( 
    get_defined_vars() as $key => $value)
    {     if (
    is_array ($value) )
    {         echo 
    '<tr><td>$'.$key .'</td><td>';
    if ( 
    sizeof($value)>)         
    {
    echo 
    '"<table border=1><tr> <th>key</th> <th>value</th> </tr>';
    foreach (
    $value as $skey => $svalue)         
    {
    echo 
    '<tr><td>[' $skey .']</td><td>"'$svalue .'"</td></tr>';

    echo 
    '</table>"';

    else  
    {
    echo 
    'EMPTY';
    }  
    echo 
    '</td></tr>'

    else
    {
    echo 
    '<tr><td>$' $key .'</td><td>"'$value .'"</td></tr>';
    }

    echo 
    '</table>'
    se lo inserisci nel codice e controlli le variabili puoi capire cosa c'e' che non va
    un' altra grossa mano ti arriva da firebug

  3. #3
    Originariamente inviato da gianluca da ros
    il tread effettivamente e' lungo.

    Ti consiglio di verificare cosa succede controllando con firebug.

    il problema che dici tu
    e' spiegato dal fatto che i campi di input vengono riscritti con le variabili passate

    a te sembra che non succeda niente ma qualcosa invece succede, prova a verificare con firebug come ti dicevo.
    il problema lo devi cercare da qualche altra parte, includi nel codice qualche cosa che ti faccia vedere le variabili

    io ho trovato questo codice che e' fantastico
    [CUT]
    Codice PHP:
    echo '<table border=1><tr> <th>variable</th> <th>value</th> </tr>';
    foreach( 
    get_defined_vars() as $key => $value)
    echo 
    '</table>'
    [/CUT]

    Ciao GdaRos e grazie innanziutto dell'intervento..scusate ancora la lunghezza ( difetto iniziale del niubbo probabilmente) :-)

    Nel frattempo ho "scoperto" cosa fosse...il codice in se era corretto, solo che quei furboni del libro "Beginning PHP6,Apache_MySQL_Web_Development" si sono dimenticati di cancellare dall'esempio (probabilmente hanno modificato sempre gli stessi file) un bel " session_start() iniziale..quindi credo che php cercasse un qualche $_SESSION senza trovarlo.
    Tolto quello, funziona a maeraviglia...grrrrrr. Ci ho perso un pomeriggio...ma è colpa mia ..se fossi stato un poco piu' esperto l'avrei notato subito..va beh..col tempo .....

    Due curiosità: 1) Firebug lo uso già, ma mi permette di controllare html e DOM. Devo aggiungere una estensione per controllare il php?
    2) Il codice che mi hai postato è molto interessante; va inserito dentro il <body> o completamente fuori?

    Grazie ancora
    Ed



    se lo inserisci nel codice e controlli le variabili puoi capire cosa c'e' che non va
    un' altra grossa mano ti arriva da firebug

  4. #4
    firebug ti permette tra le altre cose di vedere le richieste get e post nonchè le risposte del server

    il codice e' codice php, vedi tu dove metterlo , io suggerisco di prepararti un file con lo script e di tenertelo bello pronto da usare con include, in questo modo devi solo decidere dove usarlo ed hai meno cose da scrivere, al limite mentre fai il debug puoi commentare/deccommentare la riga dove hai l' include a seconda delle tue esigenze

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.