Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it L'avatar di leaf
    Registrato dal
    Oct 2012
    Messaggi
    316

    Session index undefined

    ciao, provo a scrivere anche qui..fin'ora non sto risolvendo..semplicemente, non riesco a settare una sessione (fino a ieri sera andava tutto liscio, poi mi è crashato il computer e ora da problemi). Riesco ad autenticarmi senza problemi (vengon ostampati entrambi gli echo all'interno dell'if) e riesco ad arrivare all home senza problemi (con il link).

    login

    codice:
    <?php session_start(); 
    if(!empty($_POST['subject'])) //SPAM
        exit;
    
    include "functions.php";
    $con=Connection();
    $usr = mysqli_fetch_array(mysqli_query($con, "SELECT usrname, usrpw FROM users"));
    
    if(password_verify($_POST['usrname'], $usr[0]) && password_verify($_POST['usrpw'], $usr[1])){
        session_regenerate_id(true);
        echo "crea session";
        $_SESSION['logged'] = hash('sha256', 'L9oT8s5iF3yX1uW');
        $_SESSION['remote_ip'] = $_SERVER['REMOTE_ADDR'];
        $_SESSION['year'] = date('Y');
        echo "<h12>Benvenuto!<br/><br/>";
        echo"<a href='home.php'>Home</a></h12>";
    }else{
        session_destroy();
        echo "<h12>Dati errati.<br/></br>";
        echo"<a href='login1.php'>Riprova</a></h12>";
    }
    mysqli_close($con); ?>
    <html>
    <head>
    <title> Login </title>
    <link type="text/css" rel="stylesheet" href="css/styles.css" title="Style" media="all" />
    </head>
    </html>
    home.php (l'unica destinazione possibile dopo che ci si è autenticati)

    codice:
    <?php session_start();
        echo $_SESSION['logged'];
    ?>
    appena arrivo in home.php mi da l'errore sulla variabile 'logged'

    grazie
    L.

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    lui ti sta dicendo che non è definita, controlla cosa c'è nella sessione della pagina home.php

    però credo che al codice manchi un pezzo: tiri fuori tutta la tabella 'users' e poi non scorri il resultset, non capisco come faccia a funzionare l'if (a meno che non ci sia un solo utente)

  3. #3
    Utente di HTML.it L'avatar di leaf
    Registrato dal
    Oct 2012
    Messaggi
    316
    cosa intendi per "controlla cosa c'è nella sessione in home"? comunque, esatto, nella tabella c'è un solo utente..comunque ho testato la variabile solo con isset o empty() ed effettivamente non è settata..ho fatto un po' di prove che mi hanno suggerito qui ma non ho ancora trovato soluzione..
    grazie come al solito
    L.

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    intendo dire che devi capire cosa memorizzi, passi e ricevi

    pagina login
    Codice PHP:
    <?php session_start(); 
    if(!empty(
    $_POST['subject'])) //SPAM
        
    exit;

    include 
    "functions.php";
    $con=Connection();
    $usr mysqli_fetch_array(mysqli_query($con"SELECT usrname, usrpw FROM users"));

    if(
    password_verify($_POST['usrname'], $usr[0]) && password_verify($_POST['usrpw'], $usr[1])){
        
    session_regenerate_id(true);
        echo 
    "crea session";
        
    $_SESSION['logged'] = hash('sha256''L9oT8s5iF3yX1uW');
        
    $_SESSION['remote_ip'] = $_SERVER['REMOTE_ADDR'];
        
    $_SESSION['year'] = date('Y');
        echo 
    "<h12>Benvenuto!<br/><br/>";
        echo
    "<a href='home.php'>Home</a></h12>";
    }else{
        
    session_destroy();
        echo 
    "<h12>Dati errati.<br/></br>";
        echo
    "<a href='login1.php'>Riprova</a></h12>";
    }
    mysqli_close($con); 

    var_dump($_SESSION); // verifichi il contenuto della sessione

    ?>
    <html>
    <head>
    <title> Login </title>
    <link type="text/css" rel="stylesheet" href="css/styles.css" title="Style" media="all" />
    </head>
    </html>
    home.php
    Codice PHP:
    <?php session_start();
    var_dump($_SESSION); // verifichi cosa contiene la sessione
        
    echo $_SESSION['logged'];
    ?>

  5. #5
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Può essere che session_start() non avvii correttamente la sessione (in una qualsiasi delle due pagine), ma se non ottieni nessun altro errore (avendo abilitato la visualizzazione di tutti i livelli di errore) a parte quello che hai citato, allora non è questo. Comunque verificarlo. (http://php.net/manual/it/function.session-status.php)
    Ipotesi: può essere che sia un problema di cookie. Magari ti stai portando dietro una vecchia sessione, (magari per un problema del browser, a volte capita) hai provato a cancellarli?

  6. #6
    Utente di HTML.it L'avatar di leaf
    Registrato dal
    Oct 2012
    Messaggi
    316
    @clasku: var_dump restituisce array(0){} in home.php. in login.php invece restituisce il valore corretto (array(1){} ..stringa..)
    @.kurt: ho cancellato tutti i cookie e provato a riavviare easyphp e il computer, non ho altri errori
    L.

    edit: al momento ho commentato alcune linee. così controllo solo la variabile 'logged'

    codice:
    //session_regenerate_id(true);
        echo "crea session";
        $_SESSION['logged'] = hash('sha256', 'L9oT8s5iF3yX1uW');
        //$_SESSION['remote_ip'] = $_SERVER['REMOTE_ADDR'];
        //$_SESSION['year'] = date('Y');
    Ultima modifica di leaf; 06-12-2014 a 18:05

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    in home.php verifica che prima di <?php non ci sia alcun carattere

  8. #8
    Utente di HTML.it L'avatar di leaf
    Registrato dal
    Oct 2012
    Messaggi
    316
    non c'è nulla :/

  9. #9
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Ok, ora che siamo sicuri che la sessione è avviata in entrambe le pagine verifichiamo che sia la stessa sessione.

    Metti
    codice:
    echo session_id();
    : il primo mettilo sotto echo"<a href='home.php'>Home</a></h12>"; di login.php, il secondo sotto session_start(); di home.php. Controlla che coincidano. Se non coincidono, controlla se i cookie del tuo browser siano abilitati: http://www.whatarecookies.com/cookietest.asp

    Se coincidono, prova ad aggiungere session_write_close();sotto $_SESSION['year'] = date('Y');

    Prima di addentrarci nel problema verifica queste ultime cose. Appena le hai escluse, verifica con echo session_save_path() la directory in cui vengono salvate le sessioni e dagli una occhiata.

  10. #10
    Utente di HTML.it L'avatar di leaf
    Registrato dal
    Oct 2012
    Messaggi
    316
    ok allora..le session id non coincidono e sono memorizzate in una cartella temp (dove vedo ce ne sono parecchie)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.