Hallo
ich habe z.b. 5 daten (name, alter, geschlecht, hobby und browser) diese werden jetzt übergeben und sollen in ein formular als value. Jedoch sind nur 5 von 10 möglichen daten vorhanden.
jetzt hab ich aber in meinem Formular
value="$abfrage[0] //Name
value="$abfrage[1] //hosengröße
value="$abfrage[2] //geschlecht
da ich ja die hosengröße nicht habe, erhalte ich ein "Notice: Undefined variable:" oder genau in diesem Fall wär es ein "Notice: Undefined offset:"
Wenn man jetzt ein formular mit "nur" 10 Felder hat, würde es ja noch gehen, jede ab zu fragen ob auch gesetzt wurde. Aber wenn es mehr als 15 oder 20 wären, würde das ja in perverser Arbeit ausarten jedes mal eine Abfrage ob inhalt da ist.
Soll man von daher solche ausgaben einfach ausgaben sein lassen oder eine funktion schreiben die $ausgabe[X] setzt falls nichts drin ist?
Ankündigung
Einklappen
Keine Ankündigung bisher.
wie wichtig ist Notice: Undefined variable:?
Einklappen
Neue Werbung 2019
Einklappen
X
-
wie wichtig ist Notice: Undefined variable:?
Stichworte: -
-
Meine läuft aufs selbe heraus, war vielleicht schlecht formuliert: Wenn man sich ertappt, dieselben Prüfungen immer und immer wieder zu coden, wird es Zeit, sein Übergabeprinzip zu überdenken, inwieweit man diesen Prozess dynamisch gestalten kann. Anlegen der Felder als Arrays und benutzen von Schleifen ist zumeist der übliche Ansatz.
-
Zitat von nikosch Beitrag anzeigenMerke: isset und empty sind eine unnütze Kombination. In diesem Fall hätte z.B. empty ausgereicht, das erzeugt nämlich auch keine Notice.
Zitat von robo47 Beitrag anzeigenSchau dir vielleicht mal Formular-Klassen und ähnliches an, da schlägst du oftmals viele fliegen mit einer Klappe, weil die automatisiert überprüfen ob alle Felder gesetzt sind und geben dir dann ein array zurück das du weiter-verarbeiten kannst, idealerweise direkt weitergeben an das passende Model oder die DB-Klasse um update/insert zu machen.
NOPE!
error-reporting sollte immer an bleiben!
Nur sollte man display_errors deaktivieren und dafür das logging (error_log) in eine datei aktivieren, weil nur so sieht man wie gut oder schelcht sich das system in der praxis schlägt und sieht Fehler oder eventuelle Sicherheitslücken.
Zur Performance all dieser notices/warnings etc:
How do NOTICES influence php-scripts performance ?
Super Idee. werd das auf jeden Fall im Lifesystem umsetzen
@nikosch: Ich habe deine Aussage persönlich genommen, da ich der Meinung bin, dass Wissen wichtiger ist als "clever sein".
Ich kann noch so clever sein, wenn man das Wissen um PHP nicht hat bringt mir das alles nichts. Von daher habe ich deine Aussage persönlich genommen.
PS: hier im Forum gibt es so viele Leute, die einfach mehr wissen, bessere techniken und viel viel mehr Erfahrung haben als ich. Aus diesem Grund wende ich mich auch mit solchen Fragen wie diese an dieses Forum um etwas zu lernen. Zudem habe ich nicht nach einer Lösung gefragt (kann mir mal einer machen) sondern habe erst gesagt was ich habe, dann was ich damit machen würde und habe dann gefragt was ihr davon haltet. Und robo gab mir die perfecte Antwort
Einen Kommentar schreiben:
-
Na da hast du ja nur glück, dass du Können, Logik, Ausdrucksweise und Intelligenz schon als Kind schaufelweise in dich hinein gestopft hast
Einen Kommentar schreiben:
-
In diesem Fall hätte z.B. empty ausgereicht, das erzeugt nämlich auch keine Notice.
Einen Kommentar schreiben:
-
Schau dir vielleicht mal Formular-Klassen und ähnliches an, da schlägst du oftmals viele fliegen mit einer Klappe, weil die automatisiert überprüfen ob alle Felder gesetzt sind und geben dir dann ein array zurück das du weiter-verarbeiten kannst, idealerweise direkt weitergeben an das passende Model oder die DB-Klasse um update/insert zu machen.
Zitat von PhillKill12 Beitrag anzeigenEDIT : genau, am besten per error_reporting(0); ausschalten
error-reporting sollte immer an bleiben!
Nur sollte man display_errors deaktivieren und dafür das logging (error_log) in eine datei aktivieren, weil nur so sieht man wie gut oder schelcht sich das system in der praxis schlägt und sieht Fehler oder eventuelle Sicherheitslücken.
Zur Performance all dieser notices/warnings etc:
How do NOTICES influence php-scripts performance ?
Einen Kommentar schreiben:
-
Zitat von nikosch Beitrag anzeigenJa so ist das in der Programmierung nunmal. Wenn Du nicht clever genug bist, solche Dinge so zu strukturieren, dass Du sie automatisiert abarbeiten kannst (Schleife) wirst Du das zig mal machen müssen. Da führt kein Weg dran virbei.
Einen Kommentar schreiben:
-
würde das ja in perverser Arbeit ausarten jedes mal eine Abfrage ob inhalt da ist.
Obwohl man Notices ausschalten kann, stellen diese in solchen Fällen undefinierte Programmzustände dar. Das kann im weiteren Programmfluss zu einem Logikfehler, einem fatalen Fehler (Division durch Null, Zugriff auf eine leere Dateiangabe) führen, aber auch gravierende Sicherheitsmängel erzeugen.
if (isset($_POST["variable"]) && !empty($_POST["variable"])) { ... }
Einen Kommentar schreiben:
-
also notice sind immer fehlermeldungen, die dir helfen dein Script, erstens mal richtig zu stellen, also dass du wohl immer alle Vars überprüft hast und andereseits sind sie ein sicherheitsrisiko, da man daraus inforationen gewinnen kann ... man sollte POST Variablen immer mit folgendem oder ähnlichem Syntax überprüfen :
PHP-Code:if (isset($_POST["variable"]) && !empty($_POST["variable"])) { ... }
EDIT :Im Lifesystem sollten Notices und Warnigs IMHO aber nicht angezeigt werden.
Einen Kommentar schreiben:
-
Grundsätzlich sollte dein Code wenn er ins Lifesystem geht frei von Notices und Warnings sein.
Denn diese sind in weiteren Sinne Fehler die trotzdem noch weiter verarbeitet werden können.
Im Lifesystem sollten Notices und Warnigs IMHO aber nicht angezeigt werden.
Zitat von SteiniKeule Beitrag anzeigenWenn man jetzt ein formular mit "nur" 10 Felder hat, würde es ja noch gehen, jede ab zu fragen ob auch gesetzt wurde. Aber wenn es mehr als 15 oder 20 wären, würde das ja in perverser Arbeit ausarten jedes mal eine Abfrage ob inhalt da ist.
Nachtrag:
Lol ich glaube ich habe eben von Birnen geredet und du nach Äpfeln gefragt.
Validieren musst du immer wenn du sauberen Code haben willst. Und wenns es 30Felder sind, dann musst du eben 30Felder validieren!
Einen Kommentar schreiben:
Einen Kommentar schreiben: