Problem mit gettemplate funktion

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

  • Problem mit gettemplate funktion

    Progge gerade ein User-Registrations-Script. Möchte gerne, dass mein Template alle fehlerhaften Feldnamen anzeigt, die ggf auftauchen.

    Wie realisiere ich das. Den ansatz hab ich ja schon, aber mit dem Template klappts nicht so wie es soll. Der gepostete Code unten is meine jetzige Not-Lösung.

    Habe im Template für die Ausgabe die Variable $user_exist_fehler verwendet.

    PHP-Code:

    // template_inc.php

    <?

    function gettemplate($template,$endung="htm")
    {
    return str_replace("\"","\\\"",implode("",file("templates/".$template.".".$endung)));
    }
    function dooutput($template) {
    echo $template;

    }

    ?>




    // registration_save.php

    <?

    include ("db_connect.php");

    $benutzername = $HTTP_POST_VARS["benutzername"];
    $passwort = $HTTP_POST_VARS["passwort"];
    $email = $HTTP_POST_VARS["email"];
    $confirm = $HTTP_POST_VARS["confirm"];
    $vorname = $HTTP_POST_VARS["vorname"];
    $nachname = $HTTP_POST_VARS["nachname"];
    $strasse = $HTTP_POST_VARS["strasse"];
    $wohnort = $HTTP_POST_VARS["wohnort"];
    $plz = $HTTP_POST_VARS["plz"];
    $icq = $HTTP_POST_VARS["icq"];
    $mfchat = $HTTP_POST_VARS["mfchat"];
    $hobbies = $HTTP_POST_VARS["hobbies"];
    $gebtag = $HTTP_POST_VARS["gebtag"];
    $gebmon = $HTTP_POST_VARS["gebmon"];
    $gebjahr = $HTTP_POST_VARS["gebjahr"];
    $status = "neu";
    $geburtstag = "$gebtag.$gebmon.$gebjahr";

    srand ((double)microtime()*1000000); 
    while(strlen($code) < 10) 

    $code .= rand(0,9); 



    $save = "INSERT INTO users (id, username, passwort, status, vorname,
      nachname, strasse, plz, wohnort, email, icq, mfchat, hobbies, geburtstag, code) VALUES ('$id', '$benutzername', '$passwort', '$status', '$vorname',
      '$nachname', '$strasse', '$plz', '$wohnort', '$email', '$icq', '$mfchat', '$hobbies', '$geburtstag', '$code') ";

      $felder = array ("Benutzername","Passwort","E-Mail","Vorname",
                                "Nachname","Wohnort","Geburtsdatum","Postleitzahl","Passwort Wiederholung");
        $eingabeok = array("^(([a-zA-Z0-9\.\_\-]){4})$",                                        //Name mind. 4 Buchstaben und Zahlen                                   
                           "^[.]{4}$",                                                          //Passwort mind. 4 Zeichen
                           "^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+)$",      //Korrekte E-Mail Adresse
                           "^(([a-zA-Z\-]){3})$",                                               //Vorname nur Buchstaben und Minus, min 3 Zeichen
                           "^(([a-zA-Z\-]){3})$",                                               //Nachname nur Buchstaben und Minus, min 3 Zeichen
                           "^(([a-zA-Z\-\/\.]){3})$",                                           //Wohnort nur Buchstaben und Minus, min 3 Zeichen
                           "([0-9])+(\.)+([0-9])+(\.)+([0-9]{4})$"                              //Geburtsdatum richtiges Format
                                );
        $eingabefehler = array ("0","0","0","0","0","0","0","0","0");
        $fehler = "0";


        if ($benutzername=="" or !ereg($eingabeok[0],$benutzername)) 
    {
            $fehler = "1";
            $eingabefehler[0] = "1";
        
    }


        if ($passwort=="" or !ereg($eingabeok[1],$passwort)) 
    {
            
            $fehler = "1";
            $eingabefehler[1] = "1";
    }


        if ($email=="" or !ereg($eingabeok[2],$email)) 
    {
            
            $fehler = "1";
            $eingabefehler[2] = "1";
    }


        if ($vorname=="" or !ereg($eingabeok[3],$vorname)) 
    {
            
            $fehler = "1";
            $eingabefehler[3] = "1";
    }


        if ($nachname=="" or !ereg($eingabeok[4],$nachname)) 
    {
            
            $fehler = "1";
            $eingabefehler[4] = "1";
    }


        if ($wohnort=="" or !ereg($eingabeok[5],$wohnort)) 
    {
            
            $fehler = "1";
            $eingabefehler[5] = "1";
    }


        if ($geburtstag=="" or !ereg($eingabeok[6],$geburtstag)) 
    {
            
            $fehler = "1";
            $eingabefehler[6] = "1";
    }


        if ($plz=="" or $plz < 1000 or $plz > 99999)
    {
            
            $fehler = "1";
            $eingabefehler[7] = "1";
    }

       if ($confirm != $passwort)
    {
            
            $fehler = "1";
            $eingabefehler[8] = "1";
    }

    $selectuser = "SELECT username FROM users WHERE username = '$benutzername'";
    $query = mysql_query($selectuser);
    $nr = mysql_num_rows($query);

    $selectemail = "SELECT email FROM users WHERE email = '$email'";
    $semail = mysql_query($selectemail);
    $nre = mysql_num_rows($semail);


    if($nr >= 1 or $nre >= 1 or $fehler == "1")
    {

    if ($fehler == "1") 

    {
         
    for ($i=0; $i<8; $i++)

    {

    if ($eingabefehler[$i] == "1") 

    {

    $user_exist_fehler = "Ein oder mehrere Felder sind fehlerhaft. Du hast wahrscheinlich ein Feld / Felder vergessen auszufüllen oder dabei falsche Zeichen verwendet.";

    // Ansatz von mir
    // $user_exist_fehler = $felder[$i] . "ungülitig. bla bla bla.";
    // mein Template gibt dann aber nur ein fehlerhaftes Feld aus, obwohl es mehrere beim Test waren


    }
    }
    }


    if ($nr >= 1)

    {

    $fehler = 1;

    $user_exist = "Der von dir gewählte Benutzername existiert bereits. Bitte wähle einen anderen.";

    }

    if ($nre >= 1)

    {

    $fehler = 1;

    $user_exist2 = "Die von dir angegebene E-Mail-Adresse wird bereits von einem anderen User verwendet.";

    }

    include ("inc/template_inc.php");

    eval("dooutput(\"".gettemplate("user_exist")."\");");

    }





    if ($fehler == "0")

    {

    $speichern = mysql_query($save);

    }


    $msg = "Hallo ".$benutzername; 
    $msg .= "\nVielen Dank für Deine Registrierung.\n"; 
    $msg .= "Bitte aktiviere Deinen Account indem du auf den folgenden Link klickst:\n"; 
    $msg .= "http://webdesign.morenow.de/kellersandberg/activate.php?user=".$benutzername."&code=".$code."\n"; 
    $msg .= "Erst nach erfolgreicher Aktivierung kannst du den Account vollständig nutzen.."; 
    $reguser = $benutzername;
    $regmail = $email;


    if ($speichern)

    {

    mail("$email","Aktivierungslink für [url]http://www.KellerSandberg.de[/url]","$msg\n","FROM: [email]webmaster@kellersandberg.de[/email]\n");

    include ("inc/template_inc.php");

    eval("dooutput(\"".gettemplate("registration_success")."\");"); 

    }


    ?>

    Danke für Hilfe!!!!!

  • #2
    hmm,

    hab mir das script nur kurz angeschaut ....

    bei mir ists so:
    im template steht hinter (wherever) dem jeweiligen input noch ein block, {{BEGIN:ERROR_NO_EMAIL}}du hast keene ...{{..}}, der nur geparsed wird, wenn nötig ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      nun ja

      Ich versteh nicht ganz.

      Ich hab ja viele Felder und möchte, dass im Template alle Felder angezeigt werden die nicht korrekt ausgefüllt wurden.

      So wie ich das gemacht habe, hat er immer nur eines angezeigt.

      Ich generiere die Fehlermeldungen so:

      $user_exist_fehler = $fehler[$i] ." ungültig. Bitte ändern!!!";

      Für $fehler[$i] wird dann der jeweilige Feldname eingesetzt, dessen Feld fehlerhaft ausgefüllt wurde.

      Leider bekomm ich nur ein Feld ausgegeben obwohl es mehrere sind als ich es getestet habe.

      Kommentar


      • #4
        Hilfe

        Kann mir keiner helfen???

        Kommentar


        • #5
          einfacherer code

          PHP-Code:

          {
          $felder = array ("Passwort","Wohnort","Postleitzahl");                                 

              
          $eingabefehler = array ("0","0","0");
              
          $fehler "0";
          }



          if (
          strlen($passwort)<4)

          {
                  
                  
          $fehler "1";
                  
          $eingabefehler[0] = "1";
          }


          if (
          strlen($wohnort)==or !preg_match('%[a-zA-Z\./]%i'$wohnort))

          {
                  
                  
          $fehler "1";
                  
          $eingabefehler[1] = "1";
          }



          if (
          $plz=="" or $plz 1000 or $plz 99999)

          {
                  
                  
          $fehler "1";
                  
          $eingabefehler[2] = "1";
          }

          echo 
          "$fehler<br>";
          echo 
          "$eingabefehler[0]<br>";
          echo 
          "$eingabefehler[1]<br>";
          echo 
          "$eingabefehler[2]<br>";

          if (
          $fehler == "1"

          {
               
          for (
          $i=0$i<3$i++)

          {

          if (
          $eingabefehler[$i] == "1"

          {

          $user_edit_fehler $felder[$i] ." fehlerhaft. Du hast wahrscheinlich vergessen das Feld auszufüllen oder dabei falsche Zeichen verwendet.";

          }
          }
          }


          if (
          $fehler == "1"

          {
          include (
          "inc/template_inc.php");

          eval(
          "dooutput(\"".gettemplate("user_edit_fail")."\");");



          Habe ich nun mehrere Felder, die fehlerhafte eingaben des users enthalten, sollen mehrere Fehlermeldungen im Template ausgegeben werden, die dem User sagen, was er falsch gemacht hat.

          $user_edit_fehler = $felder[$i] ." fehlerhaft. Du hast wahrscheinlich vergessen das Feld auszufüllen oder dabei falsche Zeichen verwendet.";


          Hiermit will ich die Fehlermeldungen ausgeben. Leider gibt er nur eine aus, auch bei mehreren fehlerhaften Feldern.

          Kommentar


          • #6
            Re: einfacherer code

            Hiermit will ich die Fehlermeldungen ausgeben. Leider gibt er nur eine aus, auch bei mehreren fehlerhaften Feldern.
            du überschreibst ja auch bei jedem mal die fehlermeldung ... entweder hängste die aneinander mittels .= oder du übergibst ein array ...
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              PHP-Code:
              // $user_exist_fehler = $felder[$i] . "ungülitig. bla bla bla."; 
              Damit gibt Dir das Skript immer nur das letzte fehlerhafte Feld aus, oder? Das liegt daran, dass Du $user_exist_fehler in der Schleife immer überschreibst, anstatt den Inhalt zu erweitern.

              Kommentar

              Lädt...
              X