mmofacts.com

PHP prüfen ob JavaScript active?

gepostet vor 18 Jahre, 4 Monate von None
Kann man mit PHP prüfen ob auf dem Clienten JavaScript aktiviert ist? Ich würde gerne Ajax verwenden und falls JavaScript nicht aktiviert ist mit header() auf eine Seite ohne Ajax umleiten.
gepostet vor 18 Jahre, 4 Monate von MagicForrest
Du könntest das doch mit JS machen, oder?
Wenns deaktiviert ist, kannst du ja trotzdem mit Sachen ala "Javascript ist nicht aktiviert" ausgeben.
Edit: Hm.. ob es damit geht was du brauchst, bin ich mir nicht sicher.. aber es wäre ein Anfang..
gepostet vor 18 Jahre, 4 Monate von Klaus
mach doch eine weiterleitung mit JS auf die Ajax-Seite und wenn kein JS aktvi ist bleibt der Client halt auf der Rohseite.
gepostet vor 18 Jahre, 4 Monate von None
Ich werd eh nur Konfortfunktionen ein, wie fehlerüberprüfung ob der benutzername schon existiert. Diese wird aber dann auch noch Serverseitig überprüft. Sollte JavaScript nicht aktiviert sein, macht es dann auch nichts
gepostet vor 18 Jahre, 4 Monate von RouL
lass von java ein 1x1 pixel transparentes img laden, das durch den aufruf einer php datei ausgegeben wird, und durch diesen aufruf lässt du eine Session variable setzen zB

session_start();
session_register('java_active');
$_SESSION['java_active'] = true;
/**************
IMG-Code here
**************/

dann brauchste von den anderen scripts nur noch die variable abfragen.
gepostet vor 18 Jahre, 4 Monate von None
Könntest du mir das bitte genauer erklären?
gepostet vor 18 Jahre, 4 Monate von Störti
Du baust ganz am Ende deines Codes (beim Login am Besten) folgendes ein:

document.write('');

Dieser Schnipsel baut in deinen Code ein Bild ein, nämlich "js_aktiv.php" (ja, Bilder können auch php sein).
In dieser PHP-Datei steht dann folgendes drin:
session_start();

session_register('java_active');
$_SESSION['java_active'] = true;
/**************
IMG-Code here
**************/
Wird die Datei aufgerufen, wird in der Session des Benutzers eine Variable namens "java_active" auf true gesetzt, der Benutzer unterstützt Javascript.
Problem, was mir gerade einfällt: Wenn du nicht mit den PHP-Sessions arbeitest, musst du das in deine andere Session einbauen.
gepostet vor 18 Jahre, 4 Monate von Kampfhoernchen
soweit gut, aber session_register() ist depreached!
gepostet vor 18 Jahre, 4 Monate von None
Stimmt, das ist gut. session_register() kann man aber weglassen. es reicht wenn man folgendes schreibt.
session_start();

$_SESSION['java_active'] = true;
/**************
IMG-Code here
**************/
Das Problem wäre dann, wenn der Besucher das erste mal kommt. Dann existiert die Session ja noch garnicht. Obwohl, man kann diesen Teil ja auch auf der Seite ohne JavaScript einbauen.
Aber kann man zusätzlich noch in der js_aktiv.php eine header() Weiterleitung einbauen, obwohl ein Bild erzeugt wird?
gepostet vor 18 Jahre, 4 Monate von Mudder
Naja die Session exestiert auch noch nicht wenn er Stammkunde ist. Die Sessions werden für die jeweilige "Session" gestartet und sind keine Speichereinheit.
Egal ob nun das erste mal da oder Stammkunde, du musst auf einer "Startseite" solch ein Prüf-Bild einbinden um das JS zu prüfen. Dann könntest du die JS-Prüfung auf der 2. Seite (nach einem Login) verwenden.
Aber ich würde doch ehr die Client-Methode verwenden und den User mittels eines -Elements entsprechend informieren und weiterleiten.
gepostet vor 18 Jahre, 4 Monate von None
Und wie würde diese Methode entsprechend ausschauen?
gepostet vor 18 Jahre, 4 Monate von Kapsonfire
es gibt doch eine einfachere methode......
per jscript öffnet sich ein ganz kleiner popup, dieser schickt ime erfolgsfall einen inhalt auf die hauptseite zurück....
nun weisst du, ob jscript aktiviert ist oder nicht
ich versteh nicht wieso man da mit php arbeiten muss
gepostet vor 18 Jahre, 4 Monate von None
Weil eine header() Weiterleitung dem Nutzer nicht auffält, sofern die Seite nicht geladen ist.
gepostet vor 18 Jahre, 4 Monate von Kapsonfire
hmmmmm
der user wird nicht sterben wenn der kurz was sieht^^
gepostet vor 18 Jahre, 4 Monate von None
Obwohl es nun egal ist, ob JavaScript aktiviert oder nicht, da ich mit Ajax nur mehr Komfort auf den Seiten biete. Und zwar so, das es auch ohne aktivierten JavaScript funktioniert, aber halt weniger Komfort hat.
gepostet vor 18 Jahre, 4 Monate von KoMtuR
Ich werf hier mal noch ne Methode in den Raum. Natürlich kann man noch mit Timeouts spielen, so dass der User Zeit hat zum lesen, wenn Javascript aktiv ist



Prüfung der Javascript-Funktionalität


Obwohl es nun egal ist, ob JavaScript aktiviert oder nicht, da ich mit Ajax nur mehr Komfort auf den Seiten biete. Und zwar so, das es auch ohne aktivierten JavaScript funktioniert, aber halt weniger Komfort hat.
Trotzdem sollte man wissen, ob Javascript aktiv ist oder nicht. Deine Links sind doch auch auf Javascript angepasst. Sozusagen müssen diene Links anders sein, wenn du kein Javascript nutzt und so weiter.
gepostet vor 18 Jahre, 4 Monate von RouL
DIe idee von KoMtuR ist nicht schlecht
meine idee ging mehr dahin, das du eine startseite hast auf der wird auf jevescript mit dem bild geprüft und die session solltest du natürlich vorher mit der startseite anlegen.
man kann auch auf der startseite einen link auf die eigentliche seite machen und nur den link umschreiben. z.B.
link zu main.php
wird zu main.php?js=1
dachte nur das wäre mit dem bild transparenter, der user würde garnicht mitbekommen, das er getestet wurde. Wenn jemand js deaktiviert hat, hat er meist einen Grund dafür.
man könnte natürlich auch noch auf der eigentlichen website dann einen kleinen hinweis machen das die seite mit aktiviertem js besser aussieht oder halt das bestimmte komfortfunktionen nur mit aktiviertem js laufen.
so überprüft z.B. das ***Portal (will keine werbung machen deshalb weggelassen) fürs wBB2 deine auflösung und farbtiefe für die statistik


//EDIT: und die geben nicht einmal ein bild zurück und es fällt trotzdem net auf
gepostet vor 18 Jahre, 4 Monate von knalli
Alternativ einen kleinen HttpRequest einbauen; im Endeffekt nichts anderes als die Sache mit dem Bild. Vorteil: Man muss nichts im HTML Dokument ändern (kein Bildtag, kein "onload"), sondern muss nur eine JS-Datei einfügen.
gepostet vor 18 Jahre, 4 Monate von None
Die beiden Ideen von KoMtuR und RouL sind gut. Aber ich verstehe nicht was du meinst, knalli?
gepostet vor 18 Jahre, 4 Monate von knalli
Man kann ein 1x1 Bild im Dokument verstecken, d.h. man muss irgendwo ein Bild "einfügen".
Wenn es eh nur darum geht die Javascript-Fähigkeit zu testen, kann man auch mittels HttpRequest einfach einen Request initiieren.
Zum Beispiel, das Dokument erhält eine (weitere) externe Javascriptdatei (über head/script)
Dort steht drin: Ein HttpRequest zu der Datei ichwerdeausgefuehrtwennjavascripttaktivist.php. Fertig.
Alternativ in eine Funktion verpackt und mittels window.onload = funktionsname; in den onload-Event verpackt (oder gar als EventListener).
Was ist HttpRequest? Ein Objekt im Browser, welches "Urls im Hintergrund öffnen kann". Man nennt diese Technik landläufig auch "Ajax". Obwohl Ajax eigentlich mehr ist..
gepostet vor 18 Jahre, 4 Monate von None
Verstehe was du meinst. Mit Ajax arbeite ich eh. Ich werde mal sehen, welche Methode sich auszahlt, bzw. ob man welche kombinieren kann. Danke für eure Hilfe.
gepostet vor 18 Jahre, 4 Monate von MagicForrest
Hm.. was ist an meinem Vorschlag falsch, einfach noscript zu verwenden?
Bzw. warum kannst du das nicht verwenden?
Das ganze ist doch wirklich sehr simpel...
//Hier ein bsp.:

Javascript ist aus
gepostet vor 18 Jahre, 4 Monate von None
An deinem Vorschlag ist nichts falsch. Und ich werde ja auch verwenden, wo ein Hinweis drinsteht, das die Aktivierung von JavaScript mehr Komfort bieten würde.
P.S.: Wie schauts mit MF-Online aus?
gepostet vor 18 Jahre, 4 Monate von MagicForrest
Ich finde es einfach einfacher und schneller als jetz tein Bild oder was-auch-immer zu laden....
Und benötigt auch weniger Code..
Wenn sich hier jemand befindet der sich sehr gut mit Debian/Apache auskennt, schaut es gut aus mit MF-Online.
Ansonsten weiß ich auch nicht...
Habe da ein wirklich merkwürdiges Problem, aber nicht dass jetzt jemand denkt es liegt am Server... es liegt an der Client-Setup.exe
Also wer sich da auskennt, bitte mal im IRC ( irc://irc.gamesurge.net/magicforrest ) beorbeischaun.
gepostet vor 18 Jahre, 4 Monate von knalli
Ganz einfach: Du musst (unnötigen) Code in deine Datei packen; meine Methode hält sich an die Semantik und fügt keinen JavaScript-Code in das HTML-Dokument ein.
Ist alles eine Frage, wie konsequent man was durchsetzen will

Auf diese Diskussion antworten