PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : login status übernehmen


korsdal
16.02.2005, 16:06:04
hallo zusammen,
wusste nicht recht, ob ich diesen beitrag in den grundlagen oder
hier posten sollte.


also ich hab mir ein login-menu in verbindung mit einer
mysql-db gebastelt.

dieses login-formualr wird über einen link in einem iframe dargestellt und
an meine login.php per "post" übergeben.
der vergleich mit den datensätzen aus der mysql-db funktioniert wunderbar.

jetzt möchte ich nur irgendwie eine variable an die
hauptseite übergeben, so dass für "eingeloggte" user
der eigentliche inhalt der seite nutzbar wird.

wie mach ich das am besten?
ich hab mal was von sessions gelesen, hab aber nicht recht was an literatur
gefunden.
kennt jmd ein gutes how-to oder hat wer ein gute idee,
wie man mein problem einfach lösen könnte.


vielen dank.
viele grüße
tim

xabbuh
16.02.2005, 16:16:22
Sessions: http://tut.php-q.net/sessions.html

Da findest du einen guten Einstieg in das Arbeiten mit Sessions.

yozek
16.02.2005, 16:25:51
hallo zusammen,
jetzt möchte ich nur irgendwie eine variable an die
hauptseite übergeben, so dass für "eingeloggte" user
der eigentliche inhalt der seite nutzbar wird.


Ist die Hauptseite auch in PHP?

Falls ja, empfehle ich die Verwendung von Sessions.

In jeder Datei ganz am Anfang

session_start();


die Sessionvariablen fütterst du so:

$_SESSION['login'] = TRUE;


Des Weiteren würde ich eine Funktion schreiben, die überprüft, ob ein User eingeloggt ist, welche Rechte er hat und so weiter.

Überprüfen ob ein User eingeloggt ist kann man bsp. so:


if (isset($_SESSION['login'])):
//mach dies
else:
//zeige gastsektion
endif;


Ein kleiner Tipp: Verwende lieber keine Frames, sondern css-styles oder von mir aus Tabellen (ohne Frames)

HTH

korsdal
16.02.2005, 18:12:42
hi,
vielen dank für die antworten.
sehr hilfreich.

trotzdem hab ich probleme:
1. meine hauptseite ist auch in php, ja!
muss ich dort auch session_start(); setzen ?
bzw. muss es in jede seite, die diese session nutzen will?
ich hab z.b. photoseiten in html, die nur dem eingeloggten user
zur verfügung stehen sollen. diese html-seiten sind auch im iframe
zu sehen

2. ich hab mal was ganz kleines zum testen geschrieben.
folgende fehlermeldung bekomm ich:


Warning: Cannot send session cookie - headers already sent by (output started at /srv/www/htdocs/web34/html/tfh/hyper/php/uebungen/login_test_start.php:10) in /srv/www/htdocs/web34/html/tfh/hyper/php/uebungen/login_test_start.php on line 11



ich öffne von der login_test_start.php eine andere php-seite,
in der ich mit einem hidden-field einen wert zurück zur login_start_test.php
geben möchte.

der wert richtet sich natürlich danach, ob login erfolgreich.
also false/true und mit diesem wert will ich dann eben wieder
in der login_test_start.php (entspricht meiner hauptseite) arbeiten.


3. ich benutze iframes, weil ich sowohl php-seiten als auch html-seiten
in diesem bereich der seite anzeigen lassen will.
die hauptseite besteht sonst nur aus tabellen.

dachte, dies wär ne gute lösung ;-)
ich brauch doch ein iframe, um mit einem link auf diesen zu verweisen, oder
gehts auch einfacher?


vielen dank

grüße
tim

yozek
16.02.2005, 18:28:27
Warning: Cannot send session cookie - headers already sent by

das bedeutet, dass du vorher schon was ausgegeben hast. das session start gehört unbeding nach ganz oben an erster stelle. pass auf, dass du nicht ggf. ein leerzeichen oder leerzeile vor dem ersten phptag

korsdal
16.02.2005, 20:05:30
Warning: Cannot send session cookie - headers already sent by (output started at /srv/www/htdocs/web34/html/tfh/hyper/php/uebungen/login_test_start.php:10) in /srv/www/htdocs/web34/html/tfh/hyper/php/uebungen/login_test_start.php on line 10

Warning: Cannot send session cache limiter - headers already sent (output started at /srv/www/htdocs/web34/html/tfh/hyper/php/uebungen/login_test_start.php:10) in /srv/www/htdocs/web34/html/tfh/hyper/php/uebungen/login_test_start.php on line 10


also ich hab diese beiden fehler und vorher nicht gemacht.
dies ist mein php-code:

<?PHP session_start();

if($id == true) echo "session_id übergeben!";
else echo "<br>id nicht übergeben!<br>";

echo "<a href="./login_test.php" target="_blank">test_link</a>";

?>


$id ist meine variable die nachher zurückgegeben wird.

was mach ich falsch?

korsdal
16.02.2005, 20:12:13
also ich hab grad
die sachen auf meinem lokalen server laufen lassen,
dort bekomm ich die fehlermeldungen nicht.


liegt es an meiner php-konfiguration auf dem www-server?

kann ich die manuell ohne root-zugriff ändern?

über phpMyAdmin?


vielen dank.
grüße
tim

xabbuh
16.02.2005, 20:45:14
dies ist mein php-code:

<?PHP session_start();

if($id == true) echo "session_id übergeben!";
else echo "<br>id nicht übergeben!<br>";

echo "<a href="./login_test.php" target="_blank">test_link</a>";

?>

Die Datei wird aber vermutlich nicht nur aus diesen Zeilen bestehen sondern auch noch aus HTML-Quelltext etc.
Lies dir das hier mal durch: http://php-faq.de/q/q-fehler-session-cookie.html

kann ich die manuell ohne root-zugriff ändern?
Einige Einstellung kannst du mit ini_set() bzw. .htaccess ändern. Einen Überblick, welche Sachen du ändern kannst, bekommst du hier: http://de2.php.net/ini_set