• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage PHP , Cookies und das verdammte Javascript.

ohne Benutzername

Neues Mitglied
Welches ist die beste Methode serverseitig herauszufinden ob der Client Javascript eingeschaltet hat, OHNE COOKIES dafür zu nutzen, und ohne die Seite neu zu laden.

Ich habe an eine Lösung gedacht, ein Javascript sollte gleich am Anfang der index.php eine andere Seite inhalt.php laden und dann weiter unten lade ich im <nosript> Bereich noch einmal die inhalt.php Seite für die die kein Javascript eingeschaltet haben.

<a href="https://blabla.de/index.php">

und dann so :

PHP:
// index.php

<script>
    var x=document.getElementById("body");
    x.innerHTML = '<?php include_once "include.php?script=true&session=123456789";?>';
</script>

<noscript>
<?php
   include_once("include.php?script=false&session=123456789")
?>
</noscript>

Scheint auf den ersten Blick eine gute Lösung, nur lade ich eigentlich für die , die Javascript eingeschaltet haben die Seite zwei mal, und das kann Probleme zB mit der Datenbank bereiten.

ich habe dann noch gedacht eine Session Variable zu erzeugen und sie anzuhängen, und dann in inhalt.php in eine serverseitige Array $_SESSION['session'] += $_GET['session'] schreibe, die ich dann weiter im Code vergleiche und wenn ich die kenne dann gib ich inhalt.php nicht noch einmal aus.

Scheint auch gut zu sein, aber da besteht die Gefahr dass Javascript nach dem php geladen und durchgeführt wird. Javascript ladet ja vom Browser aus, und der <noscript> Tag vom Server. Ich müsste irgendwie mit dem NoScript Bereich warten bis Javascript geladen hat.
Und da habe ich keinen Schimmer wie ich das machen soll.
Gibt es eine einfache Methode das zweite Laden zu verhindern wenn der Javascript ?


UPDATE.
Nach einigen Stunden googeln habe ich die Funktion pcntl-wait() gefunden, das ist eine heiße Sache da ich damit mein PHPScript anhalten kann. Die meinen da das die Funktion ein pid überwacht und erst weitermacht wenn der pid verschwunden ist. Wie löse ich mit Javascript einen pid am Server aus ?
 
Zuletzt bearbeitet:
Werbung:
Was hältst du von der Variante im 'noscript'-Teil einen IFrame zu erzeugen... den mit CSS entsprechend zu formatieren (100% * 100%) und in dem IFrame deine 'include.php' anzeigen zu lassen.
HTML:
<noscript>
   <iframe class="no_script" src="include.php"></iframe>
</noscript>
... zwar ungetestet aber könnte funktionieren.
 
Werbung:
Deine Frage...
Gibt es eine einfache Methode das zweite Laden zu verhindern wenn der Javascript ?
Meine Antwort... siehe oben #2...
Nutze statt den php Teil in der von dir angegebenen Lösung...
<noscript> <?php include_once("include.php?script=false&session=123456789") ?> </noscript>
Versuchsweise mal meinen Vorschlag...
<noscript> <iframe class="no_script" src="include.php"></iframe> </noscript>
Damit sollte das doppelte Laden des Codes im NoScriptFall vermieden werden.
 
Ok, dann mal langsam, der iframe ladet nicht selbst sondern er gibt den Task weiter an den Browser, und es scheint dass dadurch dass der noscript Tag nicht ausgeführt wird, der Browser die Seite nicht ladet.
Gut. Soweit so gut.
ich habe aber gelesen dass viele Leute iframes blocken. Ich muss mal sehen was da dran ist, nicht dass ich dann auch noch einen Workaround machen muss für die, die Iframes blocken.
 
Zurück
Oben