Session - Variablen neu setzen
Kris
- php
Guten Morgen an alle hier :)
Ich habe folgendes Problem !
Ich habe ein Script gebastelt das ähnlich wie phpMyAdmin Datenbank Einträge ändern/löschen/neu anlegen kann. Bei einem erfolgreichen Login in das System übergebe ich eine ADMIN ID - UID - ADMIN LVL - FIRMA ID per SESSION Variable ! Am Start JEDER Seite starte ich per include die Session erneut und überprüfe ob die 4 SESSION VARIABLEN noch alle gesetzt sind und nicht leer sind !
Wenn man per EDIT seinen eigenen Account ändert (oder per "Profil ändern) ... will ich direkt sichergehen ob sich einer der HAUPTVARIABLEN verändert hat (UID / ADMIN LVL / FIRMA ID). Daher setze ich diese direkt neu nach dem ich geprüft habe ob der eigene User geändert wurde !
Nun triggert aber direkt auf der nächsten Seite die Abfrage ob die SESSION VARIABLEN noch gesetzt sind und schickt mich zurück zum Login. Obwohl sie gesetzt sind (sie wurden ja nur umgeschrieben) triggert das Script ... wieso ? Wie kann ich das verhindern :
<?php
session_start() or die( " Session konnte nicht initialisiert werden ");
if ((!isset($_SESSION['uid'])) or (empty($_SESSION['uid']))
or (!isset($_SESSION['lvl'])) or (empty($_SESSION['lvl']))
or (!isset($_SESSION['aid'])) or (empty($_SESSION['aid']))
or (!isset($_SESSION['fir'])) or (empty($_SESSION['fir']))
) {header('Location: login.php?e=3');}
?>
kann jemand das Problem erkennen ?
mfg
KRIS
Hi,
also ich sehe auf die Schnelle nichts, vielleicht zeigst du mal den Code, mit dem du die geänderten Werte in die Session übernimmst...
MfG
Rouven
also ich sehe auf die Schnelle nichts, vielleicht zeigst du mal den Code, mit dem du die geänderten Werte in die Session übernimmst.
beim Profil edit hier :
# SESSION-Variablen aktualisieren
$query = "SELECT * from administrator
WHERE admin_id = '" . $_SESSION['aid'] . "'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$_SESSION['uid']=$row[2];
$_SESSION['lvl']=$row[1];
$_SESSION['fir']=$row[9];
beim allg. edit hier :
# SESSION-Variablen aktualisieren wenn eigenes Profil geändert wurde
if ($_GET['uuiidd'] == $_SESSION['uid']) {
$query = "SELECT * from administrator
WHERE admin_id = '" . $_SESSION['aid'] . "'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$_SESSION['uid']=$row[2];
$_SESSION['lvl']=$row[1];
$_SESSION['fir']=$row[9];}
Hmh,
also ich bin genau so schlau wie vorher. Du hast allerdings nirgendwo Fehler abgefangen, hast du mal nachgeschaut, was direkt nach dem Setzen in der Session drin ist?
Ansonsten würde ich für die Zukunft von "SELECT *" abraten und stattdessen auf die konkreten Spalten zuzugreifen, das erleichtert Änderungen an der Datenbank und vermeidet langfristig Probleme.
MfG
Rouven
Ansonsten würde ich für die Zukunft von "SELECT *" abraten und stattdessen auf die konkreten Spalten zuzugreifen, das erleichtert Änderungen an der Datenbank und vermeidet langfristig Probleme.
gemacht =)
ansonsten hat wah's Tipp komischerweise geholfen :)
danke dennoch KRIS
hi,
also ich sehe auf die Schnelle nichts, vielleicht zeigst du mal den Code, mit dem du die geänderten Werte in die Session übernimmst.
Wozu liest du die Daten per SELECT nochmal neu aus der DB aus?
Du hast sie doch gerade erst geändert, also solltest du doch die neuen Werte bereits in Variablen vorliegen haben - warum schreibst du dann nicht die in die Session, nachdem das Update erfolgreich war?
gruß,
wahsaga
hi,
also ich sehe auf die Schnelle nichts, vielleicht zeigst du mal den Code, mit dem du die geänderten Werte in die Session übernimmst.
Sorry, da hab ich mal wirklich unsinnig zitiert.
gruß,
wahsaga
Wozu liest du die Daten per SELECT nochmal neu aus der DB aus?
Du hast sie doch gerade erst geändert, also solltest du doch die neuen Werte bereits in Variablen vorliegen haben - warum schreibst du dann nicht die in die Session, nachdem das Update erfolgreich war?
Wozu einfach wenns auch kompliziert gibt hab ich mir scheinbar gedacht :/
im Endeffekt hab ich nicht richtig durchdacht das ganze und konnte nun durch diesen simplen Eingriff eine der 4 Variablen wegfallen lassen ($_SESSION['aid']). Nun existiert das Problem nicht mehr :)
danke :)