Visualizzazione risultati 1 fino 10 di 10

Discussione: Problema con redirect dopo login [era: php e mysql]

  1. #1
    Guest

    Lightbulb Problema con redirect dopo login [era: php e mysql]

    buongiorno ,
    da quello che mi vate detto , essendo un altro script ho aperto un nuovo topic.
    quandofaccioil login, nonmi rimanda alla pagina che voglio tramite header, adesso posto i codici

    login.php
    Codice PHP:
    <?php
    include('core.php');
    if(isset(
    $_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(empty(
    $username) || empty($password)) {
    echo
    'Riempi tutti i campi.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(
    mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username'")) == 0) {
    echo
    'Username non trovato.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } else {
    $password = md5($password);
    $ip = $_SERVER['REMOTE_ADDR'];
    if(
    mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username' AND password='$password'")) > 0) {
    $username = mysql_result(mysql_query("SELECT username FROM users WHERE username LIKE '$username'"), 0);
    $userid = mysql_result(mysql_query("SELECT id FROM users WHERE username LIKE '$username'"), 0);
    mysql_query("UPDATE users SET last_login='".time()."', last_ip='$ip' WHERE id='$userid'") or die(mysql_error());
    $_SESSION['username'] = $username;
    $_SESSION['userid'] = $userid;
    header('Location: chat.html');
    }
    }
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <label>Username: <input type="text" name="username" required maxlength="16" /></label><br />
    <label>Password: <input type="password" name="password" required maxlength="20" /></label><br />
    <input type="submit" name="login" value="Accedi" />
    </form>
    <?php
    }
    ?>
    chat.html
    Codice HTML:
    <html>
    <head>
    <title>
    </title>
    </head>
    <body>
    <a href="/gabrieleanna/sitogabrieleanna.html">gabriele-anna</a>
    <a href="/mircogabriele/sitomircogabriele.html">mirco-gabriele</a>
    <a href="/mircoanna/sitomircoanna.html">mirco-anna</a>
    </body>
    </html>
    qualcuno sa come risolvere. grazie per coloro che risponderanno
    Ultima modifica di alemoppo : 30-08-2015 alle ore 14.20.32 Motivo: +tag [php]

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

    Predefinito

    Quell'header() può non andare per 2 motivi:

    1. Quella istruzione non viene mai eseguira (l'esecuzione non arriva mai lì)
    2. Hai già prodotto dell'output html e quindi non puoi più modificare l'header della pagina


    Per vedere se l'esecuzione arriva in quel punto, dovresti debuggare il codice ad esempio con delle echo: al posto dell'header prova a far stampar qualcosa, e vedere se appare. Se non appare significa che lì non arriva proprio.

    Se invece l'esecuzione arriva a quella istruzione, allora dovresti verificare con la headers_sent() se hai prodotto dell'output html.

    Ciao!

  3. #3
    Guest

    Predefinito

    potresti farmi un esempio con il mio codice che vedo e capisco motlo gentile grazie

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

    Predefinito

    Codice PHP:
    <?php
    include('core.php');
    if(isset(
    $_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(empty(
    $username) || empty($password)) {
    echo
    'Riempi tutti i campi.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(
    mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username'")) == 0) {
    echo
    'Username non trovato.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } else {
    $password = md5($password);
    $ip = $_SERVER['REMOTE_ADDR'];
    if(
    mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username' AND password='$password'")) > 0) {
    $username = mysql_result(mysql_query("SELECT username FROM users WHERE username LIKE '$username'"), 0);
    $userid = mysql_result(mysql_query("SELECT id FROM users WHERE username LIKE '$username'"), 0);
    mysql_query("UPDATE users SET last_login='".time()."', last_ip='$ip' WHERE id='$userid'") or die(mysql_error());
    $_SESSION['username'] = $username;
    $_SESSION['userid'] = $userid;
    //header('Location: chat.html');
    die('Se vedi questa scritta significa che il programma passa per questo punto. Altrimenti devi debuggare gli if sopra');
    }
    }
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <label>Username: <input type="text" name="username" required maxlength="16" /></label><br />
    <label>Password: <input type="password" name="password" required maxlength="20" /></label><br />
    <input type="submit" name="login" value="Accedi" />
    </form>
    <?php
    }
    ?>

  5. #5
    Guest

    Predefinito

    grazie adesso controllo e ti dico

    EDIT:

    mi resta vuota la schermata quando compilo il formdi login e do invio come sipuo risolvere?
    Ultima modifica di alemoppo : 30-08-2015 alle ore 14.45.03

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

    Predefinito

    Sto vedendo un po' meglio il codice: non ti conviene fare ogni volta la query: eseguila una sola volta e poi metti il contenuto in una variabile. È molto meglio.

    Inoltre non capisco perché utilizzi like per l'username.

    Per risolvere comunque devi debuggare come ti ho fatto vedere, con echo o die().

    Poi, finché non ti senti più sicuro con il codice non ti consiglio di mettere le funzioni una dentro l'altra perché è molto più difficile debuggare: usa sempre variabili intermedie.

    Ciao!
    Ultima modifica di alemoppo : 30-08-2015 alle ore 14.44.41

  7. #7
    Guest

    Predefinito

    te che sei più esperto di me, potresti iutarmi a sistemarlo ? sei molto gentile grazie

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    ne sparo una ma
    Codice PHP:
    if(isset($_POST['login'])) {
    ma la parentesi graffa non deve essere chiusa prima di elseif? scusate se sbaglio

  9. #9
    Guest

    Predefinito

    mi fai un esempio ?

  10. #10
    Guest

    Predefinito

    qualcuno e capace di sistemarmi questo php perché non mi arriva all header . quando mi loggo, non mi parte header che e collegato ad un altrra cartella ma invece mi compare una schermata vuota.

    login.php

    Codice PHP:
    <?php
    include('core.php');
    if(isset(
    $_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(empty(
    $username) || empty($password)) {
    echo
    'Riempi tutti i campi.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(
    mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username'")) == 0) {
    echo
    'Username non trovato.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } else {
    $password = md5($password);
    $ip = $_SERVER['REMOTE_ADDR'];
    if(
    mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username' AND password='$password'")) > 0) {
    $username = mysql_result(mysql_query("SELECT username FROM users WHERE username LIKE '$username'"), 0);
    $userid = mysql_result(mysql_query("SELECT id FROM users WHERE username LIKE '$username'"), 0);
    mysql_query("UPDATE users SET last_login='".time()."', last_ip='$ip' WHERE id='$userid'") or die(mysql_error());
    $_SESSION['username'] = $username;
    $_SESSION['userid'] = $userid;
    header('Location: chat.html');
    }
    }
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <label>Username: <input type="text" name="username" required maxlength="16" /></label><br />
    <label>Password: <input type="password" name="password" required maxlength="20" /></label><br />
    <input type="submit" name="login" value="Accedi" />
    </form>
    <?php
    }
    ?>

Regole di scrittura

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