empty preg_match ?!

Smeily

Grünschnabel
hallo
Ich will aus einem formular einen wert überprüfen. Wenn dieser Wert nicht eingetragen ist will ich ihn nicht überprüfen und es soll kein error kommen allerdings wenn der wert eingegeben wurde soll er überprüft werden und dann wenn er falsch ist ein fehler ausgeben ...


PHP:
if(empty($_POST['website'])) { print""; } 
else { 
$website = $_POST['website'];
$www = "=[a-z0-9].[a-z0-9]=si";
if(!preg_match($www,$website)) { 
error; }
}


was ist daran falsch?!
 
Code:
if(!preg_match($www,$website))
Wenn bei dir register_globals "off" ist, existiert keine Variable "website".
Trage auch dort $_POST['website'] ein.
 
Ich denke nicht, dass der von dir erwähnte Aspekt das Problem behebt, Sven. Soetwas ist eher ein „Schönheitsfehler“.
Eher kann ich mit vorstellen, dass der reguläre Ausdruck für die Aufgabe – ich nehme an es geht um die Prüfung der URL-Syntax – nicht geeignet ist.

Probier es doch mal mit dem kompletten regulären Audruck für URLs.
 
Macht Smeily doch in der Zeile 3 ($website = $_POST...).

Zusätlich würde ich die Überprüfung empfehlen, ob die Variable $_POST['website'] existiert. Also mit
Code:
if (isset( $_POST['website'])) && ...)....

Das auftretende Problem wird aus deinem Text leider nicht deutlich. Beschreibe bitte genauer die auftretende Fehler(funktioniert die Überprügung nicht.. oder soll ein Syntaxfehler vorliegen ?).

Mfg
 
Das Problem ist das er es überhaupt nicht überprüft... entweder er macht ein fehler wenn nix drin steht so wie oben und wenn ich dann was reinschreibe egal was dann sagt er keinen fehler mehr ... :confused: ich glaube das er den text was ich eingebe überhaut nicht überprüft ...
 
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.
 
Willst du beide Situationen (leer oder falsch) als verschiedene Fehler werten, dann nimm Gumbo's Lösung.

Willst du nur einen Fehler ausgeben, wenn die Variable gesetzt ist, aber falsch, dann nimm folgende:

PHP:
if (!empty($_POST['website']) and !preg_match($www, $_POST['website'])) {

... (Fehler)

}

MfG. xxenon

@Gumbo:

Was willst du denn damit bezwecken?

PHP:
if( !isset($_POST['website']) || empty($_POST['website']) )
 
Zurück