[GELÖST] PHPSESSID wird bei bei deakt. Cookies nicht an URL

Alles, was PHP betrifft, kann hier besprochen werden.

[GELÖST] PHPSESSID wird bei bei deakt. Cookies nicht an URL

Postby huby » 18. April 2008 11:02

Hallo,

mein System:
Xampp 1.6.6 auf openSUSE 10.3

Einstellungen in der php.ini:

Code: Select all
session.use_cookies = 1
session.use_trans_sid = 1


Falls im Browser Cookies deaktiviert sind, sollte mit diesen (default) Einstellungen eigentlich die PHPSESSID an die URL angehängt werden.
Genau das passiert in meinem Fall jedoch nicht!

Welche weiteren Einstellungen müßte ich denn beachten?

Vielen Dank im voraus

huby
Last edited by huby on 18. April 2008 12:44, edited 1 time in total.
huby
 
Posts: 7
Joined: 18. April 2008 10:40

Postby Wiedmann » 18. April 2008 11:07

Welche weiteren Einstellungen müßte ich denn beachten?

z.B. "session.use_only_cookies"

ansonsten:
Wie sehen deine URIs denn genau aus?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huby » 18. April 2008 11:23

Danke für die schnelle Antwort!

session.use_only_cookies steht gar nicht in meiner php.ini

Hier nochmal der komplette Session Bereich der php.ini
Code: Select all
[Session]
session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 1
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"


ansonsten:
Wie sehen deine URIs denn genau aus?


z.B. so
Code: Select all
http://localhost/
http://localhost/impressum.php
http://localhost/sitemap.php


Hab gerade noch was getestet:
Wenn $_GET["parameter"] übergeben werden, dann wird auch die PHPSESSID angehängt, sonst eben nicht.

siehe hier:
Code: Select all
http://localhost/abfrage.php?PHPSESSID=ef062556fd683c1f354d508503771b2f&kreis=77&branche=145


Wäre natürlich gut wenn es immer, also auch ohne $_GET["parameter"] funktionieren würde.

Bin für jeden Tipp dankbar.

huby
huby
 
Posts: 7
Joined: 18. April 2008 10:40

Postby Wiedmann » 18. April 2008 11:28

session.use_only_cookies steht gar nicht in meiner php.ini

Die aktuellen Werte deiner Konfiguration siehst du immer über phpinfo().


Das steht tatsächlich so im erzeugten HTML Quelltext, oder steht da nur "/impressum.php"?
--> Bei URIs mit "http://" hängt PHP selbst keine SID dran.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huby » 18. April 2008 11:36

Danke!
Das steht tatsächlich so im erzeugten HTML Quelltext, oder steht da nur "/impressum.php"?
--> Bei URIs mit "http://" hängt PHP selbst keine SID dran.

Ja, es steht im Quelltext http://localhost/impressum.php.

Das mach ich, um gezielt von http zu https und umgekehrt wechseln zu können.

Eigenartigerweise funktioniert es aber mit $_GET["parameter"]!

Denn auch in meinem Formular steht:
Code: Select all
action="http://<?php echo $_SERVER['SERVER_NAME']; ?>/abfrage.php"


Hat noch jemand Tipps wie ich das auch mit https in den Griff kriege?

huby
huby
 
Posts: 7
Joined: 18. April 2008 10:40

Postby Wiedmann » 18. April 2008 12:05

Eigenartigerweise funktioniert es aber mit $_GET["parameter"]!

Kann ich bei mir nicht nachvollziehen:
Code: Select all
<?php
ini_set('session.use_trans_sid', '1');
session_start();
?>
<p><a href="http://localhost/test.php?foo=bar">click here</a>.</p>

hier wird nie die SID angehängt. Ändert man die letzte Zeile so um:
Code: Select all
<p><a href="/test.php?foo=bar">click here</a>.</p>

tut das natürlich wieder (kein http:// oder https://)

Denn auch in meinem Formular steht:

Ich würde sagen, hier hast du einen Bug in PHP entdeckt. Das Hidden-Input-Element wird immer eingefügt. Egal ob action mit http:// begint oder nicht.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huby » 18. April 2008 12:28

Danke nochmal!

Jetzt hab ich es auch im PHP-Manual entdeckt.
http://de3.php.net/manual/de/session.idpassing.php
PHP ist in der Lage, Links transparent umzuwandeln. Falls Sie nicht PHP 4.2.0 oder höher verwenden, müssen Sie das beim Übersetzen von PHP manuell aktivieren. Unter Unix müssen Sie dazu configure mit --enable-trans-sid aufrufen. Wenn diese Option und die Laufzeit-Option session.use_trans_sid aktiviert sind, werden relative URIs automatisch so geändert, dass sie die Session-ID enthalten.


Das heißt: Ich muß meine Links devinitiv auf relativ umstellen!

Hat dann jemand einen Tipp, wie ich den wechsel von http zu https und umgekehrt in den Griff kriege?
Was haltet Ihr von:
Code: Select all
if($_SERVER["HTTPS"] =="on") {
  header(Location: "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])
  exit;
}


huby
Last edited by huby on 18. April 2008 12:35, edited 1 time in total.
huby
 
Posts: 7
Joined: 18. April 2008 10:40

Postby Wiedmann » 18. April 2008 12:35

Hat dann jemand einen Tipp, wie ich den wechsel von http zu https und umgekehrt in den Griff kriege?

Steht eigentlich auf der selben Seite (siehe dein Link):
Hänge einfach in diesen Fällen die SID selber dran.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Xardas der Dunkle » 18. April 2008 12:36

Wo ist überhaupt der sinn dadrin?
Eig. ruft man eine Seite im Browser doch eh nur mit https auf wenn diese auch https unterstützt bzw. man einen link bekommt wo das https bereits dran hängt.

Zu Hause hasse habe icch, glaube ich, noch irgendwo ein Modrewrite-Script mit dem das geht. Muss ich nacher mal gucken ...

Ansonsten kannst du es auch über php machen:
Code: Select all
<?php
if(isset($_SERVER['HTTPS'])) {
    header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}
?>


//edit argh^^, zu langsam
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby huby » 18. April 2008 12:39

Hänge einfach in diesen Fällen die SID selber dran.

Dann hab ich die SID im URI aber auch wenn Cookies aktiv sind.
Das ist ja auch nicht Sinn der Sache.

Aber was hältst Du von dem Beispiel das ich im vorigen Post noch eingefügt habe?

Grüße

huby
huby
 
Posts: 7
Joined: 18. April 2008 10:40

Postby Wiedmann » 18. April 2008 12:41

Dann hab ich die SID im URI aber auch wenn Cookies aktiv sind.

Nein. Die Konstante SID enthält nur einen Wert, wenn es keine Cookies gibt.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huby » 18. April 2008 12:42

Danke, das ist die Lösung!

Viele Grüße

huby
huby
 
Posts: 7
Joined: 18. April 2008 10:40

Postby Xardas der Dunkle » 18. April 2008 12:43

Dann hab ich die SID im URI aber auch wenn Cookies aktiv sind.
Das ist ja auch nicht Sinn der Sache.


Muss ja nicht. Du kannst dir ja mal den Quellcode von dieser Forensoftware angucken.
Dieses Forum verwendet ein eigenes Session-Management und daher sehen die Links alle etwa so aus:
Code: Select all
append_sid('viewtopic.php?t=1');


Die funktion prüft dann ob cookie oder sid anhängen und auch wie sie sie anhängen soll (? oder &).

mfG
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www


Return to PHP

Who is online

Users browsing this forum: No registered users and 22 guests