AJAX lädt php, welche eine Session setzt. Laden der Session funzt nicht!
Hallo,
ich bin ein AJAX neuling und PHP habe ich im letzten halben Jahr "etwas" vernachlässigt...
Wie schon oben beschrieben, habe ich folgendes Problem:
eine index.html:
und dann meine ajaxTest2.php:
in meiner ajaxTest2.php habe ich auch noch:
Das Problem ist:
Wenn ich mich einlogge, klapptalles super, aber wenn ich danach eine aktion durchführe (z.B. Datei Löschen), dann kriege ich meinen "Sie sind nicht eingeloggt" screen!
Ich denke, dass die session nicht gespeichert wird...
Stimmt das? Und wenn ja, wie behebe ich das?
Tschau
B-Free
ich bin ein AJAX neuling und PHP habe ich im letzten halben Jahr "etwas" vernachlässigt...
Wie schon oben beschrieben, habe ich folgendes Problem:
eine index.html:
<script>
(AJAX script blabla...)
function login(){
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var request = "ajaxTest2.php?u="+username+"&p="+password+"&a=login";
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("display1").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",request,true);
xmlhttp.send();
}</script>
und dann meine ajaxTest2.php:
(LogIn script blabla)
if (login == true) { (jaja... nur als beispiel)
$_SESSION['loggedIn'] == true;
}
in meiner ajaxTest2.php habe ich auch noch:
(...)
function deleteFile($filename) {
if ($_SESSION['loggedIn']) {
if ($filename != "" && file_exists('files/'.$filename)) {
unlink('files/'.$filename);
}
else {
$_SESSION['errorMsg'] = '<span class="error">Cannot delete file!</span>';
}
}
else {
echo '<span class="error">Sie sind nicht eingeloggt</span>';
}
}
(...)
Das Problem ist:
Wenn ich mich einlogge, klapptalles super, aber wenn ich danach eine aktion durchführe (z.B. Datei Löschen), dann kriege ich meinen "Sie sind nicht eingeloggt" screen!
Ich denke, dass die session nicht gespeichert wird...
Stimmt das? Und wenn ja, wie behebe ich das?
Tschau
B-Free
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 238422
Url: https://administrator.de/contentid/238422
Ausgedruckt am: 05.11.2024 um 14:11 Uhr
6 Kommentare
Neuester Kommentar
Hi,
PHP-Manual - session_start()
Ich vermute folgendes:
session_start() ... WELCHE Session !?
Woher soll PHP denn wissen welche Session denn zu diesem AJAX-Request gehört !
Normalerweise wird die SESSION-ID als Cookie vom Browser übertragen, oder wenn dies deaktiviert ist als zusätzlicher URL-Parameter PHP-Manual - session_id()
Ich bin überzeugt davon, das diese Angaben (Cookie oder zusätzlicher Parameter) in deinem AJAX-Request NICHT automatisch mitgegeben werden. Deswegen kann keine "alte" Session gestartet werden und es wird einfach eine neue gestartet.
Du musst deinen AJAX.-Request also soweit umstricken das er entweder das Session-Cookie mitsendet (und beim Login empfängt und setzt) oder die ID als Parameter mit übergeben und in der/den PHP-Dateien diesen annehmen und daraufhin genau diese Session wieder aufrufen.
~Arano
PHP-Manual - session_start()
Ich vermute folgendes:
session_start() ... WELCHE Session !?
Woher soll PHP denn wissen welche Session denn zu diesem AJAX-Request gehört !
Normalerweise wird die SESSION-ID als Cookie vom Browser übertragen, oder wenn dies deaktiviert ist als zusätzlicher URL-Parameter PHP-Manual - session_id()
Ich bin überzeugt davon, das diese Angaben (Cookie oder zusätzlicher Parameter) in deinem AJAX-Request NICHT automatisch mitgegeben werden. Deswegen kann keine "alte" Session gestartet werden und es wird einfach eine neue gestartet.
Du musst deinen AJAX.-Request also soweit umstricken das er entweder das Session-Cookie mitsendet (und beim Login empfängt und setzt) oder die ID als Parameter mit übergeben und in der/den PHP-Dateien diesen annehmen und daraufhin genau diese Session wieder aufrufen.
~Arano
if (login == true) {
$_SESSION['loggedIn'] == true;
"Warum machst du einen Vergleich, wenn du das Ergebnis sowieso ignorierst?"
Ich bin überzeugt davon, das diese Angaben (Cookie oder zusätzlicher Parameter) in deinem AJAX-Request NICHT automatisch mitgegeben werden.
Natürlich wird das Cookie auch bei XmlHttpRequests mitgesendet!
Cookies werden prinzipiell bei jedem HTTP-Request im Gültigkeitsbereich mitgesendet.
Zitat von @B-free:
Nachtrag:
Die "index.html" in "index.php" umzubenennen und an den anfang ein zu setzen hat auch nicht geholfen...
Nachtrag:
Die "index.html" in "index.php" umzubenennen und an den anfang ein
<?php session_start;> ?>
Hi,
die Funktion session_start() initialisiert nicht nur eine neue Session, sie nimmt auch eine vorab gestartete Session wieder auf.
Deshalb gehört der Funktionsaufruf nicht nur in deine index.php, sondern in jedes weitere PHP-Script, das mit der/den aktuellen Session/Sessionvariablen arbeitet.
Siehe --> http://de3.php.net/manual/de/function.session-start.php
Gruß
Günni
PS.: Falls das bei dir der Fall sein sollte, betrachte diesen Hinweis als gegenstandslos