Visualizzazione risultati 1 fino 6 di 6

Discussione: Php5 e pagina di login

  1. #1
    Guest

    Predefinito Php5 e pagina di login

    Salve a tutti,

    ho aggiornato la mia versione di php alla 5.3 perchè mi servivano un paio di funzioni che nella 4 non ci sono e magicamente la mia pagina di login non funziona più! (giusto per test son tornato alla 4 e torna a funzionare).

    Vi metto il codice, magari sapete aiutarmi:

    Codice PHP:
    <html>
    <head>
    <title>Pagina di Login</title>
    </head>
    <body>


    <?
    if(isset($message)) $message = "<tr>
    <td style=\"background: #ff0; color: #000\">
    <strong>"
    .$message."</strong>
    </td>
    </tr>
    "
    ;
    if(isset(
    $_COOKIE["cookie"]) && $_COOKIE["cookie"] != "" && $_GET["logout"] != "yes") {
    header("Location: index.php");
    exit;
    }
    if(
    $_GET["logout"] == "yes") {
    setcookie("cookie", "", time()+60*60*24*30, "/");
    header("Location: index.php");
    exit;
    }
    ?>
    <form action="login2.php" method="post">
    <table border="2" cellpadding="15" cellspacing="5" style="width: 20%">
    <?=$message?>
    <tr>
    <td style="background: #eee; color: #000">
    <strong>User Name</strong>:<br />
    <input maxlength="25" name="login_user_name" size="20" tabindex="1" type="text" /><br /><br

    />
    <strong>Password</strong>:<br />
    <input maxlength="25" name="login_password" size="20" tabindex="2" type="password" />
    </td>
    </tr>
    <tr>
    <td style="background: #eee; color: #000">
    <strong>Stai loggato per :</strong>:<br />
    <select name="logged_in_for" tabindex="3">
    <option value="1">1 giorno</option>
    <option value="2">2 giorni</option>
    <option value="3">3 giorni</option>
    <option value="7">1 settimana</option>
    <option value="14">2 settimane</option>
    <option value="21">3 settimane</option>
    <option value="31">1 mese</option>
    </select>
    </td>
    </tr>
    <tr>
    <td style="background: #eee; color: #000">
    <input name="submit" tabindex="4" type="submit" value="Login" />
    </td>
    </tr>
    </table>
    </form>

    </body>
    </html>
    e la pagina login2.php

    Codice PHP:
    <?

    // Here is where you set your user name and password
    $user_name = array("User");
    $password = array("passw");
    // End

    $_POST["login_user_name"] = $login_user_name;
    $_POST["login_password"] = $login_password;
    $_POST["logged_in_for"] = $logged_in_for;

    $count = 0;
    for(
    $i=0;$i<count($user_name);$i++){
    if(
    $_POST["login_user_name"] == $user_name[$i] && $_POST["login_password"] == $password[$i]) {
    $count++;
    }
    }

    if(
    $count==0){
    header("Location: login.php?message=Username+o+password+non+corretti.");
    exit;
    }
    else{
    setcookie("cookie", $login_user_name, time()+60*60*24*$logged_in_for, "/");
    header("Location: index.php");
    exit;
    }
    ?>
    di fatto non mi da nessun errore (che sennò dovrebbe comparire in un box a sfondo giallo in login.php) però non mi setta nemmeno il cookie.

    Attendo aiuti, grazie mille

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Puoi visualizzare eventuali errori "nascosti" aggiungendo all'inizio dello script
    Codice PHP:
    error_reporting(E_ALL);
    In generale, header() non dovrebbe mai essere chiamata quando uno script ha già mandato del testo o del codice in output, come capita nel tuo primo file.

  3. #3
    Guest

    Predefinito

    fosse solo un problema di header mi arrangerei...il problema è che non setta il cookie....e poi il punto è che con php4 funziona alla perfezione.

    ps. non è assolutamente vero che header viene chiamato dopo che ho mandato del testo

    edit:

    Comunque adesso ho reimpostato php4...però sarebbe importante poter avere php5 perchè mi serve la funzione json_encode. inoltre non capisco perchè non debba settarmi il cookie...attendo vostre illuminazioni

    grazie ancora

    ps. mettendo la visualizzazione completa degli errori mi segnala solo un warning di "logout" undefined a questa riga:

    Codice PHP:
    if($_GET["logout"] == "yes") {
    ma è normale perchè non gli passo nulla nell'url, ma quello non è ovviamente un problema :)
    Ultima modifica di dreadnaut : 10-06-2012 alle ore 23.41.42 Motivo: se devi aggiungere qualcosa, usa il tasto Edita ---->

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Se non setta il cookie è perché o non arriva ad eseguire setcookie, oppure quando arriva ad eseguire setcookie qualche condizione non permette al php di inviare i dati al browser.

    Il primo paragrafo nella documentazione di setcookie() dice
    [...] Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace
    Il tuo codice invia l'intero head della pagina prima delle chiamate ad header(), quindi correggi.
    Ultima modifica di dreadnaut : 10-06-2012 alle ore 23.43.01

  5. #5
    Guest

    Predefinito

    Trovato, l'errore. Stava nel file login2.php dove non so per che motivo facevo l'assegnazione di valore variabile al contrario...e non capisco come potesse andare in php4 :O

    cmq grazie dell'aiuto :)

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    In php4 c'era ancora register_globals attivo, probabilmente, che creava automaticamente variabili per ogni elemento contenuto in $_POST.

Regole di scrittura

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