| Tutorials In diesem Forum könnt Ihr euere Fragen zu unseren Tutorials stellen. Die Tutorials sind unter http://www.php-resource.de/tutorials/ zu finden. Tutorialgesuche bitte im Forum Off-Topic stellen! |
 |

23-04-2007, 16:22
|
|
andi234
Newbie
|
|
Registriert seit: Jul 2006
Beiträge: 25
|
|
Session-Daten auslesen
Hallo,
ich hätte eine Frage zu folgendem Tutorial (Login-Script):
http://www.php-resource.de/tutorials/read/38/1/
Das einloggen klappt wunderbar, jetzt möchte ich nur noch userspezifische Daten auslesen können, wofür ich Abfragen der Art:
"Select .... FROM ... WHERE $user = XX";
ausführen muss. Wie kann ich aber in diesem Script auf die Variable mit meiner UserID zugreifen? Hab einige Sachen ausprobiert, es hat aber nicht geklappt...
Oder muss ich es erst über
$_SESSION['user'] als Session-Variable anlegen und dann über den Link von Seite zu Seite übergeben?
Danke, Andi
|

23-04-2007, 16:51
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MGL and MCH, Germany
Beiträge: 33.706
|
|
na, mach mal ne testausgabe (print_r()) von $_SESSION.
- Wenn da was brauchbares drin steht, kannst du es natürlich auch verwenden.
-Wenn nicht, dann musst du wohl oder übel beim einloggen erstmal was in die Session reinschreiben um es dann später wieder rauszuholen.
|

23-04-2007, 17:05
|
|
andi234
Newbie
|
|
Registriert seit: Jul 2006
Beiträge: 25
|
|
@TobiaZ
Danke für die schnelle Antwort, leider komm ich noch nicht ganz klar damit. Ich hab mich jetzt durch das oben angegebene Tutorial und auch durch ein Session Tutorial ( http://www.usegroup.de/software/phpt.../sessions.html) gearbeitet, aber mir ist z.B. nicht klar, warum in dem Tutorial hier auf php-resource die Session-ID in der DB gespeichert wird und nicht einfach an den Link zu weiteren Seiten über die Konstante SID angehängt wird?
Und worauf Du mit
Zitat:
|
(print_r()) von $_SESSION
|
hinaus wolltest, weiß ich auch leider nicht. Ich hab es mit:
PHP-Code:
print_r($_SESSION);
versucht, was mir aber nur
ausgegeben hat.
|

23-04-2007, 17:49
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MGL and MCH, Germany
Beiträge: 33.706
|
|
Zitat:
|
warum in dem Tutorial hier auf php-resource die Session-ID in der DB gespeichert wird und nicht einfach an den Link zu weiteren Seiten über die Konstante SID angehängt wird?
|
das eine hat mit dem anderen nichts zu tun.
letzteres dient nur dazu die SID von einer seite zur nächsten mitzuschleifen. Dazu kann sie entweder in einem Cookie gespeichert werden oder aber auch an jeden (internen) link angehängt werden. dafür sorgt php aber standardmäßig selbst.
der grund warum die SID in die DB gespeichert wird, liegt vermutlich darin, dass das Script so erkennt, ob du eingeloggt bist, oder nicht. (kenne das Tut selbst nicht wirklich.)
--
Dein Versuch mit print_r($_SESSION); war gold richtig! Genau das habe ich gewollt.
An der Ausgabe von "Array()" kannst du nun erkennen, dass in der Session selbst keine Daten gespeichert werden. Wie gesagt, die überprüfung ob eingeloggt oder nicht, wird anhand der DB vorgenommen.
In deinem konkreten Fall hast du nun zwei möglichkeiten:
1) Beim einloggen die User-id in die Session speichern:
PHP-Code:
$_SESSION[user_id] = xxx;
oder
2) im Script einfach eine zusätliche Query a la SELECT * FROM usertabelle WHERE sid = SESSIONID.
Ich würde zu 1) tendieren.
|

23-04-2007, 17:59
|
|
andi234
Newbie
|
|
Registriert seit: Jul 2006
Beiträge: 25
|
|
@TobiaZ
Ah, vielen Dank, jetzt wird mir das schon klarer! Dann wird die Session wahrscheinlich wirklich wegen Deiner Alternativa 2) in der DB gespeichert werden...
Zitat:
|
letzteres dient nur dazu die SID von einer seite zur nächsten mitzuschleifen. Dazu kann sie entweder in einem Cookie gespeichert werden oder aber auch an jeden (internen) link angehängt werden. dafür sorgt php aber standardmäßig selbst.
|
Über Cookies möchte ich es lieber nicht machen, da sie ja nicht jeder aktiviert hat, aber der letzte Satz hat mich etwas verwirrt - ist denn dann die Methode a la:
PHP-Code:
<a href="test.php?<?=SID?>">next</a>
veraltet? Kann ich es dann einfach z.B. so machen:
PHP-Code:
session_start();
$_SESSION[user_id] = xxx
...und dann auf die $_SESSION['user_id'] auf jeder Seite zugreifen (sofern ich natürlich oben session_start() schreibe) ohne die SessionID über den Link weiterzugeben??
|

23-04-2007, 18:40
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MGL and MCH, Germany
Beiträge: 33.706
|
|
wie gesagt, es sind zwei paar Schuhe.
zunächst einmal hast du die SESSION-id. Die muss wie gesagt übergeben werden. Ob via COOKIE oder im Link (also GET) oder zur not über ein POST-Formular. Hauptsache sie wird übergeben.
Standardmäßig versucht PHP ein Cookie zu setzen. Wenn der User das aber nicht will, wird sie halt über GET (also den Link) übergeben. Wie gesagt, PHP macht das schon. (s. session)
Zitat:
ist denn dann die Methode a la:
<a href="test.php?<?=SID?>">next</a>
veraltet?
|
Nein, veraltet definitiv nicht, aber überflüssig, wenn die einstellung session.use_trans_sid aktiviert ist.
Zitat:
Kann ich es dann einfach z.B. so machen:
session_start();
$_SESSION['user_id] = xxx
...und dann auf die $_SESSION['user_id'] auf jeder Seite zugreifen (sofern ich natürlich oben session_start() schreibe)
|
Ja, probier es aus...
Zitat:
|
ohne die SessionID über den Link weiterzugeben??
|
Wie gesagt, hauptsache die ID wird übergeben, ob cookie oder link ist mir latte...
|

25-04-2007, 11:21
|
|
andi234
Newbie
|
|
Registriert seit: Jul 2006
Beiträge: 25
|
|
@TobiaZ
Vielen Dank für Deine Erklärung und sorry, dass ich erst jetzt antworte. Ich werde das mal ausprobieren und mich nochmal melden, falls ich noch Fragen habe. Vielen Dank aber schonmal!
Andi
|
| Themen-Optionen |
|
|
| Ansicht |
Thema bewerten |
Linear-Darstellung
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|