Fehlermeldung von PHP
kerstel
- php
Hi,
ich habe vorhin mein Laptop (win2k) neu aufgezogen, und dabei die neuste PHP (4.3.4) installiert sowie den Zend Optimizer.
Wenn ich aber nun meine Script ausführe, bekomme ich bei Globalen Variablen ($_GET, $_POST) eine Fehlermeldung:
Undifined Index: VARIABLE in Line xx.
Bei normalen Variablen bekomm ich auch eine, die ich aber gerade nicht weiß :)
In der php.ini hab ich register_globals auf on und off gestellt, hat aber nix gebracht.
Hat jemand ne Idee wo die Fehler herkommen?
Gruß
Kerstel
Moin!
Undifined Index: VARIABLE in Line xx.
Was'n das für eine Meldung? Die kommt so garantiert nicht.
Bitte mal _vollständig_ Copy&Paste machen.
- Sven Rautenberg
Hi,
Undifined Index: VARIABLE in Line xx.
Was'n das für eine Meldung? Die kommt so garantiert nicht.
Undifinied Index: login in c:\webs\produs\index.php on Line 20
So steht sie da. In Linie 20 steht die Variable $_GET["login"]:
if ($_GET["login"]==1) {
Gruß
Kerstel
Moin!
Was'n das für eine Meldung? Die kommt so garantiert nicht.
Undifinied Index: login in c:\webs\produs\index.php on Line 20
Steht davor nicht vielleicht zufällig "Notice:"? Und steht da tatsächlich "Undifined" - oder vielleicht doch "Undefined"?
Du tippst die Meldung ab, aber nicht buchstabengetreu. Und nicht komplett.
Aber immerhin sehe ich dein Problem.
So steht sie da. In Linie 20 steht die Variable $_GET["login"]:
if ($_GET["login"]==1) {
Wenn im Array $_GET kein Index "login" definiert ist, kommt diese Notice. Das ist ein Hinweis, um Programmierfehler zu vermeiden, der sich abschalten läßt. Sollte in der php.ini dokumentiert sein.
Aber da es schöner ist, notice-frei zu programmieren:
if (isset($_GET['login']) && ($_GET['login']==1)) {
Wenn die Variable nicht gesetzt ist (weil sie nicht existiert), wird gar nicht erst versucht, ihren Inhalt mit 1 zu vergleichen.
Läßt sich möglicherweise verkürzen zu:
if (isset($_GET['login']))
wenn es nur darauf ankommt, dass die Variable gesetzt ist, aber nicht, ob 1 oder ein anderer Wert drin vorkommt.
- Sven Rautenberg
Hello,
Läßt sich möglicherweise verkürzen zu:
if (isset($_GET['login']))
wenn es nur darauf ankommt, dass die Variable gesetzt ist, aber nicht, ob 1 oder ein anderer Wert drin vorkommt.
Spannend ist, was rauskommt, wenn da jemand schreibt:
www.domain.tld/?login=false;
oder auch mal
www.domain.tld/?login=0;
Scheint mir sowieso ein Fall für 'ne Sicherheitsdiskussion zu sein.
Grüße
Tom
Hi,
Scheint mir sowieso ein Fall für 'ne Sicherheitsdiskussion zu sein.
login wird nur Übergeben um die $_POST Daten zu prüfen
Gruß
Kerstel
Hello,
Scheint mir sowieso ein Fall für 'ne Sicherheitsdiskussion zu sein.
login wird nur Übergeben um die $_POST Daten zu prüfen
Versteh ich jetzt nicht. $_POSTm und $_GET sind ja verschiedene Schuhe. Das PHP trotz $_SERVER["REQUEST_METHOD"] == "POST" noch Get-Parameter zur Verfügen stellen kann, ist auch bekannt.
Aber POST-Parameter könnten doch in sich selbst schlüssig sein. Erklär soch mal, was Du da machst.
Wissbegierige Grüße
Tom
Hi,
Aber POST-Parameter könnten doch in sich selbst schlüssig sein. Erklär soch mal, was Du da machst.
Was ich mache hat eigentlich nichts mit meiner ursprünglichen Frage zu tun, aber naja.
Es ist ein Login feld. Wenn das Formular abgeschickt wird wird $_GET["Login"]==1 übergeben, damit das Script weiß, es hat ein Login versuch stattgefunden. Erst dann werden die Übergebenen Formularfelder ($_POST) mit der Datenbank abgeglichen.
Jaja, ich weiß man kann es auch anders, besser, einfacher oder was auch immer machen.
Gruß
Kerstel