2012-01-23 8 views
-4

Прошу прощения за глупые вопросы, но я попытался изучить это и не смог его найти.Другие проблемы с файлами cookie, php

На этот раз я хочу, чтобы иметь возможность проверять _POST на массив, прежде чем решить, что это нормально, чтобы установить cookie. Вот мой фрагмент.

<?php 
header('Location: http://www.site.com/ler.php') ; 
?> 
<?php 
setcookie("choice1","true",time()+20); 
?> 


<?php 

$match_id = strtoupper($_POST["arr"]); 


//var_dump(implode($_POST)); 


$bArray = array(
"A"=>"1", 
"B"=>"2", 
"C"=>"3", 
"D"=>"4", 
"ETC"=>"5"); 

мне нужен массив и переменную необходимо установить перед куки, потому что я хочу использовать array_key_exists условными. Я попытался переключить порядок, но ничего не сделал. Я знаю, что это не заголовок, потому что другой код с файлами cookie и заголовками работает нормально. Есть идеи??

+2

Ваш вопрос может быть не глупым, но это определенно непонятно. Что вы пытаетесь достичь? – Gumbo

+0

Я пытаюсь установить файл cookie, но ТОЛЬКО, если все условия (значение $ _POST, находящееся в массиве как один из ключей, истинно) Моя проблема заключается в том, что это не похоже на настройку массива до того, как установлен файл cookie или разрешено, поэтому я не знаю, как сравнить его с допустимыми значениями. Все это cookie будет делать, это сообщить странице, на которую она перенаправляется, чтобы переданное значение было успешным. – user1159454

+0

Возможный дубликат [Заголовки уже отправлены] (http://stackoverflow.com/questions/8028957/headers-already-sent-by-php), если ваша фактическая проблема действительно является порядком утверждения. – mario

ответ

1

Не знаете, что вы здесь задаете, но ясно, что код, который вы представили, вероятно, не будет работать так, как вы ожидаете.

Вы выводите содержимое тела перед вызовом setcookie(). Поэтому, если у вас нет выходной буферизации, она будет терпеть неудачу. Установка времени истечения 20 секунд также является немой идеей - часы на стороне клиента вряд ли будут синхронизированы.

Также существует несколько браузеров, которые игнорируют все последующие заголовки после перенаправления. Кроме того, в зависимости от времени обработки некоторые браузеры откажутся от соединения после перенаправления - при отсутствии ignore_user_abort() это может привести к преждевременному завершению кода.

Кроме того, предположительно существует причина для разбора данных/установки cookie - как вы можете быть уверены, что это было выполнено до того, как будет обработан запрос переадресации из браузера?

Я хочу, чтобы иметь возможность проверить _POST против массива, прежде чем решить, что это нормально, чтобы установить куки

Ее очевидно, что код, который вы ввели ничего не проверять перед установкой куки - Почему вы включили его в свой вопрос?

1

проверить, установлена ​​ли переменная post array или нет.

if(isset($_POST['arr'])) 
{ 
if(in_array("value", $bArray) 
{ 
setcookie("choice1","true",time()+20); 
} 
} 
+0

Hey Naveen, спасибо, но то, что я пытаюсь сделать, это не просто принять его, если оно установлено, но если оно соответствует одному из значений массива. – user1159454

+0

Я обновил ответ –