Ankündigung

Einklappen
Keine Ankündigung bisher.

Leeren Eintrag verhindern

Einklappen

Neue Werbung 2019

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

  • Leeren Eintrag verhindern

    Hallo Zusammen,

    habe mir ein Anmeldformular gebastelt, weches auch alles tut was es soll. Bis auf eine Funktion. Beim Aufruf der Seite erscheint:Eine Anmeldung mit der Ausweisnummer: liegt uns bereits vor! Wenn die Ausweisnummer bereit vorhanden erscheint diese auch. Es liegt wahrscheinlich daran, dass ein Benutzer ohne Ausweisnummer vorhanden ist. Nun meine Frage: Wenn ich die Seite online stelle, kann man, ohne das irgendwelche Felder ausgefüllt sind den "Eintragen" Button betätigen und dies erzeugt einen Eintrag in der Datenbank ohne Inhalt. Wie kann ich dies verhindern?

    Bin kein Experte und würde mich über einen Rat von Euch sehr freuen. Wenn Euch sonst noch etwas an dem Script auffällt, bin ich für jeden Tip dankbar.
    PHP-Code:
    <?php
    header
    ("Content-type: text/html; charset=utf-8");
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" 

    <style type="text/css">
    </style>
    <link href="stylesNscripts/styles.css" rel="stylesheet" type="text/css" media="screen">
    </head>

    <body>
    <p align="center"><strong>Anmeldung zum  Golf </strong><strong><br />
        <br />
    Donnerstag,  </strong></p>

    <div align="center">
    <strong>Wichtig: </strong>Die Anmeldung für das Turnier muss spätestens <br />
    <strong>Dienstag, 30. September 2014, 12.00 Uhr</strong>�* (Anmeldeschluss) erfolgen.
    Die Turniergebühr in Höhe von 40,- € , ist  bis zum  Anmeldeschluss auf das Konto der <br />
    <p align="center">IBAN:<strong><br>
    BIC:<br>
    </strong><br> 
    zu entrichten.  Startzeiten, Flighteinteilung und eventuelle weitere Informationen werden am  Oktober um 12.00 Uhr auf der Internetseite des <br />
    bekannt gegeben. <br />
    <br />
    www..de</p>
    </div>


      
    <p align="center" class="Stil3">&nbsp;</p>
    <div align="center">
       <p><a href="pdf/Ausschreibung.pdf"><img src="img/adobe.jpeg" width="39" height="42" alt="adobe logo"></a><br>
         <span class="Stil10">Ausschreibung
         </span>
      
     </p>
     </p>

     <?php
    if(isset($_POST['submit']) AND $_POST['submit'] =='Eintragen'){
            
    // Fehlerarray erzeugen
            
    $errors = array();
             
    // Prüfen, ob alle Felder existieren
             
    if(!isset($_POST['name'],  $_POST['vorname'], $_POST['strasse'], $_POST['plz'], $_POST['ort'], $_POST['hcp'],         $_POST['dgvnummer'], $_POST['telefon'], $_POST['email']))
                 
             
    $errors[] = "Bitte benutzen sie unser Formular."
                     
                     else{
                     if(
    trim($_POST['name'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Namen ein.";
                     }
                     if(
    trim($_POST['vorname'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Vornamen ein.";
                     }
                     if(
    trim($_POST['strasse'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Straßennamen ein.";
                     }
                    if(
    trim($_POST['plz'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihre Postleitzahl ein.";
                     }
                     if(
    trim($_POST['ort'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Wohnort ein.";
                     }
                     if(
    trim($_POST['hcp'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihr aktuelles Hcp an.";
                     }
                     if(
    trim($_POST['dgvnummer'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihre DGV-Ausweisnummer an.";
                     }
                     if(
    trim($_POST['club'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Club an.";
                     }
                     if(
    trim($_POST['telefon'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihre Telefonnummer an.";
                     }
                     if(
    trim($_POST['email'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihre Email-Adresse ein.";
                     }
             }
     
        
    // Prüfen, ob ein Fehler aufgetreten ist
                 
                 
    if(count($errors)){
                    echo 
    "Sorry, ihre Daten konnten nicht bearbeitet werden.<br>\n".
                          
    "<br>\n";
                        foreach(
    $errors as $error)
                            echo 
    $error."<br>\n";
                               echo 
    "Zur&uuml;rck zum <a href=\"anmeldungerntedank.php\">Formular</a>\n";
             }
           
           }
        
    // Ansonsten, z.B. wenn der User das Formular zum 1. Mal aufruft, wird das Formular angezeigt
        
        
    else{
        
        
    //...

        
    }         
    ?>
      </p>
    </div>
    <form method="post" accept-charset="utf-8" action="<?php  echo $server['PHP_SELF'?>">
                  
      
      
      <div align="center">
        <p>Bitte geben Sie die erforderlichen Daten ein, um sich für das Turnier anzumelden!<br />
        <span class="Stil14">Es können nur vollständig und korrekt ausgefüllte Anmeldungen berücksichtigt werden.</span></p>
        <p>Für jeden Spieler muß eine seperate Anmeldung ausgefüllt werden!!<br>
        </p>
      </p>
      </p>
            
      </div>
          <table align="center" bgcolor="#999999">>
          <tr>
            <td>
              Name*
            </td>
            <td>
              <?php
                  
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['name']))
            
    // htmlentities sichert das Formular gegen Cross-Scripting
            
    echo "<input type=\"text\" size=\"30\" name=\"name\" value=\"".htmlentities($_POST['name']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"name\">\n";
    ?>
          <tr>
            <td>
              Vorname*
            </td>
            <td>
              <?php
        
    // Stellt den Vornamen wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['vorname']))
            echo 
    "<input type=\"text\" size=\"30\" name=\"vorname\" value=\"".htmlentities($_POST['vorname']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"vorname\">\n";
    ?>
          <tr>
            <td>
              Strasse*
            </td>
            <td>
              <?php
        
    // Stellt Strasse wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['strasse']))
            echo 
    "<input type=\"text\" size=\"30\" name=\"strasse\" value=\"".htmlentities($_POST['strasse']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"strasse\">\n";
    ?>
          <tr>
            <td>
              Plz*
            </td>
            <td>
                          
              <?php
        
    // Stellt die Plz wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['plz']))
            echo 
    "<input type=\"text\" size=\"5\" name=\"plz\"  value=\"" .htmlentities($_POST['plz']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"5\" name=\"plz\">\n";
    ?>        
          <tr>
            <td>
              Ort*
            </td>
            <td>
              <?php
        
    // Stellt den Ort wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['name']))
            echo 
    "<input type=\"text\" size=\"30\" name=\"ort\" value=\"".htmlentities($_POST['ort']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"ort\">\n";
    ?>
                              
          <tr>
            <td>
              Hcp*
            </td>
            <td>
              <?php
        
    // Stellt das Hcp wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['hcp']))
            echo 
    "<input type=\"text\" size=\"5\" name=\"hcp\" value=\"".htmlentities($_POST['hcp']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"5\" name=\"hcp\">\n";
    ?>
          <tr>
            <td>
              DGV-Ausweisnummer*
            </td>
            <td>
              <?php
        
    // Stellt die Ausweisnummer wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['plz']))
            echo 
    "<input type=\"text\" size=\"10\" name=\"dgvnummer\" value=\"".htmlentities($_POST['dgvnummer']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"10\" name=\"dgvnummer\">\n";
    ?>
     <tr>
            <td>
              Name des DGV-Club*
            </td>
            <td>
              <?php
        
    // Stellt den Club wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['club']))
            echo 
    "<input type=\"text\" size=\"30\" name=\"club\" value=\"".htmlentities($_POST['club']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"club\">\n";
    ?>
          <tr>
            <td>
              Telefon*
            </td>
            <td>
              <?php
        
    // Stellt die Telefonnummer wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['plz']))
            echo 
    "<input type=\"text\" size=\"30\" name=\"telefon\" value=\"".htmlentities($_POST['telefon']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"telefon\">\n";
    ?>
          </tr>
          <td>
            Email-Adresse*
            </td>
            <td>
              <?php
        
    // Stellt die Email-Adresse wieder her, wenn ein Fehler auftrat
        
    if(isset($_POST['email']))
            echo 
    "<input type=\"text\" size=\"30\" name=\"email\" value=\"".htmlentities($_POST['email']) ."\">\n";
        else
            echo 
    "<input type=\"text\" size=\"30\" name=\"email\">\n";
    ?>

    </td></tr>
              </table>
     </p>
     <div align="center"><strong><u> 
     Mir sind die Teilnahmebedingungen bekannt und ich erkenne sie mit dem bet&auml;tigen des "Eintragen" Buton an. 
                                </u></strong>
       </p>
    </div>
                                <div align="center">
                                  <input type="submit" name="submit" value="Eintragen">
    </div>
    </form>

    <?php
         
        
    #Verbindung zur Datenbank#    
            
        
    $server "localhost"
        
    $user=""
        
    $pass "";
        
    $database "sql_5_db1";
        
    $table "erntedank2014";
        
        
    $verbindung mysql_connect($server$user$pass)  or die ("Keine Verbindung moeglich");
        
        
    mysql_select_db($database$verbindung) or die ("Die Datenbank existiert nicht." mysql_error());
       
        
    mysql_set_charset('utf8');
        
             
             
    $name           = isset($_POST['name']) ? mysql_real_escape_string($_POST['name']) : '';
             
    $vorname        = isset($_POST['vorname']) ? mysql_real_escape_string($_POST['vorname']) : '';
             
    $strasse        = isset($_POST['strasse']) ? mysql_real_escape_string($_POST['strasse']) : '';
             
    $plz            = isset($_POST['plz']) ? mysql_real_escape_string($_POST['plz']) : '';
             
    $ort            = isset($_POST['ort']) ? mysql_real_escape_string($_POST['ort']) : '';
             
    $hcp            = isset($_POST['hcp']) ? mysql_real_escape_string($_POST['hcp']) : '';
             
    $dgvnummer      = isset($_POST['dgvnummer']) ? mysql_real_escape_string($_POST['dgvnummer']) : '';
             
    $telefon        = isset($_POST['telefon']) ? mysql_real_escape_string($_POST['telefon']) : '';
             
    $email          = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : '';
        
             
             
    #Prüfen ob Ausweisnummer schon vorhanden#     
             
             
    $sql =    "SELECT dgvnummer FROM $table WHERE dgvnummer ='".mysql_real_escape_string($_POST['dgvnummer'         ])."'";
             
    $res mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
             
    $gefunden mysql_num_rows($res);  
            
                     
             
    $sql ="";
             
             
    #Wenn Ausweisnummer noch nicht vorhanden Eintrag in die Datenbank#
             
    if ($gefunden == 0)
                    
                      {
             
             
    $eintrag "INSERT INTO $table 
             (name, 
             vorname, 
             strasse, 
             plz, 
             ort, 
             hcp, 
             dgvnummer,
             club, 
             telefon, 
             email
             ) 
             
             VALUES (
             '
    $name',
             '
    $vorname',
             '
    $strasse',
             '
    $plz',
             '
    $ort',
             '
    $hcp',
             '
    $dgvnummer',
             '
    $club',
             '
    $telefon',
             '
    $email'
             )"
    ;
             
    $eintragen=mysql_query($eintrag) or die(mysql_error());     
             
    $ausgabe "Vielen Dank! Sie wurden erfolgreich in die Startliste aufgenommen.";
             echo  
    "<script type='text/javascript'>
             window.open( 'http:///anmeldungerfolgreich.html',              
             \"width=400, height=400, \" );
             </script>"
    ;
            
             
    #Wenn Eintrag erfolgt Bestätigungsmail versenden#
             
             
    $empfaenger $_POST['email'];
             
    $betreff "Anmeldung Erntedankturnier 2014";
             
    $from "From: EGCC <i>\n";
             
    $from .= "Reply-To: \n";
             
    $from .= "Content-Type: text/html; charset=utf-8\n";
             
    $text 
             
    "\n
              Lieber Golfer,<br>
              wir bestätigen die Anmeldung für unser Turnier am .<br>
              Bitte überweisen Sie die Startgebühr auf folgendes Konto:<br>
              <br>
             <br>
              <br>
              Viel Spaß und viel Erfolg wünscht<br>
              "
    ;
                
                
             
    mail($empfaenger$betreff$text$from);
             
             }
             
             
    //Wenn Ausweisnummer schon vorhanden
             
             
    if ($gefunden >=0
            
             
             {
            
    $ausgabe "Eine Anmeldung mit der Ausweisnummer: $dgvnummer liegt uns bereits vor!";
             }
             if (
    $sql != "")
             
    mysql_query($sql) or die("MySQL Error: ".mysql_error());
              
             
    mysql_free_result($res);
             
    mysql_close ($verbindung);
             
             
             
              
             echo 
    $ausgabeutf8_encode('ä ö ü Ä Ö Ü ß');
    ?> 
    </body>
    </html>


  • #2
    Naja, du bestimmst doch selbst wann was passiert. Wenn das Verhalten nicht das gewünschte ist dann debugge: http://php-de.github.io/#debugging


    Wenn Euch sonst noch etwas an dem Script auffällt, bin ich für jeden Tip dankbar.

    *) mysql_ Erweiterung ist veraltet, wird bald nicht mehr funktionieren, nutze mysqli oder PDO http://php.net/manual/en/migration55.deprecated.php


    *) Schau dir "E-V-A" an: http://php-de.github.io/jumpto/eva-prinzip/ Es ist absolut unnötig PHP und HTML dermaßen so - und vor allem an diesen Stellen - zu mischen. Den Code mag man sich ja gar nicht genauer anschauen, da bekommt man ja einen dicken Kopf.
    Das ist vermutlich auch der Grund warum bisher hier wenig kam, weil es mit einer schnellen Antwort nicht getan ist.


    *) Nutze eine Mailerklasse http://php-de.github.io/jumpto/mail-class/


    *) was soll das utf8_encode('ä ö ü Ä Ö Ü ß'); am Ende? BTW: Mach es bzgl. Codierung gleich richtig, dann sparst du dir solche Dinge.


    *) DRY http://programmer.97things.oreilly.c...epeat_Yourself - Arbeite hier doch zB mit Arrays etc. anstatt so einee Code-Wurst:

    PHP-Code:
    if(trim($_POST['name'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Namen ein.";
                     }
                     if(
    trim($_POST['vorname'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Vornamen ein.";
                     }
                     if(
    trim($_POST['strasse'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Straßennamen ein.";
                     }
                    if(
    trim($_POST['plz'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihre Postleitzahl ein.";
                     }
                     if(
    trim($_POST['ort'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Wohnort ein.";
                     }
                     if(
    trim($_POST['hcp'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihr aktuelles Hcp an.";
                     }
                     if(
    trim($_POST['dgvnummer'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihre DGV-Ausweisnummer an.";
                     }
                     if(
    trim($_POST['club'])=='')
                     {
                         
    $errors[] = "Bitte geben Sie ihren Club an.";
                     }
                     if(
    trim($_POST['telefon'])==''
    Ebenso hier - Das escapen für die query solltest du erst direkt bei der DB-Verarbetiung machen und nicht schon davor. mysql_real_escape_string() ist für das escaping nur für die query und für sonst nichts, das ist kein Allheilmittel, kannst dir sogar Daten kaputt machen, wenn du die zB wieder im Form vorbelegst und die dann query-escpaed sind etc...

    PHP-Code:
    $name           = isset($_POST['name']) ? mysql_real_escape_string($_POST['name']) : '';
             
    $vorname        = isset($_POST['vorname']) ? mysql_real_escape_string($_POST['vorname']) : '';
             
    $strasse        = isset($_POST['strasse']) ? mysql_real_escape_string($_POST['strasse']) : '';
             
    $plz            = isset($_POST['plz']) ? mysql_real_escape_string($_POST['plz']) : '';
             
    $ort            = isset($_POST['ort']) ? mysql_real_escape_string($_POST['ort']) : '';
             
    $hcp            = isset($_POST['hcp']) ? mysql_real_escape_string($_POST['hcp']) : '';
             
    $dgvnummer      = isset($_POST['dgvnummer']) ? mysql_real_escape_string($_POST['dgvnummer']) : '';
             
    $telefon        = isset($_POST['telefon']) ? mysql_real_escape_string($_POST['telefon']) : '';
             
    $email          = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : ''
    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Schau dir mal das EVA-Prinzip an. Im Grunde ist die Logik ja ganz einfach, du musst nur vor dem Eintragen prüfen ob die Felder alle gültige Eingaben besitzen.

      Deinen Code seh ich mir an wenn du ihn auf relevantes reduziert hast.

      EDIT: Okay, hausl war schneller. Hatte noch Essen am Herd.

      Kommentar


      • #4
        Doppelpost?!

        http://www.php.de/php-einsteiger/110...erhindern.html

        Kommentar


        • #5
          Hallo Zusammen,

          vielen Dank für eure Hilfe und Tips. Teilweise habe ich sie verstanden, manches und vieles nicht. Müßte alles lernen und dazu fehlt mir leider die Zeit. Pflege die Seite nur ehrenamtlich. Wäre jemand von euch bereit mir dieses Script so zu ändern, dass ich es verwenden kann? Natürlich gegen Bezahlung. Wäre begeistert wenn sich jemand finden würde.

          Kommentar


          • #6
            Stelle es hier rein: http://www.php.de/scriptboerse/
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar

            Lädt...
            X