logout

also ich glaub wir hatten das thema schonma, aba mein logout geht nich. hier mein code[PHP]$query = mysql_query(„SELECT login, password FROM users WHERE name = '“.mysql_real_escape_string($_SESSION[„username“]). „'“) or die(mysql_error());
$row = mysql_fetch_assoc($query);
if ($row[„login“] == „0“)
echo „Logge dich bitte erst ein.“ . $_SESSION[„username“];
elseif ($row[„login“] == „0“)

	{
mysql_query("UPDATE users SET `login` = 0 WHERE `name` = '".mysql_real_escape_string($_SESSION["username"]). "'") or die(mysql_error());
echo "Du hast dich erfolgreich ausgeloggt.";
session_destroy();
	}
	else
	echo "Fehler";
	[/PHP]

es soll aus der db ausgelesen werden, ob man eingeloggt is. wenn ja soll man ausgeloggt werden, wenn nein sollte man „bitte logge dich erstmal ein“ bekommen oda so. und wenn was schief ging fehler. in der db is mein login wert auf 1. wenn ich mich jez ausloggen will kommt fehler. why???

warum nicht einfach nen update auf ausgelogt, egal aus welchem zustand solange ein username da ist…
machs doch net so umständlich ^^

verstehe das auch nicht so ganz. Wozu sollte der aktuelle Status in der DB stehen? In der Session reicht doch, oder gibt es da noch eine tiefere Bedeutung?

LG Schumi

sowas muss über einen timestamp geregelt werden, wer benutzt schon die logout funktion ?

Joa, also meint ihr, dass ich auf nem kompletten falschen weg bin???
mir kam das iwie sicherer vor. ich hatte irgendwann mal was von „session faken“ gehört. würde man jez ne session mit dem username faken, is man drin und hat die daten. keine ahnung, ob man das wirklich machen kann. aber wie soll ich das jez machen??? timestamp oda session. mit timestamp kenn ich mich nich aus. hab ich irgendwann nur ma in verbindung mit mysql gehört. könntest du mir bitte nochma genau erläutern, wie das funzt???
thx!

[php]
/Aktualisieren der Zeit des Users bei jedem Klick/
$sql = „UPDATE user SET zeit = „.time().“ WHERE name = '“.$_SESSION[‚username‘].„'“;
mysql_query($sql) or die(mysql_error());
[/php][php]
/*
Abrufen der Usernamen
5 Minuten Ablaufzeit (300)
*/
$time = time() - 300;
$query = „SELECT * FROM user WHERE zeit > „.$time.““;
$sql = mysql_query($query) or die(mysql_error());
while($online = mysql_fetch_object($sql)) {
$name = $online->aut_name;
$id = $online->id;
echo $name;
}
[/php]Das dient für die Online Anzeige.

Hier noch die Logout Datei:

[php]
session_start();

$host = „host“;
$user = „user“;
$pass = „passwort“;
$database = „datenbank“;
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);

$time = time() - 300;
$sql = „UPDATE user SET zeit = „.$time.“ WHERE name = '“.$_SESSION[‚user_nickname‘].„'“;

mysql_query($sql) or die(mysql_error());

session_unset();

setcookie(„PHPSESSID“, „“, time()-1000);

session_destroy();

header(„Location: index.php“);
[/php]

hör auf einen solchen code zu posten. wenn der username "'hacker heisst, schiesst sich das ganze prog ab. man kann jede erdenkbare query ausführen.

was hastn jetzt? Beim login kann man das doch sichren mit addslashes usw

gehört sich aber nicht, man arbeitet nach möglichkeit mit return werten und schreibt nicht die session um sondern schreibt source vorrausschauend.

jede variable die von einem user kommt, wird überprüft.
wenn du dies nur einmal machen willst, dann schreibe dafür eine funktion, und oder benutze eine andere variable. z.b. $username die das system generell kennt.

ok jetzt hab ich verstanden was du meinst.
Irren ist menschlich :wink:

Kann man eigentlich als außenstehender die Sessions schreiben und somit den Schutz knacken?

nein, das geht nicht.

die sessions (inhate) liegen auf deinem server in temporären files. lediglich ein cookie verknüpft die temporäre file wieder mit dem cookie. alternativ kann der dateiname (hash) auch direkt der session (klasse) übergeben werden.

ok, das beruhigt mich :mrgreen:

so, jez hab ich endlich ma wieda zeit. hab auch gleich ein paar fragen zu gimlis code. wofür is die ablaufzeit und was is time()? und wie soll ich das eurer meinung nach jez machen. schon über db oder einfach nur session_destroy?

php.net/FUNKTION

PHP: time - Manual

schonmal frage 1. ich weis aber jez schon, dass ich diese func nie benutzen werden :wink:

Wie? Die unktion time()??

Ohne die wirst du auf dauer nicht weit kommen…

du wirst die funktion time(); nie benutzen?
also ignorierst du unsere tipps?

vielleicht solltest du dir mal überlegen warum du uns dann hier unsere kostbare zeit stiehlst…

ich dacht eig das wäre mehr ne erklärung, wofür die funktion gut is. aber wenn ich sie öfters benutzen sollte, gerne. wofür könnte man das jez denn so benutzen??

[noparse]http://de3.php.net/[Funktionsname][/noparse]

Wenn du das in deinen Browser eingibst dann hast du eine sehr genaue Erklärung was „es“ macht.

find ich toll. aber wieder zurück zum problem. mit db oder nur session?