2016-05-07 2 views
0

J'écris un script assez simple qui utilise un paramètre GET pour définir une variable dans le script. Donc au début du script, je vérifie que le paramètre GET existe et qu'il n'est pas vide (pour éviter ...page.php?param=).

j'ai écrit ce morceau de code (le paramètre est nommé a):

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

Et ça marche quand il n'y a pas de paramètre GET du tout, mais s'il y a soit ?a ou ?a=, la page est juste vide, même si j'ajoute un echo "some text";

Je ne comprends pas vraiment ce qui se passe. Quelqu'un pourrait-il me l'expliquer?

Merci :-)

EDIT: voici la page de code tout:

<?php 

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

echo "hello"; 

donc je devrais soit rediriger vers Google.com ou imprimer "bonjour" mais rien de tout cela se produit.

+0

Pouvez-vous ajouter le code de la page avec le 'echo "du texte";'? – Chris

+0

Vous devez utiliser '&&' au lieu de '||' –

+0

Au lieu de 'die();', utilisez 'exit();' après 'header (...);' appel de fonction. –

Répondre

2

Une page blanche est un exemple classique d'une erreur de PHP. Vous devez configurer et use PHP error logging facility comme ceci:

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

En haut de votre page.

Réécriture votre page Je ferais ceci:

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

essayer

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

vérifier le manuel vide http://php.net/manual/en/function.empty.php

+0

Le manuel indique qu'une chaîne vide ('" "') est considérée comme vide et devrait renvoyer 'true'. C'est ce que je veux, alors pourquoi ne pas utiliser 'empty()'? – Jeahel

+0

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

-1

Essayez ceci:

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

Cela ne fonctionne pas et je ne vois pas pourquoi 'empty' n'est pas OK. N'est-ce pas censé vérifier ce que tu m'as demandé d'essayer? J'ai également ajouté le code de la page entière dans mon premier message. – Jeahel

+0

Je l'ai déjà vérifié. Travaille pour moi. –