PHP Sessies IE6

Status
Niet open voor verdere reacties.

Dikzak

Gebruiker
Lid geworden
26 jan 2008
Berichten
148
Hallo,

Ik ben even bezig met het ontdekken van de browser van de bezoeker. Hierna kan ik mijn site optimaliseren door voor elke browser een andere stylesheet te maken. Dit werkt prima. Ik sla de browser op m.b.v. sessies. In IE7, FF2, Mozilla 1.7, Opera en Safari werkt dit prima. Alleen in oudere versies van IE (5.5 en 6) doen de sessies het niet...
Misschien lijkt het een beetje zonde van mijn tijd, om speciale stylesheets te maken, maar in een overzicht van het gebruik van browsers worden IE6 en IE5(.5) ook nog gebruikt. (http://www.w3schools.com/browsers/browsers_stats.asp)

Weet iemand hoe ik dit zou kunnen oplossen? :thumb:

Gr. en alvast bedankt!

Tim
 
Beetje vreemd om die browser in een sessie op te slaan, kan me niet indenken dat die tijdens een bezoek veranderd.

PHP:
<?php

function getBrowser() {
  $useragent = $_SERVER['HTTP_USER_AGENT'];
  $browser = explode("/", $useragent);
  $name = explode(" ", $browser[3]);
  switch ($name[1]) {
    case "Safari":
      $style = "safari.css";
    break;
    default:
      $style = "default.css";
    break;
  }
  return $style;
}
?>
Zoiets bedoel je? Je kunt dus extra cases aanmaken voor de browsers. Ik heb hem hier even getest met Safari dus vandaar dat ik weet dat die goed werkt.

Onder $name[0] staat het versienummer van mijn browser maar die is niet van belang voor Safari, waarschijnlijk wel voor IE :)

Vervolgens doe je
PHP:
<?php
// functie hier plaatsen
?>
<html>
<head>
  <link rel="stylesheet" href="<?= getBrowser(); ?>" type="text/css" />
</head>
 
Laatst bewerkt:
Ja dit is wat ik bedoel. Die functie in php ben ik tegengekomen, maar bleek volgens veel mensen niet veilig. Ik heb dus een javascript die het wel doet, dus ik stuur die javascript-string naar php (index.php?b=IE7) --> $_SESSION['b'] = $_GET['b'];

In mijn php-bestand staat ongeveer dit:

PHP:
<?php
session_start();
if(!$_SESSION['b']) { // Als de browser nog niet bekend is...
  if(!empty($_GET['b'])) { // Kijken of javascript de browser heeft "gestuurd"
    $_SESSION['b'] = $_GET['b']; // Browser bekend maken in deze sessie
    header("Location: ../?"); // Herladen
  }
  else {
    // Code javascript
  }
}
else {
 // Site met css van browser
}
?>

Het probleem is, dat IE6 en ouder niet door die sessie heenkomen... Hij maak $_SESSION['b'] wel aan, dit heb ik gecontroleerd, maar als ik de pagina herlaad weet ie het niet meer... dit is mijn probleem... iemand een oplossing??
 
Laatst bewerkt:
Vreemd dat die functie bekend is, die heb ik net zelf gemaakt :rolleyes:

Zet eens op de pagina's waarin je de sessie wilt gebruiken bovenaan
PHP:
// Eerst session_start natuurlijk
session_start();
(isset($_SESSION['b']) ? echo $_SESSION['b'] : echo 'Sessie niet bekend!');
Het kan niet zo zijn dat de sessie wel wordt aangemaakt maar dat je hem daarna niet aan kunt roepen.

Overigens ben je nu best dubbel bezig, als ik het zo bekijk moet er in het onderste gedeelte nog weer een check op de sessie worden uitgevoerd. Mijn code geeft alleen de locatie naar het juiste CSS bestand na alle checks. In jouw code zie ik dat niet terugkomen.
 
Bedankt voor de hulp, het probleem is al opgelost. Voor degene die willen weten hoe, ik heb MultipleIEs geïnstalleerd. Eerst had ik een standalone IE6, die ging raar om met sessies. Op de site stond dat er idd ook een probleem was met sessies, maar dat hadden ze al opgelost, dus nu werkt het gewoon super :)
Link MultipleIEs: http://tredosoft.com/Multiple_IE :thumb:

Gr. en bedankt! :D

Tim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan