Funktion wird ignoriert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Funktion wird ignoriert

    Hallo,

    ich brauch da etwas Hilfestellung beim Erstellen eines Formmailers mit Fehlerüberprüfung.

    Solange ich keine extra Funktionen einsetze und nur auf einen Fehler prüfe, klappt alles einwandfrei.
    PHP-Code:
    <?php
    if($action == "")
    {
        echo 
    $form;    // Es wird ein Formular eingefügt, das ausgefüllt und versendet werden kann
    }
    else 
    // wenn auf absenden geklick wurde, kommt man hierhin
    {
        
    // Emailadresse prüfen
    if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$"$semail))
        {
        echo 
    "Email ung&uuml;ltig.<br>";
        echo 
    $form// Formular nochmals darstellen
        
    }
        else    
    // Wenn Email OK, dann versenden
        
    {
        
    mail("$recipient","$subject""$message","FROM:$sname <$semail>"); 
        }
    }

    ?>
    Da es aber mehrere Prüfverfahren geben sollte, wie z.B. ob ein Feld leer ist, wollte ich die Prüfung in eine Funktion schreiben.
    PHP-Code:
    <?php
    if($action == "")
    {
        echo 
    $form// Es wird ein Formular eingefügt
    }
    else
    {
        
    check_form($_POST); // Formularfelder überprüfen
        
    if($errors)            // Wenn Fehler vorhanden, dann diese Ausgeben
        
    {
        
    show_errors($errors);
        echo 
    $form;
        }
        else                
    // Keine Fehler, dann versenden
        
    {
        
    mail("$recipient","$subject""$message","FROM:$sname <$semail>"); 
        }
    }
    function 
    check_form($POST)
    {
        
    $errors = array();
        
    // Eingegebene Emailadresse prüfen
        
    if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$"$semail))
        {
        
    $errors[] = "Email ung&uuml;ltig";
        }
        
    // Eingegebenen Namen prüfen
        
    if(sname == "")
        {
        
    $errors[] = "Keinen Namen angegeben";
        }
        return 
    $errors;
    }
    function 
    show_errors($errors)
    {
        foreach (
    $errors as $temp)
        { echo 
    $temp."<br>"; }
    }
    ?>
    Leider klappt das Ganze nicht so wie ich es wollte. Auch wenn Fehler vorhanden sind, werden diese einfach ignoriert und das Formular versendet.
    Falls jemand einen Rat hat, wäre ich sehr dankbar.
    Danke im Voraus.

  • #2
    du musst $errors auch global verfügbar machen. so sind sie z.Zt nur in der Funktion verfügbar.

    Kommentar


    • #3
      Das mit global hab ich es schon ausprobiert. Ich hab das Problem (mit globalen Variablen) dann aber etwas anders gelöst.

      PHP-Code:
      if($action == "")
      {
          echo 
      $form;
      }

      else
      {
          
      $errors check_form();
          if(
      $errors
      Dann habe ich allerdings das Problem, dass alle Fehlermeldungen angezeigt werden, egal, ob ein Feld falsch oder richtig ist. Ich kann auch nichts versenden. Es sieht so aus, als ob $errors immer "true" ist, was ich absolut nicht verstehe.
      Na ja, ich sitze an diesem blöden Problem schon den halben Tag. Mach jetzt mal Pause. Vielleicht erkenne ich es dann.

      Danke für deine Hilfe TobiaZ

      Kommentar


      • #4
        die lösung ist so falsch ja auch nicht.

        musst halt nur gucken, dass die funktion (wenn keine fehler auftreten) "false" zurück gibt. gut ist.

        Kommentar


        • #5
          So, nach langem Suchen und Verzweifeln hab ich den Fehler gefunden.

          Der Funktion check_form waren die Variablen semail und sname nicht übergeben worden, so dass diese immer leer waren und dadurch natürlich einen Fehler produzierten.

          Die veränderte Funktion check_form lautet nun:
          PHP-Code:
          function check_form()
          {
              if(!
          ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$"$_POST[semail]))
              {
              
          $errors[] = "Die angegebene Emailadresse scheint ung&uuml;ltig zu sein!</b>";
              }
              if(
          $_POST[sname] == "")
              {
              
          $errors[] = "Bitte geben Sie Ihren Namen an!";
              }
              return 
          $errors;

          Kommentar

          Lädt...
          X