PDA

View Full Version : [PHP] problema con le sessioni


Luca 88
29-10-2009, 14:59
è apparso un'altro problema...

una volta effettuato il login mi apre direttamente (non proprio direttamente perchè c'è prima bisogno della conferma) la home iniziando prima una sessione:


session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $pass;
// Salvo i dati del nuovo utente nel database
mysql_query("UPDATE utenti SET data_ultima = NOW() WHERE (username = '$username') AND (password = '$pass')") or die (mysql_error());
header('Location: ' . 'http://127.0.0.1/nomesito/home.php');
}else{
die("Utente non ancora confermato");
}
}else{
die("Il nome utente inserito è inesistente");
}
}else{
die("Password errata");
}


a questo punto visto che (mettiamo caso) nell'inserimento di username e password vengano messi i dati corretti... va alla pagina home.php... e fino a qui tutto ok... però la sessione sembra inutile... in che senso... ecco la pagina home.php:


<?php
session_start();

if( IsSet($_SESSION['username']) && IsSet($_SESSION['pass']) ) {

echo "BENVENUTO SU nome sito! </br>";
echo "<a href='logout.php'> Effettua Il Logout</a>";

}

else {

echo "Login non effettuato";

}

?>


se non è aperta la sessione dovrebbe dirmi login non effettuato... ma anche se chiudo il browser e riapro la pagina home.php me la fa sempre vedere come se fossi loggato...

non riesco a capire cosa c'è di sbagliato... spero che qualcuno possa darmi una mano...

grazie!

flx2000
29-10-2009, 16:18
Beh, se non la distruggi di proposito la sessione rimane naturalmente attiva.
La durata non la ricordo, ma c'è un tempo. Ricorda che in pratica sono dei semplici cookie.

Luca 88
29-10-2009, 16:35
ma il fatto è che ora fa il contrario... cioè se faccio il login tutto ok... mentre se la apro in un altra finestra sempre con la sessione aperta mi dice login non effettuato... e non ho cambiato niente...

metto i due file incriminati completi:

login.php


<?php

include("connessioneDB.php");

$username = $_POST['username'];
$pass = MD5($_POST['pass']);
$password = 'password';
$confermato = 'conf';


// Query che seleziona la password del utente
$query = "SELECT password FROM utenti WHERE username = '$username' LIMIT 1";
$result = mysql_query($query, $db);
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows($result);

// Query che seleziona il campo confirmed del utente
$query1 = "SELECT conf FROM utenti WHERE username = '$username' LIMIT 1";
$result1 = mysql_query($query1, $db);
$row1 = mysql_fetch_assoc($result1);

if ($result != '0'){
if($row[$password] == $pass){
if($row1[$confermato] == 1){
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $pass;
// Salvo i dati del nuovo utente nel database
mysql_query("UPDATE utenti SET data_ultima = NOW() WHERE (username = '$username') AND (password = '$pass')") or die (mysql_error());
header('Location: ' . 'http://127.0.0.1/nomesito/home.php');
}else{
die("Utente non ancora confermato");
}
}else{
die("Il nome utente inserito è inesistente");
}
}else{
die("Password errata");
}


?>


home.php:


<?php
session_start();

if( IsSet($_SESSION['username']) && IsSet($_SESSION['pass']) ) {

echo "BENVENUTO SU nomesito! </br>";
echo "<a href='logout.php'> Effettua Il Logout</a>";

}

else {

echo "Login non effettuato";

}

?>


perchè proprio non ne vengo a capo...

Luca 88
29-10-2009, 17:31
ho modificato in questo modo:

login.php:


<?php

include("connessioneDB.php");

$username = $_POST['username'];
$pass = MD5($_POST['pass']);
$password = 'password';
$confermato = 'conf';


// Query che seleziona la password del utente
$query = "SELECT password FROM utenti WHERE username = '$username' LIMIT 1";
$result = mysql_query($query, $db);
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows($result);

// Query che seleziona il campo confirmed del utente
$query1 = "SELECT conf FROM utenti WHERE username = '$username' LIMIT 1";
$result1 = mysql_query($query1, $db);
$row1 = mysql_fetch_assoc($result1);

if ($result != '0'){
if($row[$password] == $pass){
if($row1[$confermato] == 1){
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $pass;
// Salvo i dati del nuovo utente nel database
mysql_query("UPDATE utenti SET data_ultima = NOW() WHERE (username = '$username') AND (password = '$pass')") or die (mysql_error());
header('Location: ' . 'http://127.0.0.1/nomesito/home.php');
}else{
die("Utente non ancora confermato");
}
}else{
die("Il nome utente inserito è inesistente");
}
}else{
die("Password errata");
}


?>


home.php


<?php
session_start();

if(IsSet($_SESSION['username']) && IsSet($_SESSION['pass'])) header('Location: ' . 'http://127.0.0.1/nomesito/home.html');
else header('Location: ' . 'http://127.0.0.1/nomesito/index.html');

?>


ora se faccio login mi va giustamente alla pagina home.html, ma non mi mantiene la sessione aperta... nel senso che se apro un'altra finestra nel browser e digito home.php mi va alla index.html...

da cosa puo dipendere?

Luca 88
29-10-2009, 20:41
ho risolto... dico come per aiutare qualcuno che magari incontrerà questo problema...

non so il perchè... ma se il file lo si chiama home.php non funziona... ho provato a cambiargli il nome con prova e funziona perfettamente...

:stordita:

Fede 88
30-10-2009, 19:57
Sei un gallo!