Browser probleem
Met de Chrome browser werkt het script wel, maar met Internet Explorer niet.
Als ik op een vlag klik verandert de taal wel bij de Chrome browser, maar dit gebeurd niet met de Internet Explorer.
Heeft iemand een idee waar dit aan kan liggen?
Met vriendelijke groet,
Levy
Wat is de code die je gebruikt om de keuze te verwerken? Gezien het een imput type image is kan het daar heel goed zitten in een verschil tussen de elementen die verschillende browsers doorsturen.
Bedankt voor uw snelle reactie,
De code is:
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?PHP
// De gebruiker heeft zijn voorkeur veranderd door een taal te kiezen uit
// het menu, en op de knop te drukken
if (isset ($_POST['kiezen']))
{
# Cookie met de gekozen taal met de duur van 1 jaar aanmaken
setcookie ("taal", $_POST['taalkeuze'], time()+60*60*24*7*52);
# De pagina moet gerefreshed worden voordat de cookie goed werkt bij een $_POST
header("Refresh:0");
}
// Heeft de gebruiker nog geen voorkeur-cookie? Maak dan een cookie aan
// met de nederlandse taal
if (!isset ($_COOKIE['taal']))
{
# Cookie met de nederlandse taal met de duur van 1 jaar aanmaken
setcookie ("taal", "nederlands", time()+60*60*24*7*52);
}
// Als de cookie wel is gezet, maar niet geldig is, maak dan een nieuwe
// cookie aan met de nederlandse taal
elseif (!in_array ($_COOKIE['taal'], $aTalen))
{
# Cookie met de nederlandse taal met de duur van 1 jaar aanmaken
setcookie ("taal", "nederlands", time()+60*60*24*7*52);
}
// De cookie is nu hoe dan ook geldig, en kan gebruikt worden
else
{
# Include de gekozen (indien nodig: -aangewezen) taal
include ("talen/" . $_COOKIE['taal'] . ".lang.php");
}
?>
// De gebruiker heeft zijn voorkeur veranderd door een taal te kiezen uit
// het menu, en op de knop te drukken
if (isset ($_POST['kiezen']))
{
# Cookie met de gekozen taal met de duur van 1 jaar aanmaken
setcookie ("taal", $_POST['taalkeuze'], time()+60*60*24*7*52);
# De pagina moet gerefreshed worden voordat de cookie goed werkt bij een $_POST
header("Refresh:0");
}
// Heeft de gebruiker nog geen voorkeur-cookie? Maak dan een cookie aan
// met de nederlandse taal
if (!isset ($_COOKIE['taal']))
{
# Cookie met de nederlandse taal met de duur van 1 jaar aanmaken
setcookie ("taal", "nederlands", time()+60*60*24*7*52);
}
// Als de cookie wel is gezet, maar niet geldig is, maak dan een nieuwe
// cookie aan met de nederlandse taal
elseif (!in_array ($_COOKIE['taal'], $aTalen))
{
# Cookie met de nederlandse taal met de duur van 1 jaar aanmaken
setcookie ("taal", "nederlands", time()+60*60*24*7*52);
}
// De cookie is nu hoe dan ook geldig, en kan gebruikt worden
else
{
# Include de gekozen (indien nodig: -aangewezen) taal
include ("talen/" . $_COOKIE['taal'] . ".lang.php");
}
?>
Toevoeging op 09/04/2018 18:43:53:
Ja, het klopt dat het aan de image ligt.
Als ik een option value gebruikt (nederlands en engels) en een keuze maak met een button, dan doet het script het wel.
Met vriendelijke groet,
Ter
En om deze reden controleer je of de request method post is en niet of een bepaalde knop geset is. In IE wordt uit mijn hoofd alleen de kliklocatie doorgestuurd van image buttons, in de vorm van "kiezen_x" en "kiezen_y".
Misschien is het wel mogelijk met een image om de waarden van kiezen door te sturen met een IE.
Met vriendelijke groet,
Ter
Code (php)
1
<input type="image" width="134" height="120" align="left" src="images/vlag/Nederland_250.png" name="kiezen" alt="Kies voor Nederlands" type="submit" value="nederlands" />
type kan niet 2 zaken zijn of image of submit
chrome stopt volgens mij bij het 1° type en ie bij het laatste
w3school schrijft bij de tryit het volgende:
<p><b>Note:</b> The input type="image" sends the X and Y coordinates of the click that activated the image button.</p>
Jan
<input type="image" width="134" height="120" align="right" src="images/vlag/United-Kingdom_250.png" name="kiezen" alt="Kies voor Engels" value="engels" />
Nu heb ik alleen de type image in het script.
Maar de waarden van de talen worden nog niet verandert in IE.
Toevoeging op 09/04/2018 19:00:40:
<form action="" method="post">
<input type="hidden" name="taalkeuze" value="engels"></input>
<input type="submit" width="134" height="120" align="right" src="images/vlag/United-Kingdom_250.png" name="kiezen" alt="Kies voor Engels" value="engels" />
</form>
Nu kan ik ook in IE de taal veranderen.
Maar nu zijn het buttons, graag wil ik dat het image(vlaggen) worden.
Met vriendelijke groet,
Ter
Omdat je niet op kiezen_x controleert.
Toevoeging op 09/04/2018 19:08:12:
Ik snap wat je ongeveer bedoeld. kiezen_x is Nederlands en kiezen_y is Engels. Dat Chrome daar geen onderscheid in maakt en IE wel.
Toevoeging op 09/04/2018 19:56:50:
<form action="" method="post">
<input type="hidden" name="taalkeuze" value="nederlands"></input>
<button type="submit" name="kiezen" value="nederlands"><img src="images/vlag/Netherlands.png" alt="SomeAlternateText"></button>
Nee, dat is niet wat ik bedoel. Image buttons krijgen namen door als kiezen_x en kiezen_y. en niet gewoon kiezen in sommige browsers. Verander dus regel 4 in je voorbeeld in if (isset($_POST['kiezen_x'])).
Het klopt, alleen de kiezen verandert in kiezen_x.
Nu doen beide images het in verschillende browsers.
Bedankt!
Met vriendelijke groet,
Ter
Het cookie is trouwens alleen geldig in het huidige pad, misschien moet je nog even de vierde parameter invullen, vooral als je site straks meer (sub)directories heeft.
Edit:
Wat berichten opgeruimd, en de topicstarter om opheldering gevraagd.
Ter M op 09/04/2018 18:40:04:
Klopt dit?
Als je script dom opgezet is wel. Door output buffering te gebruiken kun je immers headers blijven sturen nadat je output hebt verzonden. Moet je uiteraard geen ob_flush() in te tussentijd gebruiken.