"We are back" « oc.at

Session verwaltung mim cookie?

semteX 06.02.2003 - 16:07 1933 28
Posts

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14716
Also mei seitn is jetzt scho zum teil fertig... newsscript, bildergallery etc fertig.... jetzt wollt i mit der session verwaltung anfangen...

meine frage:

Wie funkt das mit cookies?

Wenn sich der user einloggt wird a cookie angelegt... mit benutzer und PW...

1. Frage: Is das ned sehr unsicher mit Benutzername und PW speichern?
nur anders weis i das ned wie das geht :( oder was speichert ihr im cookie?

wenn das cookie gesetzt ist...

also if(isset(logindat))
{
session_register("id");
session_register("passwort");
}

danach if(isset(id) && isset(passwort))
{
passwortcheck

wenn auth geglückt ==> loginmenü anzeigen.
}

ansonsten falls es ned gesetzt ist ==> login bereich anzeigen

logindat ist der name des cookies...

frage 2: Wie les ich aus nem gesetztn cookie datn aus? geht es eh so wie oben?

wenn die daten ausgelesn sind muss ich ja nur noch überprüfn in da SQL DB ob der Username und das PW zusammenstimmt...

ist das jetzt ne sehr unkonventuelle lösung? ne hinige? ne unsichere?

i hab mal wo gelesn dass es wahnsinnig unsicher ist pw unverschlüsselt zu speichern?

oder soll i einfahc das pw mit 12.588-56.87*568/2.45 dividiern? Oda is das wieder so ne schnapsidee?

Sorry für die noobfragen, i hab so was mit sessions no nie gemacht :)

mfg

p.s: Syntax fehler sind sicherlich genug drin ;) nur i möcht jetzt ned alles nachschlagn ==> scho länger nix mehr mit den sessions gmacht...

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
wenn man direkt cookies verwendet ist es in der tat besser eine (evt. onetime) session-id/hash zu erzeugen, und nur diese zur identifikation zu verwenden.

wenn du die session-funktionen von php verwendest, macht php das automatisch für dich: der browser bekommt eine sessionid zugeteilt, und php speichert sich in einer temporären datei die variablen für diese session ab.

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14716
Zitat von atrox
wenn man direkt cookies verwendet ist es in der tat besser eine (evt. onetime) session-id/hash zu erzeugen, und nur diese zur identifikation zu verwenden.

wenn du die session-funktionen von php verwendest, macht php das automatisch für dich: der browser bekommt eine sessionid zugeteilt, und php speichert sich in einer temporären datei die variablen für diese session ab.
jo des weis i scho

aber: der war auf der seite, schließt die wieder... und geht wieder rauf...

gilt dann die Session ID noch?

kann ma mit ner Session id den ganzn Benutzer authentifisziern?

also kann ich statt dem pw die Session id nehmen? ned oder? die ändert sich ja imma

mi würds interessiern: welche daten speicherst du im cookie sobald sich der user zum 1. mal eingelogged hat?

mfg

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ahso.. so willst du das - hab ich irgendwie nicht rausglesen.
nein, die session-id wird irgendwann ablaufen, und php die temporäre datei löschen.

generiere beim einloggen irgendeine zufallszahl rkey, die du noch nicht vergeben hast:
a) schicke rkey an den browser als cookie
b) schreibe in die db einen datensatz mit (username,rkey)

das nächste mal wenn der user ohne session-variablen daherkommt, findest du über die datenbank heraus, wer er zuletzt war. du brauchs so weder das passwort nochmal abspeichern noch zu übertragen.

/* es gibt dann weitere verfeinerungen, wie expire für diese db-eintragungen usw */

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14716
ah... super! danke... genau das meinte ich..

wenn ma sich dann erneut einlogged wird ebn der rkey neu generiert und wieder geschriebn...

so last frage :)

wie greif i dann auf das cookie zu? i mein mit den gespeichertn variablen?

wie müsste der code lautn wenn ich a cookie mit den variablen $name und $key füttern möchte?

und wie les ich dann die variablen wieder aus dem cookie raus?

dann hätt i alles was ich brächte :)

Vieln dank für deine Hilfe Atrox :)
mfg

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Ich würde 2 Cookies setzen, den einen nennst "user" oder wwi und den anderen eben "key" also:

setcookie("user", $user, $irgendeinezeit);
setcookie("key", $unique_key, $irgendeinezeit);

Am besten du greifst mit $_COOKIE['variable'] darauf zu, wobei gilt: Cookiename == Variablenname

Siehe auch:
http://www.php.net/manual/en/function.setcookie.php

//edit: darn, ge:eek:wnt

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14716
thx ihr 2 :) jetzt check ich's :)

also pro cookie kann man nur eine Var speichern oder?

eh egal, falls ich es ned zambringt schreib i heut abend mal was :)

mfg

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Zitat von semteX
also pro cookie kann man nur eine Var speichern oder?

Ja. Aber du könntest in einem Cookie ein Array mit implode() speichern und später auf die einzelnen Daten mit explode() zugreifen.

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14716
Zitat von jives
Ja. Aber du könntest in einem Cookie ein Array mit implode() speichern und später auf die einzelnen Daten mit explode() zugreifen.
das geht natürlich sure

edit: so trottl wieder hier:

$test = "test";
setcookie("testcookie", $test);

warum ownt des ned? fehler gibt er keinen zurück... aber er speichert des cookie ned ab..

mfg
Bearbeitet von semteX am 06.02.2003, 17:32

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
$_COOKIE[testcookie] bzw $testcookie sollte beim nächsten seitenaufruf vorhanden sein.

ohne expire-angabe hällt das cookie allerdings nur bis zum browser-restart - für ein permanentes cookie brauchst eine zeitangabe

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Noch was wichtiges: Das Cookie MUSS vor jedwedem Output, sprich html-Code, gesetzt werden.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von jives
Noch was wichtiges: Das Cookie MUSS vor jedwedem Output, sprich html-Code, gesetzt werden.
sowie _vor_ den header-definitionen

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14716
ok... das cookie setzn / löschn hab ich jetzt zamgebracht... darum fing i jetzt mal an...

das ziel war einfach... i logg mi ein... und er schaut mal in der mysql db.. ob das pw passt...

UND I BIN ZU BLED :(

i find den fehler ned :( i checks nimma...

der code:

Zitat
<?php

if(!isset($login_cookie))
{
$conn_id = mysql_connect("localhost","root");
mysql_select_db("CN",$conn_id);
$sql = "SELECT passwort FROM user WHERE username = '$username' limit 1";
$result = mysql_query($sql, $conn_id);
if(mysql_num_rows($result)) == 0) {
echo "benutezr existiert nicht";
}
else {

$row = mysql_fetch_row($result);

if($row['passwort'] == $passwort)
{
echo "geh bitte";
}
}

}
echo $username;

?>


<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 5">
<title>Willkommen bei Adobe GoLive 5</title>
</head>

<body bgcolor="#ffffff">
<p>
<form name="FormName" action="<? echo $PHP_SELF ?>" method="get">
<input type="text" name="username" size="10" maxlength="25">
<p><input type="password" name="passwort" size="10" maxlength="50"></p>
<p><input type="submit" name="Absenden"></p>
</form>
</body>

</html>

die datenbank schaut so aus:

eine Datenbank mit namen CN
ne tabelle mit namen user

die spaltn heissn: username (varchar), passwort (varchar), id (shortint), uniqueid(varchar)...

mit uniqueid würd i erst später wos machn...

im mom kommt a pharse error on line 9...

zu begutachtn gibts das unta http://semtexkg.no-ip.com/test1.php

danke für die hilfe. i find einfach den fehler ned..

ajo: i verwend phptriad...

die datei phpinfo.php rennt eh (http://semtexkg.no-ip-com/phpinfo.php)

edit: username ist semteX, pw ist 123456, für alle die es testn wolln
Bearbeitet von semteX am 06.02.2003, 22:15

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
if(mysql_num_rows($result)) == 0) {
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz