- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema di sessioni login
-
Problema di sessioni login
Ragazzi ho scoperto un bug gravissimo in un sito che sto creando.....
Ho testato il sito facendo iscrivere un utente per poi fargli effettuare il login..bene tutto ok..
Quando poi ho fatto io il login all inizio tutto ok..mi visualizzava il mio profilo...poi dopo un 30 40 secondi e succede sempre cosi' quando clicco sul mio profilo mi visualizza il profilo dell altra persona che risulta online in quel momento con relativi sui messaggi privati...modifica del profilo...:o
Da cosa è dovuto ciò???
E un errore gravissimo...non oso immaginare cosa potrebbe succedere in caso non verrebbe risolto..:xdovrei buttare all aria mesi..ore e tempo..!!
Giuro non so davvero capire dove possa essere l errore..?Forse nella pagina del login??
[php]
<?
session_start(); //avvio l'utilizzo delle sessionisetlocale(LC_TIME, 'it_IT');
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '1800');
//protezione sql injection
if($_POST['nickname'])
$nickname = mysql_real_escape_string($_POST['nickname']);
else
$nickname = "";
//connessione al database
$link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
$selezione="SELECT nickname,password,logged,sesso,foto,giorno,mese,anno FROM iscritti WHERE nickname='$nickname' AND password='". $_POST['password']."'";
$eseguisel=mysql_query($selezione);
if (mysql_num_rows($eseguisel) ==1) {
echo "Login effetuato con successo..Attendi";//inserisco nel campo logged l orario del login
$ultimavisita=strftime("%A %d %B %Y");
$ultimavisitaora=strftime("%T");
$ora_log = time();
$query = "
UPDATE iscritti SET
logged = '$ora_log' , ultimavisita = '$ultimavisita' , ultimavisitaora = '$ultimavisitaora'
WHERE nickname = '$nickname'
";
//ciclo while che mi richiama l'array dei dati selezionati dal databasewhile($ROW = mysql_fetch_array($eseguisel))
{
//qui vanno settati un po' di SESSIONI
$_SESSION['logged']=1;//setto che l'utente è loggato
$_SESSION['nickname']=$ROW[nome];//inserisco una nuova chiave di sessione con il nome utente
$_SESSION['sesso']=$ROW[sesso];//inserisco una nuova chiave di sessione con il sesso dell'utente
$_SESSION['foto']=$ROW[foto];//inserisco una nuova chiave di sessione con il sesso dell'utente
$_SESSION['giorno']=$ROW[giorno];//inserisco una nuova chiave di sessione con il sesso dell'utente
$_SESSION['mese']=$ROW[mese];//inserisco una nuova chiave di sessione con il sesso dell'utente
$_SESSION['anno']=$ROW[anno];//inserisco una nuova chiave di sessione con il sesso dell'utente
$_SESSION['utenteemail']=$ROW[utenteemail];//inserisco una nuova chiave di sessione con il sesso dell'utente}
//eseguo la query che inserisce i dati nel campo logged
$eseguiquery=mysql_query($query);
//ora proseguo con l'header
header("Location: intestazione.php");
exit;
} else {
echo "Dati non presenti nei nostri database..Attendi";
//annullo tutte le chiavi di sessioni se esistono
session_unset();
session_destroy();
header("Location: iscrizioneform.php");
exit;
}
?>[/php]
-
Ho notato che questa succede solo se clicco sul link "contenuto.php" dell intestazione del sito..
[php]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><link rel="stylesheet" type="text/css" href="stilecontenuto.css" />
<body>
<?
//Apro la sessione e...
session_start();echo"
<div id="Box_contenuti"><center>Ultimi iscritti</center><br><br>";
include "ultimiiscritti.php";
echo"<br><img class="barradivisione" src="pulsantinoinvia.png"></div>";echo"<div id="Box_contenuti2"><center>Ultimi voti inviati fra utenti</center><br>";
include "listavotiindex.php";
echo"<br><img class="barradivisione" src="pulsantinoinvia.png"></div>";
echo"
<div id="Box_contenuti9"><center>Utenti online</center><br>";
include "utentionline.php";
echo"<br><img class="barradivisione" src="pulsantinoinvia.png"></div>";echo"<br><img class="barradivisione2" src="pulsantinoinvia.png">";
echo"<div id="Box_contenuti3"><center>Profili piu votati</center></center><br>";
include "piuvotati.php";
echo"<br><img class="barradivisione" src="pulsantinoinvia.png"></div>";echo"<div id="Box_contenuti4"><center>Utenti piu visitati</center><br>";
include "piuvisitati.php";
echo"<img class="barradivisione" src="pulsantinoinvia.png"></div>";echo"<br><img class="barradivisione3" src="pulsantinoinvia.png">";
echo"<div id="Box_contenuti5"><center>Utenti piu belli del mese</center><br>";
include "votazionemese.php";
echo"<br><img class="barradivisione" src="pulsantinoinvia.png"></div>";?>[/php]Dopo che clicco su questo collegamento mi sballa tutto come mai..?
-
Ho scoperto un altra cosa..questo problema sorge solo quando nella pagina
contenuto.php includo la pagina degli utenti in linea..utentionline.php
[PHP]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><link rel="stylesheet" type="text/css" href="stileiscritti.css" />
<?
$link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
$ora_scadenza = time()-60*60;
$query = "SELECT nickname,logged,sesso,foto FROM iscritti WHERE logged > '$ora_scadenza'";
$result = mysql_query($query)or (mysql_error());
if(mysql_num_rows($result) != 0) {
while ($array = mysql_fetch_array($result))
{
$arr_stripped = array_map("stripslashes", $array);
list($nickname) = $arr_stripped;
$str_sesso = $array['sesso'];
$str_foto = $array['foto'];//Conrollo foto
if($str_foto == '')$str_foto="amore.gif";
if($str_sesso == 'femmina'){
$classenick="donna";
$colore="#FF99FF";
}else{
$classenick="uomo";
$colore="#0066FF";
}echo "<tr><td><a target="_blank"href="profiloaltri.php?nickname=".$nickname.""><img border="0" src="foto/".$str_foto.""
width="30" height="30"><font class="$classenick" color="$colore">".$nickname."</font></a></td><td><img border="0" src="faccine3/smile_lingua.gif"
width="10" height="10"></td><br>";} }
?>
[/PHP]Come mai si genera questo conflitto..?