André Laugks: wie session ids erzeugen??

Beitrag lesen

Hallo!

ich habe den quelltext exakt von dir übernommen...

...jedoch sind am anfang des dokuments immer folgende errors:

Warning: Cannot send session cookie - headers already sent by (output started at C:\apache\htdocs\top.php:4) in C:\apache\htdocs\sid_test.php on line 6

Warning: Cannot send session cache limiter - headers already sent (output started at C:\apache\htdocs\top.php:4) in C:\apache\htdocs\sid_test.php on line 6

Wenn PHP ein Cookie sendet, sendet es das mit allen Headern zusammen, in denen diverse Infos stehen etc.. Für Dich eigentlich uninteressant!!! Wenn, bevor diese Header(die du nicht siehst, nicht zu wechseln mit <head></head>) gesendet werden, irgendein Zeichen ausgegeben wird, Leerzeichen oder Dein HTML, kann dieser Cookie nicht gesendet werden. --> "Warning: Cannot send session cookie..."

Die Strichellinie ist der obere Rand Deines Editors!

-----------------------------------------------------------------------------
<?PHP
session_register("variable1");
session_register("veraibale2")
?>
<html><body>
<a ...></a>
</body></html>

desweiteren sieht die url wie folgt aus... wieso hängt er das teil zweimal dran??
users.php.php?PHPSESSID=2a35bb77b04048cb661da427fe542f8b&PHPSESSID=2a35bb77b04048cb661da427fe542f8b

Hier ist die Variable "session.use_trans_sid" in der php.ini auf true|1 gesetzt.

Zitat von http://www.php.net/manual/de/ref.session.php
----------------------------------><8-------------------------------------
Wenn PHP mit --enable-trans-sid kompiliert wurde, kann es dies transparent machen.
Wenn sie diese Option aktivieren, werden die URIs automatisch geändert, sodass sie die Session-ID enthalten.  Alternativ können sie die Konstante SID verwenden, die definiert wird, falls vom Client keinen passendes Cookie gesendet wurde. SID hat entweder die Form session_name=session_id oder ist eine leere Zeichenkette.
----------------------------------><8-------------------------------------

Das mit dem kompilieren vergessen wir mal.. :-). Das Zitat sagt aus: Wenn Du die Konstante SID verwendest und Cookies deaktiviert sind, setzt PHP für SID die Session-Daten, wie Session-Id und Session-Name.

Du hast SID nicht verwendet. PHP parst also die gesamte Seite und hängt an jede URL die session-Daten.

Du mußt also an die URL nicht noch eine Extra-Variable hängen mit den Session_daten, da PHP das für dich erledigt.

Deshalb kommen dann solche Sachen zustande.
users.php.php?PHPSESSID=2a35bb77b04048cb661da427fe542f8b&PHPSESSID=2a35bb77b04048cb661da427fe542f8b

Diese Methode kostet Systemresourcen. Wenn Du ein virteuellen Server hast, kann es Dir egal sein. Der Provider ist selbst schuld, wenn er diese Option zuläst. Teste einfach mal, wie Dein Provider PHP konfiguriert hat. Einfach eine Seite erstellen, in der Du nur schreibst.

<?PHP
phpinfo();
?>

MfG, André Laugks