lokalserver will keine php-sessions unterstützen
Phil
- webserver
Hi!
Wir hatten es schon mal, hier ein erneuter, detailierterer Versuch..
Ich möchte hier auf meinem Lokalserver (Apache 1.3, PHP 4.1.3 (glaub ich)) n bissl mit Sessions arbeiten.
Nur leider werden die zugewiesenen Sessionvariablen nicht über einen Link hinweg gespeichert: Auf der Seite, wo ich die Variablen per $_SESSION["variable"]=".." zuweise, sind sie auch verfügbar. Klicke ich nun auf einen Link, so sind die gesamten Varibalen weg. Warum???
Hier einige Codeschnipsel:
user_func.php (auszug)
-------
} else {
if(isset($_POST["setcookie"])) {
$cookie=setcookie("yubbcomm",$array["username"]."|".$array["userpass"]."|".$array["usermail"]."|".$array["id"],60*60*24*365);
if(!$cookie) echo "<p><b>Cookie konnte nicht gesetzt werden!</b></p>";
}
$_SESSION["commusername"]=$array["username"];
$_SESSION["commusermail"]=$array["usermail"];
$_SESSION["commid"]=$array["id"];
echo '<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="pageheader"><img src="images/blank.gif" width="18" height="1" border="0" alt="" />Geschafft!</td>
</tr>
<tr>
<td>
Du wurdest erfolgreich eingeloggt, '.$_SESSION["commusername"].'!<br />Nun stehen dir (nahezu) alle Türen zu yubb.de offen.<p>Mit einem Blick in die Navigation wirst du sehen, dass sie sich verändert hat und du dort nun die verschiedenen Möglichkeiten hast, Artikel zu schreiben.</p>Viel Spaß wünscht dir das yubb.de-Team!'.print_r($_SESSION).'
</td>
</tr>
</table>';
}
test.php
--------
<?
print_r($_SESSION);
?>
Daten aus einem Loginformular werden an index.php?site=user_func gesendet (index.php beinhaltet ein session_start();). Wie aus dem Auszug ersichtlich ist, schreibe ich 3 Sessionvariablen, die ich testweise am Ende ausgebe. Bis hier ist alles ok. Klicke ich nun auf einen Link, der auf index.php?site=text geht, sind keine Variablen mehr da.
Hier mal der entsprechende Abschnitt aus der php.ini:
------
[Session]
; Handler used to store/retrieve data.
session.save_handler=files
; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
session.save_path=C:/PHP/sessiondata
; argument passed to save_handler
; Whether to use cookies.
session.use_cookies=1
; Name of the session (used as cookie name).
session.name=PHPSESSID
; Initialize session on request startup.
session.auto_start=0
session.cookie_secure=0 ;XXX
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime=0
; The path for which the cookie is valid.
session.cookie_path=/
; The domain for which the cookie is valid.
session.cookie_domain=
; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler=php
; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability=1
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime=1440
; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check=
; How many bytes to read from the file.
session.entropy_length=0
; Specified here to create the session id.
session.entropy_file=
session.entropy_length=0
;session.entropy_file=/dev/urandom
; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter=public
; Document expires after n minutes.
session.cache_expire=180
; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid=1
url_rewriter.tags="a=href,area=href,frame=src,input=src,form=fakeentry"
Dort, wo XXX steht, musste ich die Zeile einfügen, weil der Server ansonsten schon gar nicht $_SESSION erkannt hat..
Ich habe nahezu alles probiert, online funktioniert das alles: Ich habe die phpinfos verglichen (on- und offline), das alles ohne index.php gemacht, die session_start() zum zweiten mal auf einer Seite in die entsprechende Dateien gepackt, es (entgegen der manual, denn ich arbeite ja mit $_SESSION) mit session_register() versucht, ...
Ich bin echt mit meinem Latein am Ende, könnt ihr mir helfen?
Über Antworten und/oder anregungen wär ich dankbar...
Hi!
Ich würde es an deiner Stelle mal mit ganz einfachen Sessionfunktionen versuchen anstatt hier diesen riesigen Code zu posten, bei einem simplen Code ist die Feststellung, ob Sessions funzen, viel simpler...
Hoffe du weißt was ich meine (ich habe Sessions erst nicht richtig verstanden, mittlerweile klappt's mit zwei Zeilen Sessioncode, einen Warenkorb zu proggen).
Marc Reichelt || http://www.marcreichelt.de/
Hallo,
vielleicht liegts daran, dass Du bei Deinem Übungsgerät keinen DNS eingerichtet hast? Dann musst Du bei den Sessions unbedingt die Domain angeben und zwar in disem Falle die IP deines Übungsservers, da ja Nemen nicht aufgelöst werden können.
Und im Browser musst Du dann auch mit der IP arbeiten. Nur wenn die nämlich mit der im Cookie eingetragenen übereinstimmt, sendet der Browser den Cookie mit.
Probier das man erstmal aus und wenn es immer noch nicht klappt, dann meldest Du sich wieder. Und lass Dich nicht von irgendwelchen superschlauen Kaspern hier abschrecken. :-))
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
vielleicht liegts daran, dass Du bei Deinem Übungsgerät keinen DNS eingerichtet hast? Dann musst Du bei den Sessions unbedingt die Domain angeben und zwar in disem Falle die IP deines Übungsservers, da ja Nemen nicht aufgelöst werden können.
Wie meinst du das? Versteh ich nicht :(
Und im Browser musst Du dann auch mit der IP arbeiten. Nur wenn die nämlich mit der im Cookie eingetragenen übereinstimmt, sendet der Browser den Cookie mit.
Na klar, ich arbeite nur mit 127.0.0.1...
Probier das man erstmal aus und wenn es immer noch nicht klappt, dann meldest Du sich wieder. Und lass Dich nicht von irgendwelchen superschlauen Kaspern hier abschrecken. :-))
Ich doch nicht ;)
Moin
Hier mal der entsprechende Abschnitt aus der php.ini:
[Session]
; Handler used to store/retrieve data.
session.save_path=C:/PHP/sessiondata
Vielleicht liegt es an der Schreibweise? C: wuerde auf ein Windows-System hinweisen.
session.save_path = d:\webserver\sessions\temp
(aus meiner php.ini)
Gruesse
Wilhelm