2016-05-07 5 views
0

Я пишу довольно простой скрипт, который использует параметр GET для определения переменной в скрипте. Поэтому в начале скрипта я проверяю, что параметр GET существует и что он не пуст (во избежание ...page.php?param=).

Я написал этот кусок кода (параметр называется a):

if (!isset($_GET['a']) || empty($_GET['a'])) { 
    header("Location: https://..."); // redirect to home page 
    die(); 
} 

И это работает, когда нет параметра GET на всех, но если есть либо ?a или ?a=, то страница просто пусто, хотя я добавляю echo "some text";

Я не совсем понимаю, что происходит. Может ли кто-нибудь объяснить это мне?

Спасибо :-)

EDIT: здесь весь код страницы:

<?php 

if (!isset($_GET['a']) || trim($_GET['a']) == '' || $_GET['a'] == NULL) { 
    header("Location: https://google.com"); 
    exit(); 
} 

echo "hello"; 

Так что я должен либо перенаправить на Google.com или распечатать «привет», но ничего из этого не происходит.

+0

Не могли бы вы добавить код страницы с 'эхо«какой-то текст»;'? – Chris

+0

Вам нужно использовать '&&' вместо' || ' –

+0

Вместо' die(); ', используйте' exit(); 'после' header (...); 'вызов функции. –

ответ

2

пустая страница является классическим примером ошибки PHP. Вам нужно настроить и use PHP error logging facility так:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

На самом верху страницы.

переписав свою страницу Я хотел бы сделать это:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
if (!isset($_GET['a']) || is_null($_GET['a'])) { 
    header("Location: https://google.com"); 
    exit(); 
} 

echo "hello"; 
-1

попробовать

if (!isset($_GET['a']) || trim($_GET['a']) == "") { 

проверьте в инструкции к пустому http://php.net/manual/en/function.empty.php

+0

В руководстве указано, что пустая строка ('' '') считается пустой и должна возвращать 'true'. Это то, что я хочу, поэтому почему бы не использовать 'empty()'? – Jeahel

+0

http://php.net/manual/en/function.empty.php – MrGapo

-1

Попробуйте это:

if (!isset($_GET['a']) || trim($_GET['a']) == '' || $_GET['a'] == NULL) { 
    header("Location: https://www.google.com"); // redirect to home page 
} 
+0

Это не работает, и я не понимаю, почему 'empty' не в порядке. Разве это не должно проверять, что вы попросили меня попробовать? Я также добавил весь код страницы в своем первом сообщении. – Jeahel

+0

Я уже проверил его. Работает на меня. –

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