empty preg_match ?!

Dazu reicht empty ^^,

das ist auch erfüllt, wenn die Variable nicht gesetzt ist...
Hm wenn dem wirklich so sein sollte, dann ist das reichlich unfein. Man sollte doch einen Unterschied zwischen einer nicht vorhandenen und einer leeren Variable machen. ;-]
 
Ja sollte man auch machen! Wenn error report an ist, dann meldet php auch immer "unknow index ..." wenn die Variable nicht gesetzt ist. Nur folgende Abfrage hat aber dann auch Sinn
Code:
if(isset($_POST['website']))&&!empty($_POST['website'])
Wenn man die ODER-Verknüpfung verwendet(s.o.), dann stellt der Parser fest, dass die Variable nicht gesetzt ist, greift aber trotzdem mit empty drauf zu(win-style ;) ). Überprüfe deine preg_match Bedingung .. (was soll eigentlich geprüft werden? ) im internet gibts genügend Beispiele , sodass du dir den notwendigen Syntax googlen kannst!

Mfg
 
SilentWarrior hat gesagt.:
Hm wenn dem wirklich so sein sollte, dann ist das reichlich unfein. Man sollte doch einen Unterschied zwischen einer nicht vorhandenen und einer leeren Variable machen. ;-]



Finde ich nicht...


Ist schließlich dafür da um zu überprüfen, ob Formulareingaben getätigt wurden und nicht um zu unterscheiden, ob überhaupt welche gesetzt wurden oder ob diese einen Inhalt haben...


MfG. xxenon

[EDIT]

Wenn man eine Unterscheidung treffen will, kann man ja isset benutzen, da spricht nichts dagegen...

Aber wenn (wie oben beschrieben) nur geprüft werden soll, ob eine Variable mit Inhalt vorhanden ist, ist empty ideal
[/EDIT]
 
Zuletzt bearbeitet:
Gumbo hat gesagt.:
Probier mal Folgendes:
PHP:
<?php
	[…]
	if( !isset($_POST['website']) || empty($_POST['website']) ) {
		echo 'fehler 1';
	} else {
		if( !preg_match('/[a-z0-9].[a-z0-9]/si', $_POST['website']) ) {
			echo 'fehler 2';
		}
	}
	[…]
?>
Allersings halte ich den regulären Audruck immernoch für nicht adäquat.


Ich habe es mit einer veränderten version dieses beispiels hinbekommen danke für alle sehr guten antworten :)
MfG Smeily
 
xxenon hat gesagt.:
Finde ich nicht...


Ist schließlich dafür da um zu überprüfen, ob Formulareingaben getätigt wurden und nicht um zu unterscheiden, ob überhaupt welche gesetzt wurden oder ob diese einen Inhalt haben...


MfG. xxenon

[EDIT]

Wenn man eine Unterscheidung treffen will, kann man ja isset benutzen, da spricht nichts dagegen...

Aber wenn (wie oben beschrieben) nur geprüft werden soll, ob eine Variable mit Inhalt vorhanden ist, ist empty ideal
[/EDIT]
Du kannst nicht auf Variablen zugreifen, die nicht gesetzt sind. Deshalb musst du immer mit isset prüfen, ob die Variable überhaupt gesetzt ist, bevor du mit Funktionen wie empty, etc. den Inhalt der Variablen überprüfen kannst. PHP gibt dir zwar nur eine Notice aus (warum sowas kein Error ist, frag ich mich schon manchmal), aber auch eine Notice ist ein Hinweis darauf, dass du etwas falsch gemacht hast.
 
Oliver Gringel hat gesagt.:
Du kannst nicht auf Variablen zugreifen, die nicht gesetzt sind. Deshalb musst du immer mit isset prüfen, ob die Variable überhaupt gesetzt ist, bevor du mit Funktionen wie empty, etc. den Inhalt der Variablen überprüfen kannst. PHP gibt dir zwar nur eine Notice aus (warum sowas kein Error ist, frag ich mich schon manchmal), aber auch eine Notice ist ein Hinweis darauf, dass du etwas falsch gemacht hast.

Hm... also ehrlich gesagt hab ich von Notices etc. keine Ahnung :rolleyes:

Aber müsstest du nicht auf Operatoren wie &&, || verzichten, wenn du verhindern willst, dass die Funktion mit der nicht-existenten Variable als Argument aufgerufen wird?

MfG. xxenon
 
Würden die logischen Operatoren weggelassen, wäre der Ausdruck syntaktisch nicht korrekt.
Bei dem von mir beschriebenen Beispiel wird der alternative Zweig bereits dann eingeschlagen, wenn der erste Teil des Ausdrucks unwahr ist; der Rest wird dann garnicht mehr berücksichtigt. Daher ist auch die Reihenfolge der einzelnen Teilausdrücke wichtig, da an dieser Stelle ein Script auch optimiert werden kann.
 
Gumbo hat gesagt.:
Würden die logischen Operatoren weggelassen, wäre der Ausdruck syntaktisch nicht korrekt.
Bei dem von mir beschriebenen Beispiel wird der alternative Zweig bereits dann eingeschlagen, wenn der erste Teil des Ausdrucks unwahr ist; der Rest wird dann garnicht mehr berücksichtigt. Daher ist auch die Reihenfolge der einzelnen Teilausdrücke wichtig, da an dieser Stelle ein Script auch optimiert werden kann.


Also von einfach weglassen war hier bestimmt nie die Rede lol


Hatte bisher gedacht, dass bei den Operatoren &&, || immer alle Ausdrücke durchgeführt und erst dann die Ergebnisse verglichen werden, aber das war scheinbar ein Irrtum.


Also sorry.
Gumbo hatte recht, und wenn man darauf Wert legt, diese Notices zu verhindern, sollte man wohl die von ihm genannte Schreibweise verwenden.
 
Zurück