2009-07-16 5 views
2

J'ai ce code et il me donne une erreur non définie si le pays n'est pas une variable dans l'URL. Je n'ai jamais eu ce problème auparavant, donc c'est évidemment quelque chose à voir avec les paramètres du serveur, mais je préfère ne pas les modifier car cela est probablement fait pour des raisons de sécurité. J'ai cherché sur Google et je n'arrive pas à trouver la solution, bien que je sois sûr que c'est évident!PHP Undefined Index

$country = $_GET['country']; 

    if(!$country){ 
     $incoming = $outgoing = $sms = $free = "---"; 
    } else { 
     get_rates($country); 
    } 

Répondre

14

vous devez utiliser l'approche suivante:

if (!isset($_GET['country'])) { 
    $incoming = $outgoing = $sms = $free = "---"; 
} else { 
    get_rates($_GET['country']); 
} 
+1

En fait, je pense que vous voulez si (! Isset (...)) { –

+0

sûr, c'était une faute de frappe. Merci Thomas – SilentGhost

+0

Et corrigé. +1 :) –

-2

Tout changement:

$country = $_GET['country']; 

à ceci:

$country = @$_GET['country']; 

'@' est un opérateur qui supprime la sortie d'erreurs.

+9

c'est le pire conseil que l'on puisse donner – SilentGhost

+0

Dans ce cas, c'est correct car il y a une vérification juste après. – FWH

+0

en utilisant @ erreur supresseur est tout à fait une odeur de code puant, lire sur le code sent sur SO – markus

4

isset vous permet de vérifier si la variable existe (sinon nous lui donnons la valeur false).

$country = isset($_GET['country'])? $_GET['country'] : false; 
2

"Undefined index" signifie que l'élément n'existe pas dans le tableau. Votre serveur est probablement configuré pour signaler ces erreurs, alors que votre système ne l'était pas. Vérifiez si l'élément existe avant d'y accéder.

$country = null; 
if (!empty($_GET['country']) { 
    $country = $_GET['country']; 
} 
1

Vous devriez probablement vérifier si $ _GET ['country'] est défini. J'envelopperais le bloc de code entier que vous avez posté dans une instruction if qui vérifie si le champ de pays est défini, en utilisant la fonction isset.