2016-08-24 2 views
0
<?php 
$a = array('f-stat,porcelain mask'=>'jay azima','jay azima,oil painting'=>'japanese doll'); 
$msg="We can't recommend any items to you."; 
foreach($a as $k=>$v) 
{ 
    if($_GET['items']==$k) 
    { 
    header("location: hola.php?tequilla=".$v); 
    } 

} 
header("location: hola.php?tequilla=".$msg); 
?> 

То, что я пытался сделать это, если строка из $_GET['items'] совпадает с любым из ключевых в $a массиве, он будет перенаправлен на hola.php с $v значением. В противном случае передается $msg string. Но проблема даже в том случае, если совпадают $k и $_GET['items'], последняя функция заголовка выполнена с $msg значением. Также, если я удаляю последнюю функцию заголовка, функция заголовка внутри цикла работает нормально.с помощью функции заголовка внутри цикла

+2

Вам необходимо 'выход();' после 'header', чтобы сценарий Безразлично» t продолжать работать. –

+0

Я предпочитаю 'die();' ... Я могу быть таким же болезненным, но это то же самое. – CD001

+0

Кроме того, вы можете использовать 'var_dump ($ _ GET ['items']);' и 'trim()', чтобы убедиться, что у вас нет пробелов или для подсчета символов, когда вы сравниваете строку в условии if. –

ответ

0

Использование exit() останавливает выполнение сценария. Это не будет перенаправлено на второй заголовок.

<?php 
    $a = array('f-stat,porcelain mask'=>'jay azima','jay azima,oil painting'=>'japanese doll'); 
    $msg="We can't recommend any items to you."; 

    foreach($a as $k=>$v) 
    { 

     if($_GET['items']==$k) 
     { 
     header("location: hola.php?tequilla=".$v); 
     exit(); // < this will stop the script before the 2nd header() 
     } 

    } 

    header("location: hola.php?tequilla=".$msg); 
    exit(); 

    ?> 
+0

проблема сохраняется. Является ли даже нормально использовать функцию заголовка внутри цикла? Я делаю это неправильно? – Azima

+0

Все в порядке. Вы проверили, что значение $ _GET ['items'] соответствует $ k? – Manish

+0

да .. я убедился. :) – Azima

0

попробовать это

<?php 
    $a = array('f-stat,porcelain mask'=>'jay azima','jay azima,oil painting'=>'japanese doll'); 
    $location = ''; 
    $msg="We can't recommend any items to you."; 
    foreach($a as $k=>$v){ 
    if($_GET['items']==$k){ 
     $location = "hola.php?tequilla=".$v; 
    } 
    } 
    if($location != ''){ 
    $location = "hola.php?tequilla=".$msg; 
    } 
    header("location: ".$location); 
    exit(0); 
?> 
+0

проблема сохраняется. Является ли даже нормально использовать функцию заголовка внутри цикла? Я делаю это неправильно? – Azima

1

Все код упрощен:

$a = array(
    'f-stat,porcelain mask'=>'jay azima', 
    'jay azima,oil painting'=>'japanese doll' 
); 
$v = !empty($a[$_GET['items']])? $a[$_GET['items']] : "We can't recommend any items to you."; 

header("Location: hola.php?tequilla=" . $v); 
die(); 
+0

Это лишний ';' преднамеренное после массива? Проблема все равно сохраняется. :( – Azima

+0

Нет, я удалил его. В чем проблема? –

+0

это сработало ... спасибо – Azima

Смежные вопросы