Visualizzazione risultati 1 fino 10 di 10

Discussione: Login restituisce pagina nulla

  1. #1
    Guest

    Predefinito Login restituisce pagina nulla

    Salve a tutti ho un problema con un login in php :

    Dunque ho 4 file che riportero' qui di seguito e il problema sta nel fatto che quando eseguo il login non mi restituisce "Login effettuato con successo!" ma nulla, invece se sbaglio a scrivere password mi restituisce correttamente "Login errato".

    Il primo file che si connette al database : (config.php)

    Codice PHP:
    <?php
    function connect(){
    mysql_connect("localhost", "blacktech", "miapassword");
    mysql_select_db("my_blacktech");
    }
    ?>
    Il secondo è l'header : (header.php)

    Codice PHP:
    <?php
    include 'config.php';
    connect();
    ?>

    <html>
    <head>
    <title>Login</title>
    </head>

    <body>
    <div id="menu">
    <ul>
    <?php
    if(isset($_SESSION['utente'])) {
    echo
    "<li><a href='login.php?azione=logout'>Logout</a></li>";
    } else {
    echo
    "<li><a href='login.php?azione=login'>Login</a></li>";
    }
    ?>
    </ul>
    </div>
    Il terzo è l'index : (index.php)

    Codice PHP:
    <?php
    include 'header.php';
    ?>

    <div id="wrapper">

    <p>
    <?php
    if(isset($_SESSION['utente'])){
    echo
    "Ciao <strong>".$_SESSION['utente']."</strong>";
    } else {
    echo
    "Ciao, non sei connesso!";
    }
    ?>
    </p>

    </div>

    </body>
    </html>
    E l'ultimo è login che effettua il login e tutti i controlli : (login.php)

    Codice PHP:
    <?php
    include 'header.php';
    session_start();
    ?>

    <div id="wrapper">

    <?php
    $p
    = $_GET['azione'];

    // Se login.php?azione=login
    if($p == "login"){

    if(!isset(
    $_POST['invia'])) { ?>

    <form method="POST" action="login.php" id="formlogin">
    <label for="username">Username</label>
    <input type="text" name="username" id="username" /><br>
    <label for="password">Password</label>
    <input type="password" name="password" id="password" /><br>
    <input type="submit" name="invia" id="login" value="Accedi" />
    </form>

    <?php } else {

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    if(
    $username == "" || $password == "") {

    echo
    "Attenzione devi inserire tutti i campi";

    } else {

    $password_cript = md5($password);

    $recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");

    $verificadati = mysql_num_rows($recuperadati);

    if(
    $verificadati == 1) {

    $sessione = mysql_fetch_array($recuperadati);
    $_SESSION['utente'] = $sessione['username'];
    echo
    "Login avvenuto con successo!

    <script type="
    text/javascript">
    <!--
    setTimeout('location.href="
    http://blacktech.altervista.org/0xVip/index.php"',2000);
    -->
    </script>";

    } else {
    echo "Login Errato!";
    }

    }

    }

    // Se login.php?azione=logout
    } elseif ($p == "logout") {

    session_destroy();
    echo "Logout avvenuto con successo!";
    header("Refresh: 2; URL=index.php");
    }

    ?>

    </div>
    </body>

    Grazie a chiunque sapra dirmi che errore ho compiuto ed eventuale correzione :)

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    dal colore del sorgente dovresti capire l'errore: devi effettuare l'escape dei doppi apici nel codice javascript.

    Poi, visto che "header.php" ha output html, dovresti prima eseguire la session_start(), poi includere l'header.php, e non il vice versa (parlo delle prime righe di "login.php").

    Comunque, invece di fare un redirect in javascript (con location.href), io lo farei in html, facendo funzionare anche ai visitatori che non hanno (abilitato) il javascript.

    Fammi sapere se ancora non funziona.

    Ciao!
    Ultima modifica di alemoppo : 30-10-2011 alle ore 18.32.14

  3. #3
    Guest

    Predefinito

    Grazie di aver risposto, io il redirect prima di metterlo in javascript lo avevo provato a fare con php, e non cambiava nulla.
    Io comunque il codice di login.php l'ho modificato cosi :

    Codice PHP:
    <?php
    session_start
    ();
    include
    'header.php';
    ?>

    <div id="wrapper">

    <?php
    $p
    = $_GET['azione'];

    // Se login.php?azione=login
    if($p == "login"){

    if(!isset(
    $_POST['invia'])) { ?>

    <form method="POST" action="login.php" id="formlogin">
    <label for="username">Username</label>
    <input type="text" name="username" id="username" /><br>
    <label for="password">Password</label>
    <input type="password" name="password" id="password" /><br>
    <input type="submit" name="invia" id="login" value="Accedi" />
    </form>

    <?php } else {

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    if(
    $username == "" || $password == "") {

    echo
    "Attenzione devi inserire tutti i campi";

    } else {

    $password_cript = md5($password);

    $recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");

    $verificadati = mysql_num_rows($recuperadati);

    if(
    $verificadati == 1) {

    $sessione = mysql_fetch_array($recuperadati);
    $_SESSION['utente'] = $sessione($username);
    echo
    "Login avvenuto con successo!";
    header("Refresh: 2; URL=index.php");
    } else {
    echo
    "Login Errato!";
    }

    }

    }

    // Se login.php?azione=logout
    } elseif ($p == "logout") {

    session_destroy();
    echo
    "Logout avvenuto con successo!";
    header("Refresh: 2; URL=index.php");
    }

    ?>

    </div>
    </body>
    E non va lo stesso :(

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Codice PHP:
    $sessione = mysql_fetch_array($recuperadati);
    $_SESSION['utente'] = $sessione($username);
    mysql_fetch_array() restituisce un array. Quindi non capisco il perché di $sessione($username); ...$sessione dovrebbe essere un array, non una funzione!

    Forse volevi fare:
    Codice PHP:
    $_SESSION['utente'] = $sessione['username'];
    oppure usare $username direttamente, visto che vale lo stesso valore...

    Per i redirect, così non funzionano, perché non puoi modificare i parametri header della pagina, dopo aver inviato un output "html".
    In quel caso, o usi la ob_flush(), oppure puoi fare il redirect tramite html.

    Ciao!
    Ultima modifica di alemoppo : 30-10-2011 alle ore 19.33.59

  5. #5
    Guest

    Predefinito

    Aggiungo che un bel error_reporting(E_ALL) all'inizio dello script, non farebbe sicuramente male.


  6. #6
    Guest

    Predefinito

    Grazie a tutti delle risposte, ma dato che non ne venivo fuori ho cambiato lo script in questo modo :

    Non ho ancora implementato la sessione in quanto adesso sto almeno cercando di far "partire" il login in modo corretto.

    config.php :

    Codice PHP:
    <?php
    $db_host
    = "localhost";
    $db_user = "blacktech";
    $db_pass = "";
    $db_name = "my_blacktech";
    ?>
    connect.php :

    Codice PHP:
    <?php
    include 'config.php';
    $conn = mysql_connect($db_host,$db_user,$db_pass);
    ?>


    login.php :

    Codice PHP:
    <?php
    if(!isset($_POST['submit'])) { ?>

    <form method="POST" action="login.php">
    <i>Username :</i> <br>
    <input type="text" name="username" value="" /><br>
    <i>Password :</i> <br>
    <input type="password" name="password" value="" /><br>
    <input type="submit" name="submit" id="login" value="Login" />
    </form>

    <?php } else {
    include
    'config.php';
    include
    'connect.php';

    $user = mysql_real_escape_string($_POST['username']);
    $pass = mysql_real_escape_string($_POST['password']);

    $query = "SELECT * FROM utenti WHERE username = '{$user}' AND password = '{$pass}'";
    $result = mysql_query($query,$conn);
    $num_rows = mysql_num_rows($result);

    if(
    $num_rows == '1') {
    echo
    "Login effettuato con successo!";
    } else {
    echo
    "Dati errati";
    }
    }
    ?>
    Ora il problema è che restituisce sempre "Dati errati".
    PS: Sto per fare un esaurimento nervoso.

    EDIT : Risolto :)
    Ultima modifica di blacktech : 31-10-2011 alle ore 11.23.01

  7. #7
    Guest

    Predefinito

    Prova a non usare mysql_num_rows(), ma mysql_fetch_assoc() in modo da controllare se esiste l'user_id (ti verrà comodo in futuro quando dovrai mostrare all'utente con quale nick è collegato per esempio).

    Poi un po' di Debug non sarebbe male, per esempio stampare la query che dovrebbe essere eseguita, poi stampare i risultati e vedere dove è l'errore.


  8. #8
    Guest

    Predefinito

    Sisi biccheddu ho fatto come detto da te prima cioe inserire error_reporting(E_ALL) e mi dava errore nella num_rows, poi cercando meglio mi sono accorto che non mi ero connesso al db, per quello dava dati errati sempre e comunque, grazie mille a tutti dell'aiuto :)

  9. #9
    Guest

    Predefinito

    Salve ragazzi!!so ke è passato parecchio tempo da quando è stata scritta questa discussione però io ho gli stessi dati di quelli riportati sopra!!!la registrazione me la fa in tranquillità..mentre quando arriva al login.php mi da un problema!!! $p=$_Get['azione']; questa variabile è il problema di tutto ...mi dice : Notice: Undefined variable: _Get in C:\xampp\htdocs\social\network\login.php on line 4...in poche parole 'azione' sarebbe il problema...siccome tutto questo l'ho fatto cn l'aiuto di un tutorial non so come risolverlo...vi chiedo aiutooo x favore ...Grazie

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Prova a sostituire $_Get con $_GET

    Ciao!

Regole di scrittura

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