homepage - erkennung des browsers und entsprechender aufruf der seite?

polloze

Lt. Commander
Registriert
Apr. 2005
Beiträge
1.668
erstmal hoffe ich, dass die linke meiner überschrift passt... wenn dem so ist, dann hoffe ich, dass ihr mich direkt schon n bissel versteht.

mein problem ist, dass ich meine page mit frontpage gebastelt hab. das ist nichts besonderes... halt die ersten anfänge. n bissel über mich, über freunde etc.

das ganze hab ich mit frontpage gebastelt. problem ist jetzt, dass die seite mit dem ie anders aussieht als mit dem opera. und da kam mir grad die idee, dass man doch auf der startpage son script vielleicht einbinden kann, was halt den browsertyp erkennt und demnach dann auf die version1 (für ie optimiert) leitet oder eben auf version2 (für opera etc. optimiert) leitet!?

geht das? ist das viel arbeit? wenn ja, wie? :) ich weiß, alles fragen die blöde sind oder auch net. wahrscheinlich auch fragen, die schon mal gestellt wurden. wenn dem so ist weiß ich, dass ich der dumme bin... aber ich bin am ende. das darf keine ausrede darstellen.... ich hoffe nur, dass ihr mir vielleicht doch mal entgegenkommt und ein bissel arbeit abnehmt. ist ja ggf. nur n link, der da zu posten ist... naja, ich hoffe ihr seht, dass ich mich jetzt schon mies fühle, dass ich auf diese art frage :freak:

ich sage trotzdem schon mal danke und hoffe auf hilfreiche antworten
 
Hi zuerst mal keine Panik, wir werden dich schon nicht in Stücke reißen ;)

Zu deinem Problem:
Wenn du das wirklich so lösen willst ist der php $HTTP_USER_AGENT das Zauberwort
(dann klapts bestimmt auch mit forensuche und google)

Allerding würde ich dir raten dich von vornerein zu überlegen eine page für jede auflösung und jeden browser zu schreiben, denn überleg mal was das für ne arbeit ist nen text zu aktualisieren, wenn du pro browser (IE, FF, OP, MO) version noch 3 auflösungsversionen hast (wären 12 texte die zu ändern wären).
Gewöhn dir am besten gleich an, dich an den W3 Standart zu halten ( http://validator.w3.org ) . Das garantiert dir zwar noch keine einheitliche ausgabe der browser, aber auf dieser grundlage kann man gut die letzten schönheitsfehler ausgleichen.
 
Zuletzt bearbeitet: (Rechtschreibung und Kopfrechnen ist schwer ...)
bevor du jetzt anfängst mit php dir die browser rauszupicken(was nicht gehen wird da sich opera per default als ie ausgibt) solltest du lieber von hand nach w3c schreiben(wie mein vorredner schon sagte) oder zumindest einen gescheiten baukasteneditor holst. frontpage macht miserablen code.
 
damit wären wir gleich bei MEINEM Problem:

$HTTP_USER_AGENT funzt auf meinem XAMPP genau so wie es soll und gibt die entsprechenden Informationen aus. Sobald ich das jedoch auf meinem Webspace hochlade, ist die Variable leer.

Hat jemand eine Idee, warum das so ist?

Hier der Code:

PHP:
<?php
    error_reporting(e_all);
    ini_set('arg_separator.output','&amp;');
    
// vorhandene dateien anmelden
    $dateien = array(); // ein leeres array erzeugen
    $dateien['menu_alben'] = "menu_alben.php";
    $dateien['geburt/'] = "album_inhalt.php";
    $dateien['unserehochzeit/'] = "album_inhalt.php";
    $dateien['joshua1/'] = "album_inhalt.php";
    $dateien['joshua2/'] = "album_inhalt.php";
    $dateien['lanparty/'] = "album_inhalt.php";
   
// beginn der eigentlichen seite
	echo "<?xml version=\"1.0\" encoding=\"iso-8859-2\"?>\n";
	echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n";
    echo"\"http://www.w3.org/TR/2002/REC-xhtml1-20020801/DTD/xhtml1-transitional.dtd\">\n";
    echo "<html>\n";
    echo "	<head>\n";
    echo "		<title>homepage von fred, antje und joshua pollex</title>\n";
// Browserabfrage
	$browser = $HTTP_USER_AGENT;
	if (strpos($browser,'MSIE') !== FALSE)
  	{
  		$user_browser="iewin";
  	}
	if ($user_browser == "iewin") 
  	{  
		echo "<link rel=\"stylesheet\" href=\"config/styleie.css\" type=\"text/css\"/>\n";
	}
	else
	{
		echo "<link rel=\"stylesheet\" href=\"config/style.css\" type=\"text/css\"/>\n";
	}
// End of Browserabfrage
	echo "			<script language=\"javascript\" type=\"text/javascript\">\n";
	echo "				function setzehoehegleich() {\n";
    echo "					var div1 = document.getElementById(\"mitte\");\n";
	echo "					var div2 = document.getElementById(\"links\");\n";
	echo "					var div3 = document.getElementById(\"rechts\");\n";
	echo "					var height = window.getComputedStyle(div1,null).height;\n";
	echo "						div2.style.height = height;\n";
	echo "						div3.style.height = height;\n";
	echo "				}\n";
	echo "				window.onload = setzehoehegleich;\n";
	echo "			</script>\n";
    echo "	</head>\n";
    echo "	<body>\n";
    echo "		<div id=\"root\">\n"; // ganz oberer div-holder
    echo "			<div id=\"oben\">\n"; // counter
    						include "counter.php";
    echo "				</div>\n";
							include "menu.php";
    echo "				<div id=\"mitte\">\n"; // hauptfenster
    
							if (isset($_GET['inhalt']) and isset($dateien[$_GET['inhalt']]))
							{
								include "album_inhalt.php";
							}
							else
							{
								include "inhalt.php";
							}
							
    // ende
    echo "            </div>\n";
    echo "				<div id=\"rechts\">\n"; // menu

    // vorhandensein prüfen und inkludieren von angemeldeten dateien
							if ($_GET['menu'] == 'menu_alben')
							{
								include "menu_alben.php";
							}

    echo "				</div>\n";
    echo "            <br style=\"clear:both;\" />\n"; // css-float beenden
    echo "       </div>\n";
    echo "    </body>\n";
    echo "</html>\n";
// ende der seite
?>

Testweise Ausgabe mit

PHP:
echo $HTTP_USER_AGENT;

liegt's evtl an meiner Firewall?



Nur so nebenbei: ich hab's endlich geschafft, diesen verkackten Code XHTML 1.0 Transitional-konform zu kriegen... aber das eben nur mal so am Rande


Und dann habe ich gleich noch eine Frage: wenn ich meine Seite mit drei Browsern betrachte (Opera 8.5, FF 1.0.7 und IE 6), warum sehe ich dann DREI unterschiedliche Darstellungen?
 
Zuletzt bearbeitet:
Du machst dir das leben viel zu schwer ... nämlich du kansnt das auch direkt über style shit machen weil wie du selber weist hat ie eine mangelnde css unterstüzung und das kannst du dir zum vorteil machen. Auch wen ic hselbe rnicht so den blassen habe von css sieht das so ungefähr aus
Code:
div.box{
width:200px; /*Das soll die Gesamtbreite werden */
padding-left:10px;
padding-right:10px; /*Der IE denkt, diese beiden Padding sind in width inbegriffen*/
}
body>div.box{
width:180px; /* Diese Breite sieht der IE nicht! */
}
So das hb ich mal stur aus dem PhP Magazin abgeschrieben es gibt auch eine 2. möglich keit die schneller zum schreiben ist aber soll nicht so gut sein
Code:
div.box{
width:180px; /*Das soll die Gesamtbreite werden */
padding-left:10px;
padding-right:10px; /*Der IE denkt, diese beiden Padding sind in width inbegriffen*/
-width:200px; /*Diese Breite sieht nur der IE*/
}
 
Ich spekuliere mal dass deine lokale php.ini andere Einstellungen aufweist als wie die vom Provider. Vergleiche die doch mal, oft sind die register_globals Einstellungen verantwortlich dafür.

Was meinst du mit unterschiedlichen Darstellungen? Das Layout? Die Farben?
Das ist halt das Problem der Webdesigner, die Browser halten sich halt nicht immer an den W3C Standard.
 
Polloze schrieb:
son script vielleicht einbinden kann, was halt den browsertyp erkennt und demnach dann auf die version1 (für ie optimiert) leitet oder eben auf version2 (für opera etc. optimiert) leitet!?
Und das machst du dann für jeden Browser, jedes Betriebssystem, jede Auflösung usw ;)

Deine zwei Varianten gehen ja noch einigermaßen, bei mehr wirds aufwendig. Vor allem, wenn du dann mal was am Inhalt/Design ändern willst.

Also, wie schon gesagt, versuche die Seite von Beginn an so zu erstellen, dass sie überall gleich aussieht.
 
AlbertLast schrieb:
Du machst dir das leben viel zu schwer ... nämlich du kansnt das auch direkt über style shit machen weil wie du selber weist hat ie eine mangelnde css unterstüzung und das kannst du dir zum vorteil machen. Auch wen ic hselbe rnicht so den blassen habe von css sieht das so ungefähr aus
Code:
div.box{
width:200px; /*Das soll die Gesamtbreite werden */
padding-left:10px;
padding-right:10px; /*Der IE denkt, diese beiden Padding sind in width inbegriffen*/
}
body>div.box{
width:180px; /* Diese Breite sieht der IE nicht! */
}
So das hb ich mal stur aus dem PhP Magazin abgeschrieben es gibt auch eine 2. möglich keit die schneller zum schreiben ist aber soll nicht so gut sein
Code:
div.box{
width:180px; /*Das soll die Gesamtbreite werden */
padding-left:10px;
padding-right:10px; /*Der IE denkt, diese beiden Padding sind in width inbegriffen*/
-width:200px; /*Diese Breite sieht nur der IE*/
}


Das ist doch der sogenannte Box-Model-Hack, oder? Ist der W3C-konform? Ich will nämlich erreichen, dass meine Homepage konform BLEIBT, sowohl XHTML als auch CSS, und Darstellungsprobleme lieber auf andere Weise lösen.


Wo genau finde ich die php.ini? bei mir auf'm Webspace (Strato) suche ich vergebens danach... (Ja, er ist php-fähig, nur so, falls die Frage kommt...)
 
Wenn du keinen eigenen Server hast (oder vServer) wirst du nicht an die php.ini rankommen. du kannst aber mit phpinfo() die Strato ini auslesen und dann mit deiner Lokalen vergleichen.
 
danke für eure beiträge, was mein problem angeht... jemand anders hat sich ja auch noch mit seinen problem hier eingeklinkt ;)

naja, hatte bisher keine zeit mich drum zu kümmern. werde hoffentlich mal morgen ein bissel mir anschauen, was ihr so geschrieben habt und ob mir das weiterhilft.

vielleicht noch eins von mir. natürlich möchte ich nicht zig varianten erstellen für alle möglichen browser oder monitor-größen. es war lediglich so, dass ich mich daran erinnert habe, dass man das so lösen konnte, auch wenn es nicht wirklich sinnvoll ist... :)
 
Nochmal zum Box-Modell: Im IE6 hat Microsoft das richtig eingebaut - aber nur im Standardkonformen Modus, im Quirks Modus oder wie auch immer sich der nennt, verhält der sich weiterhin wie der IE5, also falsch. Normalerweise schaltet er bei einer gültigen DTD in den Standard Modus um, aber mit <?xml version="1.0" encoding="iso-8859-2"?> kommt der IE nicht klar. Wenn du die Zeile weglässt, dann schaltet auch der IE in den Standard-Modus und hat das korrekte Box-Modell. Da aber bei XHTML UTF-8 Standard ist und nicht ISO 8859-2, wäre das dann eigentlich nicht mehr Standardkonform... ansonsten ist die Zeile ja optional.
 
Danke, das wusste ich nicht. Aber ich hab's jetzt anders gelöst, wenn auch für meinen Geschmack nicht optimal. Statt der Browserabfrage zusammen mit Div-Containern habe ich einfach auf Tabellen umgestellt, damit siehts wirklich überall fast gleich aus und ist immernoch sowohl CSS2- als auch XHTML 1-konform.
 
Also auf der seite http://validator.w3.org/ wird dir angezeigt ob deine page valide ist wenn nicht dan zeigt er dir den fehler an aber korigiert ihn nicht :D
 
äääääääääääääähm, ja. was glaubst, woher ich weiß, dass mein Code valide ist?


zum Box-Modell: ja, ist klar, aber ich habe das Box-Modell ja nicht benutzt, und ausserdem ist die Seite für West- bzw Mitteleuropa kodiert, das entspricht dann wieder iso-...-2
 
Zuletzt bearbeitet:
tjoa, jetzt kann ich mich mal wieder melden, was das hier angeht. der job nimmt einen manchmal stark ein... naja

ich hab mal grad die seite benutzt vom w3c... ui... also ich glaub, ich sollte meine page von grund auf neu erstellen. ich hab mal spaßes halber n doc hochgeladen und checken lassen... ich schätze mal im schnitt hab ich auf jeder seite 23 fehler, ob die nu schwerwiegend sind oder nicht muss ich noch rausfinden... aber das hört sich nicht wenig an
 
Zurück
Oben