2010-08-31 8 views
0

Je suis essayé de if isset($_GET['whatever'])... avant le reste de mon instruction if. erreurs E_NOTICE sont à portée de main pour ainsi désactiver et pour $_POST les variables que je ai une solution dans mon script d'initialisation ..

$POST = (is_array($_POST) && count($_POST) > 0); 

Je trouve cela aide les scripts affichant auto aspect propre.

if ($POST) { 
    // now do something with $_POST... 
} 

Je ne sais pas comment faire dynamiquement si vous avez aucune idée de ce que la clé est? Quelqu'un peut-il aider à trouver une solution similaire pour les variables $_GET?

EDIT:

Je veux simplement if ($_GET['whatever'] == "whatever"); retourner false si ce n'est pas définie et aucune E_NOTICE erreurs.

EDIT:

Désolé si je suis pas clair, je suis à la recherche d'une solution pour $_GET ne $_POST -I que je utilise $_POST comme un exemple de ce que je souhaite réaliser.

+0

Votre question n'est pas claire, qu'attendez-vous? – Sarfraz

Répondre

10

Parfois j'utilise une fonction GET globale:

function GET($key, $default = null) { 
    return isset($_GET[$key]) ? $_GET[$key] : $default; 
} 
+0

Génial ... MERCI! Cela rendra le code beaucoup plus facile à lire. – Mikey1980

2

L'idée principale de tout ce gâchis est simple: chaque variable de votre programme doit être initialisée avant utilisation.
Ainsi, le mieux que vous puissiez faire est de placer toutes les variables centralisées, disons, tout en haut de votre script.

Mais il existe des cas différents. Pour le cas que vous avez publié, vous avez besoin d'aucun d'entre eux, mais

if ($_SERVER['REQUEST_METHOD'] == "POST") 
+0

désolé, je peux ne pas être clair .. Je ai une solution pour $ _POST mais besoin d'un pour $ _GET – Mikey1980

+0

+1 pour le 'chaque variable de votre programme doit être initialisé avant utilisation.' – robertbasic

+0

@ Mikey1980 en fait vous n'avez pas [bonne] solution pour $ _POST et vous n'avez pas le même problème avec $ _GET array lui-même, car il est déjà défini et est array. –

1

Vous pouvez faire une fonction pour le faire pour vous.

function getVar($item){ 
    return isset($_GET[$item]) ? $_GET[$item] : ''; 
} 

Ensuite, vous pouvez faire if(getVar('whatever') == "whatever").

-1

Lors de l'écriture de ces sortes de scripts, je le fais habituellement quelque chose comme ça en tête:

$submitted = isset($_POST['submit']) ? true : false; 
$username = isset($_POST['username']) ? $_POST['username'] : null; 
$password = isset($_POST['password']) ? $_POST['password'] : null; 
(etc.) 

Ensuite, lors du test des valeurs, il ressemble à quelque chose comme ceci:

if ($submitted) 
{ 
    if ($username && $password) 
    { 
     // do stuff with username and password including testing their values 
    } 
} 

Il semble travailler plutôt bien pour moi.

+0

vous écrivez une ligne de code pour vérifier chaque variable, qu'elle soit définie ou non, pourquoi ne pas appeler une fonction comme d'autres l'ont suggéré? –

0

simple, je pense que vous voulez vérifier si la valeur get est définie alors besoin de faire l'étape suivante, autrement, ne différent

J'aime la première réponse, mais besoin de vérifier des thats si cela fonctionne pour vous

si (isset ($ _ GET [ 'tout']) { if ($ _GET [ 'tout'] == "whatever") {// faire le reste } else { // font le reste } }

espérons-le ayez de l'aide si ce que je pense est votre besoin

1

Voici deux méthodes. Une troisième option que je peux penser est de rendre le $ _GET dans sa propre classe. La surcharge de PHP est un truc pratique pour faire cela.

http://php.net/manual/en/language.oop5.overloading.php

Je ne me sentais pas comme écrire un exemple démontrant en cela. :)

+0

Je me suis toujours demandé comment créer dynamiquement des noms de variables .. travail impressionnant – Mikey1980

+0

Merci! Je recommanderais également que dans le premier exemple, vous appeliez une sorte de classe de nettoyage à l'intérieur de foreach, alors que dans le second exemple, vous le feriez juste avant de lancer un objet. – LLBBL

2

déjà répondu, mais comme il n'a pas été mentionné, essayez aussi:

$var = filter_input(INPUT_GET, 'varname'); 

qui renverra nulle si elle n'existe pas, sans les avis de tableau ennuyeux, et les filtres aussi mauvais potentiel des choses de diverses manières. Voir aussi: http://www.php.net/filter

+0

merci, je vais devoir jouer avec celui-là un peu n'est pas clair comment je l'utiliserais dans une déclaration if .. néanmoins, je suis curieux d'apprendre que fn – Mikey1980

0
  • court
  • aucun avis

    $key = &$_POST['key'];

De cette façon (dans la fonction), il est depracted, et indique l'erreur:

function f($s){} 
f(&$_POST['key']); 

Fatal error: Call-time pass-by-reference has been removed