Username anhand der ID ausgeben

Danke schön :D,
jetzt funktioniert alles :)
ich bin ja ein trottel ^^,
aber wie kann ich anhand der $_SESSION ID später andere Daten holen,
ist so eine kleine zwischenfrage ;)
 
paddz hat gesagt.:
hi,


[EDIT]
hab noch vergessen den sql string musst du da auch umschreiben:

von

PHP:
$sql = "SELECT id, username, nachname, vorname, email, password FROM user WHERE username = '".$_REQUEST["username"]."'";
nach
PHP:
$sql = "SELECT username, nachname, vorname, email, password FROM user WHERE id=".$_SESSION['user_id'].";";

[/EDIT]

Wen du den SQL String so änderst, dann hohlt der dir die Daten aus der DB wo id gleich der id in der Session ist.

MfG
paddz

[EDIT]
PS: Sowas passiert jedem hin und wieder.
Da hilft abstand vom Projekt nehmen z.B. en bischen Fernsehen, zocken ...
Wenn man dann wieder draufschaut ist der Fehler meist offensichtlich ^^.
Passiert mir auch.
[/EDIT]
 
Zuletzt bearbeitet:
hey danke,

THEMA kann ich ja jetzt schließen,
ihr wart mir eine tolle hilfe, DICKES THX an euch
 
Hallo!
paddz hat gesagt.:
Wen du den SQL String so änderst, dann hohlt der dir die Daten aus der DB wo id gleich der id in der Session ist.
Und weil man so jede Info aus der Datenbank abfragen kann, ist alles andere als die ID in der Session überflüssig.

@cille, und nochmal..... nutze mysql_real_escape_string() in Deinen Querys..... andernfalls brauchst Du Dich nicht zu wundern wenn Du irgendwann heulend ankommst, weil Dein Forum "gehackt" wurde (SQL-Injektion).
Und wie gesagt, alles was in der Session gespeichert ist, birgt das Risiko in falsche Hände zu geraten.
Also raus mit den überflüssigen Daten aus der Session.
Ich weiss ja nicht wie es rechtlich aussieht (Thema Datenschutz), aber ich könnte mir vorstellen dass Dir hier (im Fall des Falles) evtl. grobe oder sogar vorsätzliche Fahrlässigkeit vorgeworfen werden könnte (schliesslich werden die personenbezogenen Daten nicht in der Session benötigt, sondern können bei Bedarf abgefragt werden).

Gruss Dr Dau
 
Jo danke Dr. Dau,
bin ja noch net fertig, aber find ich sehr gut, dass du diese funktion ansprichst,
habe mal auf dein link geschaut, verstehe aber dazu nur bahnhof,
da MySQL grade mein Lerngebiet ist von den Basics her.

Würdest du mir dies genauer erklären wie man dies einsetzt?
 
Um beim letzten Beispiel zu bleiben:
PHP:
$sql = "SELECT username, nachname, vorname, email, password FROM user WHERE id=".mysql_real_escape_string($_SESSION['user_id']).";";
Eigentlich ganz simpel. ;)

Ich bin zwar kein "Hacker" aber ich könnte mir vorstellen dass sich auch eine Session unter Umständen manipulieren lässt.
Durch eine SQL-Injektion lassen sich (zumindest theoretisch) auch Root-Rechte aneignen.
Da ich aber kein "Sicherheitsexperte" bin, bin ich daher lieber etwas übervorsichtig und setze alle Variablen (egal ob global oder nicht global) die in einem Query (egal ob SELECT, INSERT, UPDATE usw.) vorkommen, in mysql_real_escape_string() ein.
 
Aber wenn ich das richtig verstehe mit diesen Attacken sollte das Prob doch auch behoben sein wenn man pw + username vorher mit der php Funktion md5() verschlüsselt und diese Werte dann übergibt, da ja dann nur ein Bustaben - Zahlensalat an die SQL Abfrage übergeben wird egal wieviele hochkommas etc. er in das Feld eingetragen hat oder hab ich das jetzt falsch aufgefasst?!

Gut Sinn macht es bei den ganzen Abfragen wo der Wert mit GET geholt wird z.B.

@ cille es geht darum das wenn du z.B. irgend ne URL hast mit test.php?auswahl=56

das dann jemand hinten dran an die URL einen SQL Befehl hängen könnte uns somit deine Datenbank "hacken" bzw. manipulieren könnte und dazu muss er meist Hochkommas benutzen etc. typische Zeichen für SQL Befehle und damit deine PHP Seite diese Hochkommas als Text und nicht als richtige Hochkommas übergibt kannst du diesen mysql_real_escape_string() benutzen damit werden z.B. die Hochkommas in normalen Text umgewandelt und stellen keine Gefahr mehr dar...
 
Dr Dau hat gesagt.:
Ich bin zwar kein "Hacker" aber ich könnte mir vorstellen dass sich auch eine Session unter Umständen manipulieren lässt.

naja, die meisten Sessions werden im /tmp gespeichert, einem Ort wo gerade in SharedHosting Umgebungen auch andere schreiben und manipulieren können, also auch die Daten einer Session. Außerdem beschreibst du ja selbst den Wert der Session, wenn du also unvorsichtigerweise dort einen String lagerst der direkt vom User kommt, kannst du darüber auch wieder kompromittiert werden. Es ist also durchaus sinnvoll $_SESSION durch's Escaping zu jagen oder gleich Prepared Statements zu benutzen. Genug gelabert :p
 
Oh danke, man braucht das ja einfach nur verketten,
eigentlich ganz simpel ^^,
thx für deine hilfe und für deine einfach erklärungen.

Man sieht sich,

mfg,
cille
 
@Blaumania, md5() verschlüsselt nichts sondern erstellt "nur" einen Hashwert, damit z.b. das Passwort nicht im Klartext lesbar ist.
Aber auch damit schützt man sich nicht vor einer SQL-Injektion.
cille nutzt unter anderm auch $_REQUEST, somit können also auch Daten per GET übergeben werden.
Genauso gut könnte eine SQL-Injektion aber auch z.b. per POST eingeschleust werden (z.b. über ein Formular, welches in Gästebüchern, Foren etc. ja vorkommt).

@Sir Robin, wie gesagt, unter Umständen. ;)
Ich denke dass es nicht ausschlaggebend ist wer wann was und wie manipulieren könnte..... sondern allein die Kenntnis dass es möglich sein könnte sollte ausreichend genug sein, sich so gut wie möglich zu schützen.
Erst recht wenn es dazu entsprechende Schutzmechanismen wie z.b. (die wirklich einfache Funktion) mysql_real_escape_string() gibt.
Klar, vor dem bösen bösen Server-Admin ^^ wird man sich so nicht schützen können..... aber deshalb muss man ja nicht gleich ein Skriptkiddie "einladen". ;)
 
Zurück