Php wert mit javascript ändern

hallo zusammen,

ich habe mal wieder ein riesen prob und keine ahnung wie ich es lösen kann.vieleicht habt ihr ne lösung !?!
also ich habe eine seite entworfen bei der weitere inhalte mit php und dem include-befehl eingefügt werden.
jetzt möchte ich aber, dass entweder eine javascript-freie seite oder eine seite mit js geöffnet wird. ich habe es mit versucht aber dabei werden die php anweisungen von beiden seiten ausgeführt.
ich müsste also mit js eine variable verändern bzw einen wert zuweisen um zu unterscheiden ob js aktiviert ist oder nicht.
also z.b $js=„an“
leider habe ich null ahnung von js (wie die obere zeile eindeutig beweist)und finde auch nichts passendes im netz.
wichtig wäre, dass die variable vor dem include-befehl den richtigen wert hat.
könnt ihr mir helfen ?

danke im voraus

bob

Hallo,

ich müsste also mit js eine variable verändern

PHP ist einer serverseitige Skriptsprache, während JS eine clientseitige ist. Das bedeutet, dass deine Webseite aus HTML, PHP und JS bestehen kann, der PHP-Teil vom Server verarbeitet und entsprechend ersetzt/entfernt wird, der JS-Teil vom Browser. Das PHP ist folglich, wenn der Browser nach Erhalt der Seite mit seiner JS-Interpretation dran ist, schon längst weg.

Es gibt nur eine Möglichkeit, mit JS auf PHP Einfluss zu nehmen: AJAX. Aber ich weiß nicht, ob es sich lohnt, sich da einzuarbeiten und das einzubauen, nur um PHP mitzuteilen, ob JS aktiviert ist :smile:

Guck hier: http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29

mfg
MB

Hallo Bob,

ganz einfach, nur so als fixe Idee: Es kommt eine Script zum Einsatz, welche mittels eines versteckten Formulars eine Prüfvariable a an sich selbst schickt und dann testet, ob diese Variable auch angekommen ist. Der Versand erfolgt via JavaScript. Ist JavaScript deaktiviert, erfolgt auch kein Versand und die Variable a bleibt ungesetzt. Der Test der Variablen erfolgt mit PHP. Das Ganze sähe dann so aus und gehört in den -Bereich:

if(!isset($a)){
 echo "

";
echo „“;
echo „document.JS.submit();“;}
if(!isset($a)){$a = „aus“;}
echo „Javascript ist $a“;
?>

Das dürfte helfen. Alternativ musst du mit $HTTP_POST_VARS arbeiten. Leider macht die Seite unter Garantie beim Reload Zicken. Dafür ist die Unterscheidung JS ja oder nein beim normalen Aufruf per Adresseingabe oder per Hyperlink sehr sicher. Du könntest stattdessen auch mit document.location.replace() oder document.location.href eine Umleitung basteln und dem Zielscript (ist ja immer dasselbe) per GET die Parameter mitgeben (z.B. so: index.php?a=ein), jedoch ist die Variable hier Bestandteil des URL und wenn sich dann jemand die Seite bookmarkt, ruft er sie jedesmal mit „a=ein“ auf, ob JS nun aktiviert ist oder nicht. Außerdem kann es passieren, dass Suchmaschinen die Seite inklusive der Variablen indexieren. Das führt natürlich zwangsläufig zu Fehlern.

Darum würde ich als Kompromiss die oben aufgeführte Version mit dem Formular empfehlen, weil hier die Zick-Wahrscheinlichkeit sehr viel geringer ist und die Fehlerwahrscheinlichkeit gegen 0 geht, so lange nicht ausgerechnet zwischen dem Seitenerstaufruf und dem Reload das zuvor aktivierte JavaScript deaktiviert wird, was ich für äußerst unwahrscheinlich halte :o) Ich bin sicher, man könnte mit etwas Nachdenken noch wesentlich elegantere Möglichkeiten finden, so könntest du z.B. zwischen Seitenaufruf und Versand noch eine kleine Zeitverzögerung einbauen, um den Klick auf den Zurück-Button des Browsers nicht zu behindern. Probier einfach mal damit rum.

LG
Huttatta

hallo huttatta,

danke für die hilfe.

das script funktioniert echt gut !!!
ist sicher nicht nur für mich ein wertvoller tipp .

den doppelten aufbau kriegt man übrigens mit einer if anweisung weg.
dann führt er bei mir (die index.php baut sich ja immer wieder neu auf) das script nur aus wenn ich vorher auf einer bestimmten seite gewesen bin.

gruß

bob

wie wäre es mit

window.location.href = „js-aktiv.php“;