PHP Internet-Explorer "verbieten"

Blechdose

Ensign
Registriert
Mai 2008
Beiträge
148
Hallo liebe Community,

ich bin gerade dabei mich noch ein bisschen mit PHP zu beschäftigen. Da habe ich eine kleine Seite geschrieben. Auf dieser soll der Internet-Explorer nicht erlaubt sein. Dafür hat mir ein Kumpel ein Javascript zukommen lassen:
Code:
/*Copyright Matthias Althammer */
browser = "unbekannt";


if (navigator.appName.substring(0,8) == "Firefox"){//Netscape (firefox Browser
         browser = "Firefox";

        }
if (navigator.appName.substring(0,9) == "Microsoft"){//Internet Explorer
         browser = "Internet Explorer";
        }

if (browser=="Internet Explorer"){//auf IE-Seite weiterleiten
        document.write("<meta http-equiv='refresh' content='3;URL=seite.php'>");
        }
Das hat neulich auch noch super funktioniert. Jeder der den IE hatte, kam auf "seite.php". Doch als ich dann vorgestern mein "System" etwas erweitert habe, konnte jeder IE-Besucher ganz normal auf der Seite surfen.
Das ganze sollte mit diesem Skript funktionieren das sich zwischen den Head-tags befindet:
PHP:
<script language="JavaScript" type="text/javascript">
<!--
<?php
//Plugins werden geladen
$java = '../php/admin/includes/javascript.txt';
if (file_exists ($java)) {
        include ("$java");
        echo "//-->";
        echo "</script>";
} else {
        echo "Internet Explorer ist erlaubt!";
}
?>
//-->

</script>

Hat jemand ne Ahnung was da falsch ist? Oder liegt es daran, da es mit PHP geladen wird?
Frohe Feiertage noch!
 
Zuletzt bearbeitet:
Wieso prüfst du den Browser mit JS wenn es auch PHP macht?

Dann ersparst du dir eine Weiterleitung und kannst fast mit 100%-iger Sicherheit davon ausgehen dass ein IE Nutzer die Seite nicht sieht. Zusätzlich kann man das JS natürlich drin lassen.

Mit JS würde ich aber sowieso auf diese Browserabfragen verzichten und die Weiterleitung mit Conditional Comments abwickeln.
 
mhh hört sich interessant an, dann werde ich mich danach auch noch umschauen, allerdings finde ich es komisch dass das skript anfangs problems funktioniert hat, dann aber aufeinmal nicht mehr...

an meinem geschrieben liegt es nicht oder?
 
Wie gesagt ich bin eher Anfänger, und dachte so kann ich das einbauen...

Das mache ich im übrigen deshalb, da das ganze von einem backend an- bzw. ausgeschaltet werden kann. Die Textdatei wird dann dabei einfach umbenannt.

Im Quelltext kommt ja sogar das "zusammengesetzte" Javaskript an. Nur scheint es nicht zu funktionieren?
 
Wird der JS-Code korrekt ausgegeben?, sprich ohne Fehler?

Wenn ja probiers mal den <script> Tag vor </body> zu setzen.
 
Code:
<script language="JavaScript" type="text/javascript">
<!--
/*Copyright Matthias Althammer */
browser = "unbekannt";


if (navigator.appName.substring(0,8) == "Firefox"){//Netscape (firefox Browser
         browser = "Firefox";

        }
if (navigator.appName.substring(0,9) == "Microsoft Internet Explorer"){//Internet Explorer
         browser = "Internet Explorer";
        }

if (browser=="Internet Explorer"){//auf IE-Seite weiterleiten
        document.write("<meta http-equiv='refresh' content='3;URL=seite.php'>");
        }
//--></script>
Das ist die Ausgabe wie sie im Browser (FF) erfolgt. Das ganze wird ja zwischen den <head> Tags geladen, also am Kopf des Dokumentes und somit vor </body>

Ich poste mal die Seite:
http://www.blechdose-live.de/php/
 
Du hast die Zeile

Code:
if (navigator.appName.substring(0,9) == "[B]Microsoft[/B]"){//Internet Explorer

mit

Code:
if (navigator.appName.substring(0,9) == "[B]Microsoft Internet Explorer[/B]"){//Internet Explorer

ausgetauscht, deshalb funktioniert es nicht mehr.
 
Hallo luky37,

habe es mit deinem Code-Schnipsel versucht, scheint aber auch nicht zu funktionieren?
 
Ich glaube, der Fehler ist das: (rot markiert)


<script language="JavaScript" type="text/javascript">
<!--
/*Copyright Matthias Althammer -=GAEF=-Aldi*/
browser = "unbekannt";


if (navigator.appName.substring(0,8) == "Firefox"){//Netscape (firefox Browser
browser = "Firefox";

}
if (navigator.appName.substring(0,9) == "Microsoft Internet Explorer"){//Internet Explorer
browser = "Internet Explorer";
}

if (browser=="Internet Explorer"){//auf IE-Seite weiterleiten
document.write("<meta http-equiv='refresh' content='3;URL=seite.php'>");
}
//--></script><script type='text/javascript'>
<!--
if(top!=self)
top.location=self.location;
//-->
</script>

wenn der html code auskommentiert ist, kann er auch nicht funktionieren ;)
und diese klammer bei firefox browser..... check it out,
lg
 
Habe es gerade mit dieser Version versucht, allerdings wieder ohne Erflog...
 
Versuch's mal hiermit, ich hab das grade ebn geschrieben und mit diversen Browser getestet, klappt soweit alles ;)

HTML:
var browser = navigator.appName;

if(browser == "Microsoft Internet Explorer") {
	document.write('Bitte laden sie sich doch Firefox, für ein besseres Erlebniss Internet!');
}
else {
	document.write('alles klar weiter zur seite....'); //hier dann das was er ausführen soll wenn der Browser NICHT IE ist
}

allerdings würde ich auch ne PHP varainte bevorzugen, da es in javascript nichts bring da einige IE's standartmäßig Js blocken.
 
Zuletzt bearbeitet:
Ich würde nun wirklich nicht generell den IE verbieten. Der IE8 ist nicht schlecht und relativ standardkonform (immerhin ACID2)...
 
Es wurden Dir ja schon entsprechende Vorschläge gemacht zwecks PHP-Seitige Prüfmechanismen.

Zu Deinem PHP-Snippet:

Es kann so nicht funktionieren. Du prüfst doch nur auf existenz der TXT-Datei (dort ist ja Dein JS-Code enthalten). Dabei ist PHP völlig egal was im JS-Code steht. PHP = Serverseitig, JS = Clientseitig.
PHP:
<?php

//Plugins werden geladen
$java = '../php/admin/includes/javascript.txt';
if (file_exists ($java)) {
        include ("$java");
        echo "//-->";
        echo "</script>";
} else {
        echo "Internet Explorer ist erlaubt!";
}
?>

Anstelle der if (file_exists())... musst Du hier mittels get_browser(); oder $_SERVER['HTTP_USER_AGENT']; den jeweiligen Browser abfragen. Achtung: Das ist aber nicht immer möglich und Du sperrst so ggf. auch andere Browser wie Opera oder Firefox-Nutzer unter Debian GNU/Linux (dort nennt er sich Iceweasel - sollte man diesen aus dem Debian Repository installieren) aus.

Ach ja: Du solltest auch auf "irreführende" Variablenbezeichnungen verzichten:

$java lässt auf Java schließen. Javascript ist aber was völlig anderes als Java.
 
Zuletzt bearbeitet:
Vielen Dank euch allen, mit dem Code von Death-Fighter93 hat das nun geklappt ;)

Es ist aber so, dass ich das auch abschalten kann (über ein kleines Admin-Panel). D.h. dort wird einfach die .txt-Datei umgeschrieben, das kleine PHP-Skript findet also die Datei nicht mehr und somit ist der IE erlaubt, betätige ich den Button noch einmal ist das ganze wieder so wie es am Anfang war.

Nun weiß ich auch, dass es mit PHP geht, nur wird das doch dann sicherlich schwieriger genauso zu machen wie es im Moment mit dem Javaskript geht (da wie schon erwähnt PHP Serverseitig ist).

Ich hab mir auch den Ratschlag zu Herze genommen und die Variable umbenannt.

Der IE soll nur "verboten" sein, da manche Seiten eben Darstellungsfehler haben und ich so ein paar Leutchen ärgern kann .

Naja nochmals Danke an alle für die Hilfe!
 
Noch mehr ärgert es User die, deine Seite überhaupt nicht mit dem IE besuchen können.
Aus Erfahrung kann ich dir sagen, es wird sich keiner "extra" für eine Seite nen anderen Browser installieren.

Auch wenn es vielleicht mehr Arbeit verursacht würde ich dir schon dazu raten deinen Source_Code auch auf IE lauffähig zu machen.

CSS Dateien kannst du ja für IE separat schreiben und diese auch nur vom IE lesen lassen.
 
du willst die IE User noch unterstützen? Ich seh das so die sind selber schuld wenn sie den alten IE benutzen und nicht zu updaten... Ich würde einfach nur ne CSS für die aktuellsten user machen und bei Ie usern ebn n JS Layer reinfliegen lassen das der Browser veraltet ist und man ihn doch bitte updaten möchte, ansonsten kann man die Website nicht in voller Qualität genießen.
 
Nun ja leider muss man im kommerziellen Bereich den IE Supporten, klar sind die scheiße und ja ist ne Heiden Arbeit, doch "ganz" ausschließen kann man diese Benutzer nicht.

Kurze Stats zu paar seiten von mir:

Seite-1.) 36% der Besucher besuchen die Seite mit dem IE
Seite-2.) Sind es zwar nur 13% der Besucher die den IE nutzen doch es sind Benutzer die Kaufen bzw sich über den Inhalt freuen.

Jeder Besucher bringt Geld, bzw wird zum potenziellen Kunden der Firma.

Selbst wenn er nur Technische-Dokumente (in meinen Fall) herunterlädt bringt es auf langer Sicht Besucher und diese werden Kunden so einfach ist das.

Den meisten Benutzern ist das sowas von egal was Sie für einen Browser benutzen, und ob der nun Jahre alt ist juckt diese nicht...

Sie wollen Inhalte lesen und sich daran erfreuen ohne was dafür zu tun, es werden zum glück immer weniger die die ollen IE´s benutzen.

Wäre genau das gleiche wenn man nun auf einmal alle Autos aus dem jahr 1990 in jeder Werkstatt ausschließen würde, nur weil er alt und schwerer zu "Supporten" ist.
(Ich weiß blöder vergleich, aber so in etwa ist das ganze doch)
 
Also ich setzte das "System" so nenn ich das mal, nur in einer Arbeitsgruppe ein, quasi in einem Team zum Austauschen von Inhalten (was auf der Seite gut geht). In diesem besitzen alle Mitglieder nur den IE7 und verwenden nur diesen, da die meisten nicht sehr technisch versiert sind ist es also einfach mal kurz auf der Seite für "Ruhe" zu sorgen, damit man produktiv arbeiten kann. Da lohnt es sich kurz den IE zu verbieten. Wäre nun der Firefox bei allen Vorinstalliert, würde ich ihn verbieten. Das ist mit der Hauptgrund, der andere ist natürlich wie bereits angeschnitten die Kompatibilität.

Auch auf meiner "Live"-Seite ist ein großes Publikum mit dem IE unterwegs und ganz ausschließen kann ich diese nicht, weil ich mir sowas einfach nicht leisten kann und will...
 
Zurück
Oben