• User Attivo

    Uhm..... Potresti provare a togliere:
    [php]header("Refresh: 2; URL=asd.php");[/php]e magari fare il refresh con un meta tag dell'HTML o magari con un JavaScript?

    P.S.: spero che tu non abbia intenzione di andare in produzione con questo codice qua:
    [php]$user = $_POST["username"];
    $query = "SELECT id, username, password FROM users WHERE username='$user' AND password='$pass'";
    $result = $db->query($query);[/php]!!!!


  • User

    provo con il meta tag...
    basta scrivere
    [php]
    echo "<meta http-equiv="refresh" content="0; url=".$url."" />";
    [/php]

    giusto??

    Per la seconda domanda, prima di tutto fa schifo, e lo so... Detto questo per il momento è una pagina di prova, quindi mi serviva un codice più semplice possibile, ed in secondo luogo il login mi servirebbe unicamente per identificare gli utenti, la sicurezza sarebbe abbastanza in secondo piano...
    visto che ci sono comunque farò in modo di rendere lo script "sicuro", o quanto meno scritto un po' meglio!! :tongueout:


  • User Attivo

    Il meta tag va bene cos', ovviamente lo devi mettere nell'<head></head> (occhio solo alle virgolette...)

    Per quanto riguarda la sicurezza secondo me è meglio sempre scrivere codice sicuro anche se si sviluppa in locale, poi uno magari si dimentica e sono problemi... 😉


  • User

    su quello sono d'accordo...però in questo caso l'applicazione che sto sviluppando è talmente incasinata che piano piano sto mettendo insieme tutti i pezzettini per ottenere qualcosa di accettabile!

    Prova col meta tag e poi aggiorno...


  • User

    Fatta la prova...
    Ma non è cambiato nulla...

    ho inserito questo codice
    [HTML]
    <html>
    <head>
    <meta http-equiv="refresh" content="2; url=asd.php">
    </head>
    <body>
    </body>
    </html>
    [/HTML]
    ma la pagina asd.php continua a stampare cookie non riconosciuto


  • User

    Fatta la prova...
    Ma non è cambiato nulla...

    ho inserito questo codice
    [html]
    <html>
    <head>
    <meta http-equiv="refresh" content="2; url=asd.php">
    </head>
    <body>
    </body>
    </html>
    [/html]
    ma la pagina asd.php continua a stampare cookie non riconosciuto


  • User Attivo

    Scusa in asd.php puoi fare un
    [PHP]echo "<pre>";
    print_r($_COOKIE);
    echo "</pre>";[/PHP]
    e vedere che ti dice?


  • User

    ecco fatto...

    l'output è

    Array()


  • User Attivo

    Ecco, allora vuol dire che il cookie non viene settato nella pagina originaria - però senza vedere tutto il codice, a questo punto, è impossibile capire che succede... Non è che c'è uno spazio o qualcosa prima del PHP? Hai i warning attivati (error_reporting almeno a E_WARNING e display_errors su stdout)?


  • User

    ti posto tutto il codice della pagina...
    [php]
    <?php
    include "../config.php";
    include "../lib/_db.php";

    $user = $_POST["username"];
    $pass = md5($_POST["password"]);
    $db = new Database();
    $db->connect();
    $query = "SELECT id, username, password FROM users WHERE username='$user' AND password='$pass'";
    $result = $db->query($query);
    $num_row = mysql_affected_rows();

    if ( $result == true && $num_row !== 0) {
    // utente riconosciuto
    $row = mysql_fetch_array($result);
    //
    //settaggio coockie
    //$cookie_name = $row["id"]."@versioner.com";
    $cookie = setcookie("versioner", $row["username"]);
    //$cookie = setcookie("versioner", "admin");
    //header("Refresh: 2; URL=asd.php");
    echo "Utente <b>".$row["username"]."</b> riconosciuto con successo"."<br>\n";
    if ( $cookie ) {
    echo "Cookie inviato con successo<br>\n";
    echo "Cookie: ".$_COOKIE["versioner"]."<br>\n";
    }
    else
    echo "Cookie non inviato";
    }
    else
    echo "Utente $user non trovato nel database";

    //controllare che l'utente esista e se esiste settare il coockie
    ?>
    [/php]
    [html]
    <html>
    <head>
    <meta http-equiv="refresh" content="2; url=asd.php">
    </head>
    <body>
    </body>
    </html>
    [/html]

    Tutto qui...non ci sono spazi prima di <?php, e la funzione setcookie() ritorna true...il che è strano visto che di fatto il cookie non viene settato...:gtsad:

    la visualizzazione errori è su E_ALL, quindi mi fa vedere tutto...


  • User Attivo

    Ah, forse ho trovato - mysql_fetch_array restituisce un ARRAY, non un HASH, quindi $row["username"] non dovrebbe esistere! Prova con $row[0] oppure usando mysql_fetch_assoc (o, ancora meglio, usando MDB2, ma questa è un'altra storia...)


  • User

    però aspetta un attimo... my_sql_fetch_array restituisce un array associativo, i cui campi sono nominati a seconda del nome della colonna della taballa da cui sono presi.

    Inoltre se io faccio echo $row["username"], mi viene stampato il valore corretto...Io provo, ma non credo proprio che l'errore sia li.
    Considera inoltre che ho usato sempre quella funzione in quel modo in tutti gli altri script, e non ha mai dato problemi di funzionamento.

    La cosa che mi stupisce è che questi problemi li ho solo quando tento di usare cookie o sessioni. Anche altri script già fatti e sicuramente funzionanti non mi loggano mai correttamente quando li uso in locale. Faccio ancora la prova di uploadare tutto su server e vedere se così funziona...

    Per conoscenza, cos'è MDB2??