# Formularfeld: Überprüfen ob @ Zeichen vorhanden



## medico (17. Dezember 2007)

Hallo,

wie kann ich mittels PHP prüfen ob in einem Forumlarfeld ein @ zeichen vorhanden ist und wenn dies nicht der Fall ist, das eine Fehlermeldung ausgegeben wird?

Gruß Medico


----------



## Remme (17. Dezember 2007)

Nabend.

Die suchfunktion hilft 

http://www.tutorials.de/forum/php-tutorials/13494-php-formular-eingabe-ueberpruefen.html

lg Remme


----------



## Flex (17. Dezember 2007)

Gut, das Tutorial sollte man vllt nicht mehr verwenden, da es einfach ein wenig spezifisch ist.

Aber die Funktion [phpf]strpos[/phpf] sollte dir behilflich sein.


----------



## Remme (17. Dezember 2007)

Meinst du Naja ok deine Quellenangabe ist sicherlich allgemeiner und der Lerneffekt wäre größer 

Aber die Grunddaten wie man sowas umsetzt sind ja auch da vorhanden.


----------



## Flex (17. Dezember 2007)

Ich finde es hält sich in Grenzen... 
HTML sollte in Funktionen möglichst vermieden werden. Denn ich vermute, du hast ein anderes Formular, als der geehrte Autor dieses Tutorials. Sprich du müsstest hergehen und sämtlichen HTML Code ändern (der auch noch in PHP eingebettet ist und auch noch ohne Zeilenumbrüche geschrieben ist. Das macht bestimmt Spaß.

Weiterer Punkt ist register_globals, aufgrund des Alters ist das Tutorial daher eigentlich obsolet, da diese möglichst immer ausgeschaltet sein sollten.

Ich finde sogenannte Voids, also Funktionen ohne Rückgabewert, nicht sehr schön.

Weiterhin ist die Prüfung der E-Mailadresse ein "Witz"... 

```
if(strstr($mail,"@") && strstr($mail,".")){
```
Eine gültige E-Mail wäre also ".@."

Gleichzeitig wäre diese Zeile übrigens die, die ihm helfen würde, denn [phpf]strstr[/phpf] ist eine ähnliche Funktion, wie [phpf]strpos[/phpf].

Lerneffekt, ja. Leider aber mit Fehlern drin, deshalb sollte man auf soetwas achten.


----------



## Remme (17. Dezember 2007)

Da haben sie recht gnädiger Herr  Ich hoffe mal es bekommt es hin.


----------



## medico (18. Dezember 2007)

Super danke, da habt Ihr mir echt weiter geholfen!

Obwohl ich doch noch ne andere Frage hätte, wie ist der Befehl das im Formularfeld nur Zahlen stehen dürfen. Finde da nichts passendes.


----------



## mAu (18. Dezember 2007)

Viele wege führen nach Rom:

```
if(preg_match('~^[0-9]+$~', $deinFeld))
{
    echo "Valide, nur Zahlen!";
} else
{
    echo "Nö!";
}
```


----------



## medico (18. Dezember 2007)

Danke für die schnelle Hilfe


----------



## medico (19. Dezember 2007)

Ich muss doch noch mal nach fragen, es funktioniert nicht so wie ich es mit vorstelle, also es soll so sein das wenn ein Formular ausgefüllt ist, sollen folgende Punkt geprüft werden:
1. Pflichtfelder ausgefüllt
2. @ Zeichen vorhanden (das reicht)
3. Ob bei der Telefonummer nur Zahlen sind.

Naja wenn ich das alles einzeln mache klappt das auch, nur wenn ich das zusammen mache kommt das irgendwie nicht hin. Hier mal mein Code:


```
<? session_start (); 

$_SESSION['tele'] = $_POST['tele'];
$_SESSION['name'] = $_POST['name'];
$_SESSION['text'] = $_POST['text'];
$_SESSION['email'] = $_POST['email'];

if(strstr($_POST[email],"@"))        {
}
else {
  $stop_email = "stop_email";
 } 

if(preg_match('~[0-9]+~', $_POST[tele])) {
}
else {
  $stop_tele = "stop_tele";
 } 

if(empty($_POST[name]))        {
  $stop = "stop";
}
if(empty($_POST[email]))        {
  $stop = "stop";
}
if(empty($_POST[tele]))        {
  $stop = "stop";
}

if(empty($_POST[text]))        {
  $stop = "stop";
}

if ($stop == "stop")        {

header ("Location: contact.php?fehler=1"); 
}

if ($stop_email == "stop_email")        {

header ("Location: contact.php?fehler=2"); 
}

if ($stop_tele == "stop_tele")        {

header ("Location: contact.php?fehler=3"); 
}

else  {
```

Ich bin leider kein Profi in PHP also nicht lachen ;-)

Wenn ich das so benutze, dann prüft er das Tele Feld aber das andere wird ignoriert sobald im Tele Feld nur Zahlen sind.

Danke schon mal
Gruß Medico


----------



## Flex (19. Dezember 2007)

```
<?php
session_start (); 

$error_msg['tele'] = 'Telefonnummer ungueltig';
$error_msg['empty'] = 'Sie haben nicht alle Felder ausgefuellt';
$error_msg['email'] 'Emailadresse ungueltig';

if(strstr($_POST['email', '@') === false)
{
  $error[] = 'email';
}
if(ctype_digit($_POST['tele']) === false)
{
  $error[] = 'tele';
}
if(empty($_POST['name']) OR empty($_POST['email']) OR empty($_POST['tele']) OR empty($_POST['text']))
{
  $error[] = 'empty';
}

if(!empty($error))
{
  foreach($error as $err)
  {
    echo $error_msg[$err];
  }
}
else
{
  # keine Fehler
  $_SESSION['tele'] = $_POST['tele'];
  $_SESSION['name'] = $_POST['name'];
  $_SESSION['text'] = $_POST['text'];
  $_SESSION['email'] = $_POST['email'];
}
?>
```
So sollte es funktionieren.
Immer schön darauf achten, dass man bei Arrays die einfachen Anführungszeichen richtig setzt.

Der reguläre Ausdruck wurde durch [phpf]ctype_digit[/phpf] ersetzt.


----------

