Изменить местоположение, если POST 0 - PullRequest
0 голосов
/ 03 октября 2011

Я получил эту переменную:

$page = (int) $_REQUEST['page'];

Мне нужны некоторые действия, основанные на вышеуказанном запросе. Это будет использоваться для сценария нумерации страниц.

Я имею в виду:

, если $page равно 0, сценарий перенаправит пользователя на другую подстраницу. Хитрость заключается в том, что мне нужно перенаправить пользователя ТОЛЬКО в случае, если в его URL указан &page=0, в противном случае он ничего не сделает.

Я пробовал это:

if( $page == 0 ) {
header("Location; xxxx");
}

но он перенаправляет пользователя, даже если он не указал (или POST страницу).

Итак, как я могу это сделать?

Ответы [ 5 ]

3 голосов
/ 03 октября 2011

Это проверяет, действительно ли он установлен пользователем, и это 0

if (isset($_REQUEST['page']) && $_REQUEST['page'] === 0)
{
    header('Location: xx');
}

Do 3: ===, чтобы проверить, является ли значение на самом деле числом 0

2 голосов
/ 03 октября 2011

используйте строгое сравнение:

if ($page === "0"){
...
}

обновлен.

ну я бы был более строгим. Я бы использовал следующий подход

if (isset($_POST["page"])){
   $page = (int) $_POST["page"];
   /* do you assumptions here. this will definitely work */
}
0 голосов
/ 06 декабря 2012

Измените точку с запятой на двоеточие.

header("Location; xxxx");

должно быть:

header("Location: xxxx");

Теперь дополнительная информация об операторах сравнения, поскольку я не согласен с @jancha ответом

===: ИСТИНА, если $ a равно $ b, и они одного типа.

==: ИСТИНА, если $ a равно $ b после жонглирования типа .

То же самое в JavaScript. Пример того, как это полезно, - когда вы хотите, чтобы другой код выполнялся для false / 0 и для неопределенного (скажем, для обработки ошибок), в этом случае мы можем сделать намного более простой тест.

$page = (int) $_REQUEST['page']; //this is the line to change

изменить на

//this way you don't need to type cast it (which is only supported with php5.3+)
$page = (isset($_REQUEST['page']) && is_numeric($_REQUEST['page'])) ? $_REQUEST['page']:0;
0 голосов
/ 03 октября 2011

Вы должны сравнить 0 как строковое значение, поэтому вы должны читать $page из $_REQUEST как строковое значение ...

<?php
 $page = $_REQUEST['page'];
 if( $page == "0" ) {
   header("Location: ./?did-it");
 }
?>

пс - я думаю Location; ...должно быть с двоеточием, как Location: ...

0 голосов
/ 03 октября 2011

См. array_key_exists :

array_key_exists($_REQUEST, 'page'); // returns false if no 'page' parameter supplied.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...