php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.01.2012, 10:17  
Erfahrener Benutzer
 
Registriert seit: 22.12.2009
Beiträge: 104
PHP-Kenntnisse:
Fortgeschritten
Emskopp befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Anweisung wird ignoriert

Hallo, ich habe ein kleines Problem mit einer Variable, wenn diese leer ist werden meine Anweisungen komplett ignoriert und er läuft den 2. if weiter, obwohl er dies ja nicht dürfte...

PHP-Code:
function anyfunction($bla
global ... ... ...

if (! isset ( 
$bla ) ) {
// dieses if wird komplett ignoriert weder "isset" noch auf "empty" durchläuft diese Abfrage einfach weiter und es kommt zu nem bösen SQL Fehler da "$bla = 0" ist. Es soll aber wenn kein $bla vorhanden ist, komplett alle "if´s" übverspringen

if($userid == 2) {
// Query durchlaufen
 
} else {
// tu etwas anderes
 
}



Geändert von Emskopp (22.01.2012 um 10:20 Uhr).
Emskopp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.01.2012, 10:22  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Wenn $bla = 0 dann ist sie ja nicht leer auch existieren tut sie! Sie hat eben dann den Wert 0 das sollte dir bewußt sein.

Wenn die Variable nicht existieren soll mußt du sie Löschen zb mit unset($bla)
Soll sie nur Leer sein dann mußt du ihr NULL zuweisen.

Mfg Splasch
splasch ist offline   Mit Zitat antworten
Alt 22.01.2012, 10:26  
Erfahrener Benutzer
 
Registriert seit: 22.12.2009
Beiträge: 104
PHP-Kenntnisse:
Fortgeschritten
Emskopp befindet sich auf einem aufstrebenden Ast
Standard

Also übergeben wird diese Funktion über einen Link

example.org/page=bla&run=function&id=25

so wäre alles in Ordnung, jedoch wenn ich diese URL als User manipuliere:

example.org/page=bla&run=function

Dann kommt es zu diesem Fehler, was ich natürlich vermeiden möchte. Ob ID=0 oder leer müsste ich testen, da in der DB das Feld Standard = 0 gesetzt werden würde.
Emskopp ist offline   Mit Zitat antworten
Alt 22.01.2012, 10:57  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von Emskopp Beitrag anzeigen
Also übergeben wird diese Funktion über einen Link

example.org/page=bla&run=function&id=25

so wäre alles in Ordnung, jedoch wenn ich diese URL als User manipuliere:

example.org/page=bla&run=function

Dann kommt es zu diesem Fehler, was ich natürlich vermeiden möchte. Ob ID=0 oder leer müsste ich testen, da in der DB das Feld Standard = 0 gesetzt werden würde.
Hier fehlt also Id nicht Bla. Da ich davon mal ausgehe das Id immer eine Nummer sein soll kannst du das auch prüfen. Zb mit is_numeric() entuell dann noch das sie größer als 0 ist

Somit hast du ungültige Werte abgefangen.
splasch ist offline   Mit Zitat antworten
Alt 22.01.2012, 11:00  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Emskopp Beitrag anzeigen
Hallo, ich habe ein kleines Problem mit einer Variable, wenn diese leer ist werden meine Anweisungen komplett ignoriert und er läuft den 2. if weiter, obwohl er dies ja nicht dürfte...
Gesetzt ist die Variable, sonst würde PHP meutern, weil ein Parameter fehlt.

Aber Du willst ja eigentlich prüfen, ob sie leer ist:
PHP-Code:
function anyfunction($bla) {
  global ... ... ...

  if (empty ( 
$bla ) ) {
...
  }

http://php.net/empty

Rückgabewerte

Gibt FALSE zurück, wenn var einen nicht-leeren und von 0 verschiedenen Wert hat.

Zitat:
Folgende Dinge zählen als nicht mit einem Wert belegt:

"" (eine leere Zeichenkette)
0 (0 als Integer)
0.0 (0 als Fließkommazahl)
"0" (0 als Zeichenkette)
NULL
FALSE
array() (ein leeres Array)
var $var; (in einer Klasse deklarierte, aber nicht belegt Variable)
  Mit Zitat antworten
Alt 22.01.2012, 11:11  
Erfahrener Benutzer
 
Registriert seit: 22.12.2009
Beiträge: 104
PHP-Kenntnisse:
Fortgeschritten
Emskopp befindet sich auf einem aufstrebenden Ast
Standard

Danke dir Meikel,

splasch hat soeben den Key geliefert, prüfen auf is_numeric war der Key. Ob ID=0 wird vor Übergabe an die Funktion geprüft, sodass die Funktion niemals laufen könnte wenn ID=0 wäre.

Hab nun nochmals is_numeric in der Funktion selbst geprüft und läuft nun tadellos, leer oder "0" wird nun ignoriert. Danke für die Hilfe. War gestern so guter Dinge alles lief, bis auf dieses kleine Codesnippet, war schon am verzweifeln
Emskopp ist offline   Mit Zitat antworten
Alt 23.01.2012, 17:33  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von Emskopp Beitrag anzeigen
Ob ID=0 wird vor Übergabe an die Funktion geprüft, sodass die Funktion niemals laufen könnte wenn ID=0 wäre.
Das Prüfen gültiger Parameter muss immer vollständig innerhalb der Funktion geschehen. Ein anderer Programmierer könnte sonst auf die Idee kommen die Funktion anders zu verwenden als erwartet.

(und ob in X-Jahren immer noch du an dem Code sitzt ist i.d.R. nicht gewährleistet, auch privat erstellter Code kann unter Umständne mal weitergereicht werden).
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
switch case Anweisung Mike30 PHP Einsteiger 9 04.09.2011 00:30
Auf bestimmte Array Variable in SELECT anweisung zugreifen h.humpol Datenbanken 2 21.08.2011 12:51
anweisung in while-schleife wird ignoriert konfusius PHP Einsteiger 11 05.03.2011 09:21
Grundlegende Frage zu Funktionen mit "return" Anweisung 7three PHP Tipps 2010 12 11.04.2010 18:56
frage zur if anweisung bajo PHP Tipps 2010 6 23.02.2010 08:14
if anweisung wird nur local ausgefürt online nicht Funnycomp PHP Tipps 2009 2 10.01.2010 12:48
Error bei else if Anweisung Quert PHP Tipps 2009 3 11.09.2009 20:08
Where Anweisung vor GROUP BY einbinden. Kronic73 Datenbanken 6 06.03.2009 09:40
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
Teile der Suchanweisung werden ignoriert PHP Tipps 2005-2 1 08.09.2005 16:36
XML ignoriert Entitäten stefanjann PHP-Fortgeschrittene 1 11.08.2005 20:03
if anweisung innerhalb von HEREDOC-Operator möglich? PHP Tipps 2005 11 16.05.2005 17:58
memory_limit wird plötzlich ignoriert PHP Tipps 2005 3 28.01.2005 18:14
[Erledigt] switch anweisung PHP-Fortgeschrittene 9 17.11.2004 16:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php if befehl ignoriert

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum