kostenloser Webspace werbefrei: lima-city


Emailadresse auf korrektheit prüfen / validieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    sexyteamlp

    sexyteamlp hat kostenlosen Webspace.

    Ich habe eine Kommentarbox und möchte überprüfen, ob die eingegebene E-Mail-Adresse a) richtig ist und b) existiert.

    Nun habe ich online folgenden Code gefunden
    function mailcheckDNS($mail) {
    	$email = htmlspecialchars($mail);
    	$r = false;
    
    	if(preg_match('/(.*?)\@(.*?)\.(\w){2,6}/i', $email)) {
    		$split = explode('@', $email);
        	$split2 = explode('.', $split[1]);
        	if(preg_match('/([a-z]){3,64}/i', $split2[0])) {
         		if(preg_match('/([a-z0-9\!\"\$\&\/\(\)\?\~\#\+\.\:\_\-]+){1,64}[^\@]/i', $split[0])) {
          			$MXCheck = getmxrr($split[1], $mxhosts);
            		if(!empty($MXCheck)) {
              			$r = true;
            		}
          		}
        	}
    	}
    	return $r;
    }


    auf der Seite http://www.gordonzube.com/2008/11/28/php-emailadresse-auf-korrektheit-prufen.html.

    Meine Frage ist, wo ich den Einbauen soll. Ich habe 2 PHP-Dateien für das Gästebuch,

    <?php
      if (count($_POST) > 0) {
    
        //open the file and save it into a string
        $file_content = file_get_contents('Gaestebucheintrag.txt');
    
        //create a new line from the data array
        //$new_line = implode(';', $_POST)."\r\n";  //bearbeitet! statt $data
        $umbr = "\r\n";
        //print_r ($_POST);
        $user = $_POST["username"];
        $user = strip_tags($user, '<br>');
        $user = htmlentities($user);
    
        $email = $_POST["EMail"];
        $email = strip_tags($email, '<br>');
        $email = htmlentities($email);
    
        $inhalt = $_POST["inhalt"];
        $inhalt = str_replace("\n", "<br>", $inhalt);
        $inhalt = htmlentities($inhalt);
    
        $new_line = '"'.$user.'";"'.$email.'";"'.$inhalt.'"'.$umbr;
    
        //add the new line to the existing content
        $file_content = $file_content.$new_line;
    
        //write the new content into the file
        file_put_contents('Gaestebucheintrag.txt', $file_content);
      }
    
    
    
    ?>
    <form id="myform" name="myform" action="" method="post">
    
      <label for="username">Benutzername:</label>
      <input type="text" id="username" name="username" size="40" value="" />
      <br />
      <br />
      <label for="EMail">Bitte gib deine Email ein:</label>
      <input type="text" id="EMail" name="EMail" size="40" value="" />
      <br />
      <br />
      <br />
      <span>Kommentar *:</span>
      <textarea id="inhalt" name="inhalt" cols="40" rows="12" wrap="physical"></textarea>
      <br />
      <div style="text-align: center;">
        <input type="reset" value="Zur&uuml;cksetzen" />
        <input type="button" value="Beitrag absenden" onclick="validate();" />
      </div>
    </form>


    und
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title> Daniel's Homepage - Speichere Beitrag</title>
        <link rel="stylesheet" type="text/css" href="css/testprojekt.css"/>
        <link rel="stylesheet" type="text/css" href="css/Video1.css"/>
        <meta content="charset=UTF-8"/>
        <script language="JavaScript" type="text/javascript" src="script.js"></script>
      </head>
      <body id="comment-holder">
        <div style="margin: 0px auto; width: 600px;">
          <?php
          $alle_kommentare  = file_get_contents('Gaestebucheintrag.txt');
    
          if ($alle_kommentare){
    
            echo '<h2>Kommentare</h2>';
    
            $kommentare_array = explode("\r",$alle_kommentare);
            $count            = 1;
    
            foreach ($kommentare_array as $kommentare) {
    
              $kommentar = explode(';', $kommentare);
    
              if ($kommentar[0] && $kommentar[1] && $kommentar[2]) {
    
                echo
                '<strong>Kommentar '.$count.':</strong><br/><br/>' .
                '<i><b>Benutzername</b></i>:<br /> '.$kommentar[0].'<br/>'.
                '<i><b>Email</b></i>:<br /> '.$kommentar[1].'<br/>'.
                '<i><b>Kommentar</b></i>:<br/> '.$kommentar[2].'<br/><br/>';
    
                $count++;
              }
            }
          }
          ?>
    
          <h2>Eintrag schreiben</h2>
          <?php
          include('validate.php');
          ?>
    
          <br>
          <a href="index.php">Zur&uuml;ck zur Seite</a>
        </div>
        <br />
        <hr width="100%" size="2px" color="3F3F3F"
        <p>
          *Wenn ihr euren Beitrag sehen wollt, dann ladet die Seite einfach neu.
        </p>
      </body>
    </html>


    Mir geht es nun darum, an welche Stelle der Code reinmuss :)

    LG Dex :)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    Der Code entspricht einer Funktion, also musst du ihn am Anfang der PHP Datei, bzw des PHP Blockes definieren. Das kann zum Beispiel direkt nach dem <?php sein, direkt in der nächsten Zeile. Der übersicht halber kannst du es auch auslagern, du musst die Datei aber einbinden BEVOR du die Funktion benutzt.
    Die Funktion selbst kannst du dann in einem IF Block nutzen, da sie ein Bool zurückgibt:
    if ( mailcheckDNS( $_POST['email'] ) {
        //Mail ist Ok
    } else {
        //Mail ist nicht ok
    }

    Ich hoffe das hilft.

    Edit: Noch 2-3 Hinweise:
    * Du solltest auch die Semiloken rausfiltern, da diese sonst deine CSV Struktur durcheinander bringen
    * Du solltest dir vllt mal die Funktionen isset() und empty() anschauen, diese wären vllt ein wenig geschickter in der Prüfung, ob die POST Variablen existieren. Damit kannst du dann Fehlerwerfungen vermeiden.
    * Eigentlich sollte man getmxrr nicht unbedingt für Mailadressenverifikation nutzen, ich glaube das kann zu Falscheinschätzungen führen, wenn der MX Record nicht gesetzt ist, aber der A, welcher dann als Mailrecord genutzt wird, ich weiß aber nicht, ob das so überhaupt möglich ist, das soll jemand der es weiß beurteilen :)

    Liebe Grüße

    Beitrag zuletzt geändert: 10.8.2012 12:46:48 von ggamee
  4. Autor dieses Themas

    sexyteamlp

    sexyteamlp hat kostenlosen Webspace.

    ggamee schrieb:
    Der Code entspricht einer Funktion, also musst du ihn am Anfang der PHP Datei, bzw des PHP Blockes definieren. Das kann zum Beispiel direkt nach dem <?php sein, direkt in der nächsten Zeile. Der übersicht halber kannst du es auch auslagern, du musst die Datei aber einbinden BEVOR du die Funktion benutzt.
    Die Funktion selbst kannst du dann in einem IF Block nutzen, da sie ein Bool zurückgibt:
    if ( mailcheckDNS( $_POST['email'] ) {
        //Mail ist Ok
    } else {
        //Mail ist nicht ok
    }

    Ich hoffe das hilft.

    Edit: Noch 2-3 Hinweise:
    * Du solltest auch die Semiloken rausfiltern, da diese sonst deine CSV Struktur durcheinander bringen
    * Du solltest dir vllt mal die Funktionen isset() und empty() anschauen, diese wären vllt ein wenig geschickter in der Prüfung, ob die POST Variablen existieren. Damit kannst du dann Fehlerwerfungen vermeiden.
    * Eigentlich sollte man getmxrr nicht unbedingt für Mailadressenverifikation nutzen, ich glaube das kann zu Falscheinschätzungen führen, wenn der MX Record nicht gesetzt ist, aber der A, welcher dann als Mailrecord genutzt wird, ich weiß aber nicht, ob das so überhaupt möglich ist, das soll jemand der es weiß beurteilen :)

    Liebe Grüße



    Also soll ich
    if ( mailcheckDNS( $_POST['email'] ) {
        //Mail ist Ok
    } else {
        //Mail ist nicht ok
    }


    ganz an den Anfang setzen? Und von welchem Code von den beiden :x? Reicht das für den Check, ob es die E-Mail auch gibt :x?
    Ich bin leider ein totaler Neuling, der ein Praktikum macht :x

    LG Dex :)
  5. g****e

    <?php
    
    function mailcheckDNS($mail) {
    	$email = htmlspecialchars($mail);
    	$r = false;
    
    	if(preg_match('/(.*?)\@(.*?)\.(\w){2,6}/i', $email)) {
    		$split = explode('@', $email);
        	$split2 = explode('.', $split[1]);
        	if(preg_match('/([a-z]){3,64}/i', $split2[0])) {
         		if(preg_match('/([a-z0-9\!\"\$\&\/\(\)\?\~\#\+\.\:\_\-]+){1,64}[^\@]/i', $split[0])) {
          			$MXCheck = getmxrr($split[1], $mxhosts);
            		if(!empty($MXCheck)) {
              			$r = true;
            		}
          		}
        	}
    	}
    	return $r;
    }
    
    
      if (count($_POST) > 0) {
    
        //open the file and save it into a string
        $file_content = file_get_contents('Gaestebucheintrag.txt');
    
        //create a new line from the data array
        //$new_line = implode(';', $_POST)."\r\n";  //bearbeitet! statt $data
        $umbr = "\r\n";
        //print_r ($_POST);
        $error = false;
        if (isset($_POST["username"]) && !empty($_POST["username"]) ) {
            $user = $_POST["username"];
            $user = strip_tags($user, '<br>');
            $user = htmlentities($user);
        } else {
            $error = true;
        }
    
        if (!$error && isset($_POST["EMail"]) && !empty($_POST["EMail"])  && mailcheckDNS( $_POST["EMail"] ) ) {
            $user = $_POST["EMail"];
            $user = strip_tags($user, '<br>');
            $user = htmlentities($user);
        } else {
            $error = true;
        }
    
        if (!$error && isset($_POST["inhalt"]) && !empty($_POST["inhalt"]) ) {
            $user = $_POST["inhalt"];
            $inhalt = str_replace("\n", "<br>", $inhalt);
            $inhalt = htmlentities($inhalt);
        } else {
            $error = true;
        }
    
        if ( !$error ) {
            $new_line = '"'.$user.'";"'.$email.'";"'.$inhalt.'"'.$umbr;
    
            //add the new line to the existing content
            $file_content = $file_content.$new_line;
    
            //write the new content into the file
            file_put_contents('Gaestebucheintrag.txt', $file_content);
        }    
      }
    
    
    
    ?>
    <form id="myform" name="myform" action="" method="post">
    
      <label for="username">Benutzername:</label>
      <input type="text" id="username" name="username" size="40" value="" />
      <br />
      <br />
      <label for="EMail">Bitte gib deine Email ein:</label>
      <input type="text" id="EMail" name="EMail" size="40" value="" />
      <br />
      <br />
      <br />
      <span>Kommentar *:</span>
      <textarea id="inhalt" name="inhalt" cols="40" rows="12" wrap="physical"></textarea>
      <br />
      <div style="text-align: center;">
        <input type="reset" value="Zur&uuml;cksetzen" />
        <input type="button" value="Beitrag absenden" onclick="validate();" />
      </div>
    </form>


    So in die Richtung würde ich das eher gestallten.

    Liebe Grüße
  6. Würd sogar noch viel weiter gehen und den ganzen php-Code, der in html steht, in eine externe php-Datei schreiben. Datei danach wie gewohnt einbinden (require) und sich den Content dann über Funktionen hollen! Das wäre der erste Schritt von vielen richtung OOP. Die Paradigmen der Objekt-Orientierung sind das Grundgerüst einer guten Programmierung, sparen viel Zeit und Nerven :)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!