Visualizzazione risultati 1 fino 11 di 11

Discussione: Problema $_SESSION

  1. #1
    Guest

    Predefinito Problema $_SESSION

    Salve, ho questo problema.. In un file di login registro una session chiamata username in questo modo:

    Codice PHP:
    $_SESSION['username'] = $username;
    Poi in un altro file.php ho scritto questo per controllare che la sessione esista:

    Codice PHP:
    <?php
    session_start
    ();
    if(!
    session_is_registered('username')){
    echo
    'Ciao Guest, benvenuto in <b>Suppliers</b>!';
    } else {
    $username = $_SESSION['username'];
    echo
    'Ciao, '.$username.', felici di rivederti :-)';
    }
    ?>
    Il problema è che non stampa a video nulla al posto di username, come mai?

    Di solito dopo quanto (o quando) 'scade' una sessione?

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

    Predefinito

    session_is_registred() è deprecata!.

    In questo caso, devi usare isset();

    Ciao!

  3. #3
    Guest

    Predefinito

    cioè così?

    Codice PHP:
    <?php
    session_start
    ();
    if(!isset(
    'username')){
    echo
    'Ciao Guest, benvenuto in <b>Suppliers</b>!';
    } else {
    $username = $_SESSION['username'];
    echo
    'Ciao, '.$username.', felici di rivederti :-)';
    }
    ?>

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

    Predefinito

    no, così:

    Codice PHP:
    <?php
    [...]
    if(!isset(
    $_SESSION['username'])){
    [...]
    ?>
    Ciao!

  5. #5
    Guest

    Predefinito

    Ok, quindi anche così è giusto no?

    Codice PHP:
    <?php
    session_start
    ();
    $username = $_SESSION['username'];

    if(!isset(
    $username)){
    echo
    'Ciao Guest, benvenuto in <b>Suppliers</b>!';
    } else {
    echo
    'Ciao, '.$username.', felici di rivederti :-)';
    }
    ?>

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

    Predefinito

    mmh, non tanto, perché nella seconda riga utilizzi $_SESSION['username'] senza essere certo che esista.

    Ciao!
    Ultima modifica di alemoppo : 22-05-2011 alle ore 13.59.51

  7. #7
    Guest

    Predefinito

    Adesso però ho un altro problema :S Prima la pagina login.php funzionava, ora è come se non ricevesse i dati dal form..

    Codice PHP:
    <form action="" method="post">
    Username:<br />
    <input type="text" name="username" id="username" placeholder="username" maxlength="15" onkeyup="vuoto('username','checkusername','validusername');" onblur="vuoto('username','checkusername','validusername');" /> <span id="validusername"></span><br />
    <span id="checkusername" class="check"></span><br /><br />
    Password:<br />
    <input type="password" name="password" id="password" placeholder="password" maxlength="12" onkeyup="vuoto('password','checkpassword','validpassword');" onblur="vuoto('password','checkpassword','validpassword');" /> <span id="validpassword"></span><br />
    <span id="checkpassword" class="check"></span><br /><br />
    <input type="submit" class="submit" name="login" value="Login" /></form><br /><br />

    <?php

    include('settings.php');

    $username1 = $_POST['username'];
    $password1 = $_POST['password'];
    $login = $_POST['login'];

    if(isset(
    $login)) {

    if(empty(
    $username1) || empty($password1)) {
    echo
    '<span style="font-size: small; color: red; font-weight: bold;">Devi riempire entrambi i campi.</span>';
    } else {

    $da = array('<','>','"','\'');
    $a = array('','','','');

    $username = str_replace($da, $a, $username1);
    $password2 = str_replace($da, $a, $password1);

    $password = MD5($password2);

    $sql="SELECT * FROM membri WHERE username='$username' and password='$password'";

    $result=mysql_query($sql);

    $count=mysql_num_rows($result);

    if(
    $count==1) {

    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;

    mysql_query("UPDATE membri SET ultimo_login=NOW() WHERE username='$username' AND password='$password'") or die (mysql_error());

    header("location: login_success.php");

    } else {

    echo
    '<span style="font-size: small; color: red; font-weight: bold;">Dati errati.</span>';
    }
    }
    }
    ?>
    Se però sposto l' include dopo l' if mi da sempre dati errati.. settings.php contiene il collegamento al db
    Ultima modifica di suppliers : 22-05-2011 alle ore 14.22.02

  8. #8
    makingweb non è connesso Utente attivo
    Data registrazione
    30-06-2009
    Messaggi
    281

    Predefinito

    Hai inserito il sessio_start() vero?

    e prova a modificare l'action in questo modo

    Codice PHP:
    action="<?php echo $_SERVER['PHP_SELF']; ?>"
    Ultima modifica di makingweb : 22-05-2011 alle ore 14.32.47

  9. #9
    Guest

    Predefinito

    session_start() nel login non l' avevo mai messo, forse perchè c'erano ancora i register() ormai deprecati.. Devo metterlo all' inizio dei codici php? O dove?

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

    Predefinito

    sì, prima di qualsiasi output:

    Codice PHP:
    <?php session_start(); ?>
    <form action="" method="post">
    [...]
    Ciao!

  11. #11
    Guest

    Predefinito

    Grazie mille

Regole di scrittura

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