Avatar billede tubdk1983 Nybegynder
18. september 2011 - 18:00 Der er 9 kommentarer og
1 løsning

Hjælp til if og elseif

Hej eksperter.

Jeg får fejlen undefined index userlang linie 4 og 7, når jeg ikke har gemt en cookie, som om den første if sætning, bliver kørt trods det der ikke er nogen cookie.

Når der er en cookie virker det efter hensigten. Men det selvfølgelig meningen at den skal gå videre til min else sætning, når der ikke er en cookie.

Hvad gør jeg forkert?

<?php
if (isset($_COOKIE['userlang'])) {
   
    } if ($_COOKIE['userlang'] == 'da') {
        header("Location: da/da_home.php");

    } elseif ($_COOKIE['userlang'] == 'en') {
        header("Location: en/en_home.php");
       
} else {

    } if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 == 'da')) {
        header("location: da/da_home.php");
       
    } elseif (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 == 'en')) {
        header("location: en/en_home.php");
}
?>
Avatar billede tubdk1983 Nybegynder
18. september 2011 - 18:09 #1
Hvis jeg gør sådan her så får jeg bare en tom side og ingen header til nogen side. :(

<?php
if (isset($_COOKIE['userlang']))
   
    if ($_COOKIE['userlang'] == 'da') {
        header("Location: da/da_home.php");

    } elseif ($_COOKIE['userlang'] == 'en') {
        header("Location: en/en_home.php");
       
} else {

    if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 == 'da')) {
        header("location: da/da_home.php");
       
    } elseif (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 == 'en')) {
        header("location: en/en_home.php");
}}
?>
Avatar billede majbom Novice
18. september 2011 - 18:14 #2
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 == 'da')) {


skal være:

if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'da') {
Avatar billede tubdk1983 Nybegynder
18. september 2011 - 18:30 #3
Hej splazz, tak for input.

Nu virker det når der ikke er en cookie. Men ikke når der er en cookie? Jeg er forvirret.
Avatar billede hansepeter2 Nybegynder
18. september 2011 - 18:45 #4
Der er vist rod i dine tuborgklammer. En anden måde at bygge op på, så du undgår kode-gentagelser:

if(isset($_COOKIE['userlang'])){
    $userlang = $_COOKIE['userlang'];
}else{
    $userlang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}

if($userlang == 'da' || $userlang == 'en'){
    header("Location: $userlang/$userlang_home.php");
}else{
        header("Location: en/en_home.php");
}
Avatar billede tubdk1983 Nybegynder
18. september 2011 - 19:19 #5
Det virker nu og begge svar har hjulpet. Opret svar for point.

Tusind tak for hjælpen.
Avatar billede tubdk1983 Nybegynder
18. september 2011 - 19:57 #6
hansepeter:

når jeg bruger dit; header("Location: $userlang/$userlang_home.php");

så bliver adressen /da/.php, kan man ikke bruge $userlang lige efter hinanden mon?
Avatar billede hansepeter2 Nybegynder
18. september 2011 - 20:23 #7
Jeg kan godt se fejlen.

$userlang_home er et gyldigt variabelnavn i php, så det skal være:


header("Location: $userlang/{$userlang}_home.php")
Avatar billede tubdk1983 Nybegynder
18. september 2011 - 20:41 #8
Ksnon! Tak, læg et svar for point.
Avatar billede majbom Novice
19. september 2011 - 19:21 #9
svar :)
Avatar billede majbom Novice
20. september 2011 - 07:23 #10
skulle hansepeter2 ikke have haft halvdelen?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester