Fehler um Sonderzeichen zu verhindern

Big-A

Mitglied
Hallo alle,

wie einige nun schon mitbekommen haben, bin ich dabei eine Datenbank übers Web bearbeiten zu können mit hilfe von Formulare.
Alles funktioniert, dank euch :D

ich habe es so versucht zu verhindern:
PHP:
//verhindert alle leerzeichen	
$Firma = str_replace(" ", "", $Firma);
$Nachname = str_replace(" ", "", $Nachname);
$Vorname = str_replace(" ", "", $Vorname);
$Strasse = str_replace(" ", "", $Strasse);
$Hausnnummer = str_replace(" ", "", $Hausnnummer);
$Ort = str_replace(" ", "", $Ort);$Vorname = str_replace(" ", "", $Vorname);
$PLZ = str_replace(" ", "", $PLZ);
$Telefonnummer = str_replace(" ", "", $Telefonnummer);
$Fax = str_replace(" ", "", $Fax);
$Mail = str_replace(" ", "", $Mail);
$Datum = str_replace(" ", "", $Datum);

//verhindert alle Sonderzeichen
$Firma = str_replace("<", ">", $Firma);
$Nachname = str_replace("<", ">", $Nachname);
$Vorname = str_replace("<", ">", $Vorname);
$Strasse = str_replace("<", ">", $Strasse);
$Hausnnummer = str_replace("<", ">", $Hausnnummer);
$Ort = str_replace("<", ">",$Ort);
$PLZ = str_replace("<", ">", $PLZ);
$Telefonnummer = str_replace("<", ">", $Telefonnummer);
$Fax = str_replace("<", ">", $Fax);
$Mail = str_replace("<", ">", $Mail);
$Datum = str_replace("<", ">", $Datum);

jedoch wird mir dann das angezeigt: Notice: Undefined variable.
 
Was ist wenn jemand einen Doppelnamen wie zum Beispiel "Hans Peter" hat. Dann machst du daraus "HansPeter".

Ergibt für mich keinen Sinn.

Wenn du verhindern willst, das jemand NUR ein oder mehrere Leerzeichen eingibt, dann nimm trim.

Was die zweite "Überprüfung" soll ist mir auch völlig unklar und im ersten Abschnitt steht die Zeile mit dem Vornamen auch noch doppelt drin (hinter Ort).

Bei der Fehlermeldung wird doch sicher auch angegeben um welche Variable es sich handelt!?
 
Zuletzt bearbeitet:
Bei allen zeigt er mir das an. Jedoch hatte ich das Problem ja gestern auch, da lag es dann an einem Tippfehler! Diesen Tippfehler habe ich dann beseitigt und dann funktionierte auch alles ohne probleme. :-( Und jetzt zeigt er mit es wieder an, das die Variable nicht definiert wäre, obwohl es in der selben Datei ist.

Ok, das ist wirklich unsinnig mit den Leerzeichen, danke das du mich darauf aufmerksam gemacht hast.
 
Zuletzt bearbeitet:
Wo kommen die Werte der Variablen denn her, aus einem Formular? Dann sind es doch bestimmt $_POST- oder $_GET-Variablen!
 
Wie schon gesagt wurde macht das mit den leerzeichen filtern wenig sinn...
falls du durch das <> das eingeben von html verhindern willst,
solltest du auf http://de3.php.net/manual/de/function.strip-tags.php zurückgreifen.

Und das kommentar
PHP:
//verhindert alle Sonderzeichen
verstehe ich nicht.
den du filterst ja nur '<' und '>' heraus.

Und worauf tombe warscheinlich hinaus will,
ist das du variablen die von ausserhalb des scriptes kommen erstmal darauf prüfen solltest ob diese gesetzt wurden bzw. einen wert enthalten.
Eine Methode von PHP die sich dazu eignet ist http://de3.php.net/manual/de/function.isset.php

hoffe ich konnte dir helfen ;)
 
@H4ckHunt3r

ich habe erst einmal nur die beiden Zeichen eingetragen, um zu überprüfen ob es funktioniert, damit ich nicht so viel eingebe und am ende eventuell doch alles löschen muss. Aber danke für den Link bezüglich des verhindern von html-Code :D

PHP:
$ID= $_POST["ID"];
	$Firma= $_POST["Firma"]; 
	$Nachname = $_POST["Nachname"];
	$Vorname = $_POST["Vorname"];
	$Strasse = $_POST["Strasse"];
	$Hausnummer = $_POST["Hausnummer"];
	$PLZ = $_POST["PLZ"];
	$Ort = $_POST["Ort"];
	$Telefonnummer = $_POST["Telefonnummer"];
	$Fax = $_POST["Fax"];
	$Mail = $_POST["Mail"];
	$Datum = $_POST["Datum"];

liegt das eventuelle an den " "?

und so habe ich das ganze im Formular angegeben:

PHP:
  echo "<ol>";
   echo "<fieldset>";
	echo "<legend>Welchen Datensatz m&ouml;chten Sie bearbeiten?</legend>";
		echo "<form method='bearbeiten'>";
		echo 'ID: <input type="text" value="'.$row->ID.'" name="ID" /><br />';
		echo 'Firma: <input type="text" value="'.$row->Firma.'" name="Firma" /><br />';
		echo 'Nachname: <input type="text" value="'.$row->Nachname.'" name="Nachname" /><br />';
        echo 'Vorname: <input type="text" value="'.$row->Vorname.'" name="Vorname" /><br />';
		echo 'Strasse: <input type="text" value="'.$row->Strasse.'" name="Strasse" /><br />';
        echo 'Hausnr.: <input type="text" value="'.$row->Hausnummer.'" name="Hausnummer" /><br />';
        echo 'PLZ: <input type="text" value="'.$row->PLZ.'" name="PLZ" /><br />';
		echo 'Ort: <input type="text" value="'.$row->Ort.'" name="Ort" /><br />';
        echo 'Telefonnummer: <input type="text" value="'.$row->Telefonnummer.'" name="Telefonnummer" /><br />';
		echo 'Fax: <input type="text" value="'.$row->Fax.'" name="Fax" /><br  />';
		echo 'Mail: <input type="text" value="'.$row->Mail.'" name="Mail" /><br />';		
		echo 'Datum: <input type="text" value="'.$row->Datum.'" name="Datum" /><br />';
        echo '<input type="submit" name="speichern" value="speichern">';
	echo "</form>";	
  echo "</ol>";
echo "</fieldset>";
 
Keine Ahnung welche Werte ein solches Formular liefert:

HTML:
<form method='bearbeiten'>

Habe ich dir aber gestern auch schonmal geschrieben.

NACHTRAG: Habe es eben mal so getestet. Das Formular wir mit GET versendet.
 
Zuletzt bearbeitet:
Ok, und wo steht der obige Code?

Wird er vermutlich immer ausgeführt und nicht nur dann wenn das Formular abgeschickt wurde?

Zu deiner letzten Frage: NEIN wenn du das Formular mit method="Post" abschickst, dann musst du natürlich auch die POST-Variablen verwenden!
 
Zurück