2009-07-16 19 views
2

Ich habe diesen Code und es gibt mir einen undefinierten Fehler, wenn Land keine Variable in der URL ist. Ich hatte dieses Problem nie zuvor, also hat es offensichtlich etwas mit Servereinstellungen zu tun, aber ich möchte diese lieber nicht ändern, da dies wahrscheinlich aus Sicherheitsgründen geschieht. Ich habe Google durchsucht und kann die Problemumgehung nicht finden, obwohl ich mir sicher bin, dass es offensichtlich ist!PHP Undefined Index

$country = $_GET['country']; 

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

Antwort

14

sollten Sie die folgende Methode verwenden:

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

Eigentlich denke ich, dass Sie wollen, wenn (! Isset (...)) { –

+0

sicher, das war Tippfehler. Danke Thomas – SilentGhost

+0

Und behoben. +1. :) –

-2

Gerade Änderung:

$country = $_GET['country']; 

Um dies:

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

'@' ist ein Operator, der Fehler Ausgang entfernen.

+9

das ist der schlechteste Ratschlag, den man geben könnte – SilentGhost

+0

In diesem Fall ist es in Ordnung, denn es gibt einen Scheck gleich nach. – FWH

+0

mit @ Fehler Unterdrücker ist ziemlich ein stinkender Code Geruch, lesen Sie über Code Gerüche auf SO – markus

4

Mit isset können Sie überprüfen, ob die Variable existiert (wenn nicht, geben wir ihr den Wert false).

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

"Undefined index" bedeutet dieses Element nicht in dem Array vorhanden sind. Ihr Server ist wahrscheinlich so eingestellt, dass er diese Fehler meldet, während Ihr System dies bisher nicht war. Überprüfen Sie, ob das Element existiert, bevor Sie darauf zugreifen.

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

Sie sollten wahrscheinlich überprüfen, ob $ _GET ['country'] gesetzt ist. Ich würde den gesamten Codeblock, den Sie gepostet haben, in eine if-Anweisung umbrechen, die prüft, ob das Feld "country" unter Verwendung der isset-Funktion gesetzt ist.