Sessione scaduta

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
è un po poco
comunque semplicemente $_SESSION["user"] non è settata
posta il codice del login piuttosto ma non allegarlo, incollalo tra i tag presenti sulla barra di formattazione (ultimne icone seconda linea)
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
PHP:
<?php
// attiviamo una nuova sessione utente
session_start();
// collegamento al database
include ("varDB.inc");
// inizializzazione variabile $messaggio
$messaggio = "";
// mi connetto e seleziono il database
$conn = mysql_connect($host, $user, $pwd) or die ("Non riesco a creare la connessione");
mysql_select_db($db) or die ("Non riesco a trovare il database $db");
// leggo i dati dall'URL
if (isset ($_GET ["utente"])) {
    $utente = $_GET["utente"];
}

if ($utente == "registrato") { ;
    // leggo i dati dal form
    var_dump($_POST);
    // DANIELE -> NOME DELLA VARIABILE ERRATA
    // if (isset ($_POST ["email"])){
    if (isset ($_POST ["e-mail"])) {
        $email = $_POST["e-mail"];
    }
    if (isset ($_POST ["pwd"])) {
        $pwd = $_POST ["pwd"];
    }
    // controllo nel Db email e pwd
    $sql_reg = "SELECT * FROM utenti WHERE email='" . $email . "' AND password='" . $pwd . "'";
    $ris_reg = mysql_query($sql_reg) or die ("Query utente registrato fallita!");
    // DANIELE
    echo $sql_reg;
    // DANIELE
    var_dump($ris_reg);
    // DANIELE
    echo mysql_num_rows($ris_reg);

    if (mysql_num_rows($ris_reg) == 0) { // se il recordset è vuoto
        $messaggio = "<P><B><FONT COLOR= 'blue'FACE= 'Arial Black' SIZE='20px'>Login fallito!</B><BR><A HREF='home.html'>Riprova</A></P>";
    }else {
        // login ok, inizializzo variabile di sessione
        if (isset($_SESSION["user"])) {
            $email = $_SESSION ["user"];
        }
        // leggo nome e cognome dal DB
        $riga = mysql_fetch_array($ris_reg);
        $nome = $riga["nome"];
        $cognome = $riga["cognome"];
    }
    ini_set('session.bug_compat_warn', 0); // per risolvere errore Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3
    ini_set('session.bug_compat_42', 0);
}else { // utente nuovo

Intendevi questo?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Intendevi questo?
forse

questo pezzo non mi convince
PHP:
// login ok, inizializzo variabile di sessione
        if (isset($_SESSION["user"])) {
            $email = $_SESSION ["user"];
        }
per inizializzare una variabile di sessione dovresti scrivere
PHP:
$_SESSION['user'] = $email
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
Ho fatto come mi hai detto, ma mi da errore di sintassi in questa riga indicata nel codice sopra..

echo mysql_num_rows($ris_reg);
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Se sei alla pagina di login non c'è bisogno che controlli la variabile di sessione.
Semplicemente settala come mostrato da criric, cioè:
PHP:
$_SESSION['user'] = $email;
Poi per controllare se l'utente ha già una sessione aperta (quindi non lo mandi alla pagina di login ma alla home) fai:
PHP:
if (isset($_SESSION["user"])) {
    header("Location: home.php");
}else{
    header("Location: login.php");
}
Questo pezzo di codice dovresti metterlo all'inizio di ogni pagina per impedire che utenti che non abbiano fatto il login possano accedere a pagine 'protette' del sito.

Edit:
Per il nuovo problema che hai postato cambia quella riga in questo modo:
PHP:
$num_rows = mysql_num_rows($ris_reg);
echo $num_rows;
 
Ultima modifica:

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
per quanto riguarda la sessione ho fatto come avete detto, ma volevo chiedervi se if (isset($_SESSION["user"])) {
header("Location: home.php");
}else{
header("Location: login.php");
}

Devo inserirlo in tutte le pagine prima di session_star (), e visto che la home è la parte dove l'utente si registra, devo mettere un'altra pagina...