php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.02.2011, 18:10  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard JScript Umleitung bei Session_Timeout

Hallo heute zum 2 Mal

Es geht mir diesmal weniger um Code sondern mehr um eine Verständnisfrage, welche mir per Google nicht beantwortet werden konnte.

index.php
script.js
datei.php
login.php


nun sag index.php dass es setxy() in script.js ausführen soll.

setxy() leitet per ajax an datei.php eine Anfrage weiter.

So nun findet datei.php allerdings heraus dass die Session abgelaufen ist.

Nun gab ich bisher ein echo "Logged Out" heraus, welches script.js herausfand und den Client umgeleitet hat.

Im Quelltext sieht es so aus:

datei.php
PHP-Code:
session_start();
if (isset (
$_SESSION['id']) ){
    echo 
"Logged In";
    
//Geht nicht: header("Location: http://www.example.com");

script.js
PHP-Code:
            $.post  ("./datei.php", {},  
            function(
data) {
                if (
data == "Logged Out") {
                        
window.location.href './login.php';
                } 
Meine Frage:
Wie kann ich Javascript sagen dass der Client ausgeloggt ist OHNE ein echo auszugeben, sprich dass der Client an sich nicht auf datei.php manuell gehen kann und dann ein echo sieht ?
dreamcatcher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.02.2011, 18:18  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Wenn du keine Ausgabe machen willst, die man bei direktem Abruf im Browser sehen kann, dann musst du die Information irgendwie anders übermitteln.

Ein HTTP Response Header böte sich bspw. an.
Falls du keinen definierten HTTP-Statuscode verwenden möchtest (falls dir einer sinnvoll erscheint), dann sollte der Name deines „eigenen“ Headers mit "X-" beginnen.
Abfragen kannst du den Header mit den entsprechenden Methoden des XMLHttpRequest-Objektes.
Wenn du das nicht direkt benutzt, sondern irgendein Framework - dann schau in dessen Doku nach, wie du da bei einem AJAX-Request an die HTTP-Header rankommst.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 18.02.2011, 02:44  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.865
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Die genannten optionen:
- User Defined Header ( X-IRGENDWAS )
- Status Codes

oder:
Du gibst ein volles HTML-Dokument zurück das direkt auf die hauptseite oder sonstwas umleitet ( per meta-tag ), würde der Browser die Seite normal laden würde er sofort auf der startseite landen, per ajax-request nicht, da die seite nicht ans DOM geheftet wird und die Meta-Tags somit nicht umgesetzt würden. Nachteil wäre: Du musst die HTML-Knoten per JS selbst parsen um beispiel eine "Antwort" aus dem Body-Tag abzuholen. Das ist ein Workaround!

Zustandsreplys sind jetzt nicht die ultra Sicherheitslücken.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 18.02.2011, 21:30  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 599
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

So wie ich es der Häufigkeit an Suchergebnissen zuordnen kann, wird es meistens über Status Codes gemacht.

Nun hab ich geschaut welcher Statuscode denn dafür vorgesehen ist, wobei ich aber mehrere herausbekam:

Code:
401 Unauthorized

The request requires user authentication. The response MUST include a WWW-Authenticate header field (section 14.47) containing a challenge applicable to the requested resource. The client MAY repeat the request with a suitable Authorization header field (section 14.8). If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user SHOULD be presented the entity that was given in the response, since that entity might include relevant diagnostic information. HTTP access authentication is explained in "HTTP Authentication: Basic and Digest Access Authentication" [43].



408 Request Timeout

The client did not produce a request within the time that the server was prepared to wait. The client MAY repeat the request without modifications at any later time.



412 
Precondition Failed: Die in einem oder mehreren Anfrage Headern gegebenen Bedingungen wurden beim testen auf dem Server als falsch oder nicht erfüllbar eingestuft. Dieser Antwortcode erlaubt es dem Client anhand der Metainformationen der aktuellen Ressource Bedingungen zu stellen und dadurch die Anfragemethode vor der Anwendung auf eine falsche Ressource zu beschützen.
Wobei mir "Request Timeout" wohl eher gemeint ist, wenn die Verbinung zu lange zum Server dauert und nicht "Solange keine Verbindung zum Server erfolgt ist und dadurch ein Session Timeout entsteht".

Wobei der 401er doch bei unerfolgreichen htaccess Anmeldungen gesendet wird, oder ?

Als Header wird sonst immer der Statuscode 200 für OK gesendet.

Also was ist empfehlenswerten bzw "state of the art" ?
Ein User Defined Header oder ein bereits vorhandener Statuscode ?
Wobie die zweite Frage dann *hoch* schaut, ob die von mir genannten überhaupt dafür gedacht sind oder sie "fremdverwendet" werden.


P.S.:
Dein Workaround ist richtig klasse, du inspirierst mich meistens aufs Neues

Geändert von dreamcatcher (18.02.2011 um 22:16 Uhr).
dreamcatcher ist offline   Mit Zitat antworten
Alt 18.02.2011, 23:06  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Nein, von den HTTP Status Codes passt eigentlich keiner so richtig.
Außerdem kann der Request ja durchaus normal beantwortet werden - er soll ja lediglich eine Information ans Script übermitteln.

Ich denke, ein selbst definierter Header ist da am besten geeignet.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zweck von Keep-Alive Header bei HTTP 1.1 Thalo Server, Hosting und Workstations 1 16.03.2010 21:20
[Erledigt] mod_rewrite, Datei Downloads und falsche Header kip Server, Hosting und Workstations 1 16.09.2009 12:37
[Erledigt] Eigener Webserver - Header auslesen DarkChris PHP-Fortgeschrittene 5 15.09.2009 15:15
Cookie nicht im header setzen PHP Tipps 2005-2 23 09.09.2005 16:20
Problem: Cannot modify header information Alpha Centauri PHP Tipps 2005 11 25.04.2005 13:05
Warning: Cannot modify header... einbinden nicht möglich? PHP Tipps 2004 2 07.08.2004 15:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax umleitung auf hauptseite, ajax suchergebnis umleiten auf hauptseite, digest access authentication php

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum