Email-Tester mit Gästebuch verbinden - aber wie???



  • Hallo!

    Ich habe mir ein kleines Gästebuch programmiert dessen code wie folgt ausschaut:

    <html>
    <head>
    <title>Mein Gästebuch</title>
    <style>
    <!--
    .input
    {
            font-family: Arial;
            font-size: 10;
            font-weight: bold;
            border-color: #FFFFFF;
            border-style: none;
            border-width: 2;
            padding-left: 2px;
            padding-right: 2px;
            padding-top: 0px;
            padding-bottom: 0px}
    //-->
    </STYLE>
    </head>
    <body bgcolor="#000000" basefont="Verdana" text="#FFFFFF" link="yellow">
    
    <form class="input" action="<?php echo $PHP_SELF ?>" method="POST">
    Ihr Kommentar:<br>
    <textarea class="input" cols="55" rows="4" wrap="soft" name="comment"></textarea><br>
    Ihr Name:<br>
    <input class="input" type="type" name="name"><br>
    Ihre Email Adresse:<br>
    <input class="input" type="text" name="email"> <input class="input" type="submit" value="Abschicken"></form>
    
    <hr size="1">
    <font face="Arial" size="2"><b>Bisherige Meinungen:</b><br><br></font>
    
    <?
    // Funktion zum erzeugen der Smilies
    
    function smilie($text)
    {
        $search  = array (':)', ':D', ':('); 
        $replace = array ('<img src="http://www.ms-cyboard.de/ubb/smile.gif">', '<img src="http://www.ms-cyboard.de/ubb/biggrin.gif">', 
    
    '<img src="http://www.ms-cyboard.de/ubb/graemlins/schluchtz.gif">');
        $temp  = str_replace($search, $replace, $text);
        return($temp);
    }
    // Ende der Smiliefunktion
    
    $datei = "comment.txt";
    if(1 == file_exists($datei))
    {
        if (isset($comment) && $name != "" && $email != "" )
        {   
            $zeiger = fopen($datei, "r+");
            $alt = fread($zeiger, filesize($datei));
            $email="<a href=\"mailto:$email\">$name</a>";
            $datum = date("j.n.Y");
            $datum2 = date("H:i:s");
            $comment = stripslashes(nl2br($comment));
            $meinung = "<table width=\"350\" bgcolor=\"#AFAFAF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\" 
    
    cellpadding=\"1\"><tr><td bgcolor=\"#1F1F1F\" width=\"350\"><font face=\"Verdana\" size=\"1\"><b>$email</b> schrieb am 
    
    <i>$datum</i> um $datum2</td></tr><tr><td bgcolor=\"#6F6F6F\" width=\"350\"><font face=\"Verdana\" 
    
    size=\"1\">$comment</font></td></tr></table><font face=\"Verdana\" size=\"1\"><br><br></font>
    
    ";
            $meinung = smilie($meinung);
            rewind($zeiger);
            fputs($zeiger, "$meinung\n$alt");
            fclose($zeiger);
        }
    readfile($datei);
    }else
    {
        if (isset($comment) && $name != "" && $email != "" )
        {
            $zeiger = fopen($datei, "w");
            fclose($zeiger);
            $zeiger = fopen($datei, "r+");
            $email="<a href=\"mailto:$email\">$name</a>";
            $datum = date("j.n.Y um H:i:s");
            $comment = stripslashes(nl2br($comment));
            $meinung = "<table width=\"350\" bgcolor=\"#AFAFAF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\" 
    
    cellpadding=\"1\"><tr><td bgcolor=\"#1F1F1F\" width=\"350\"><font face=\"Verdana\" size=\"1\"><b>$email</b> schrieb am 
    
    <i>$datum</i></td></tr><tr><td bgcolor=\"#6F6F6F\" width=\"350\"><font face=\"Verdana\" 
    
    size=\"1\">$comment</font></td></tr></table><font face=\"Verdana\" size=\"1\"><br><br></font>\n";
    
            $meinung = smilie($meinung);
            rewind($zeiger);
            fputs($zeiger, "$meinung\n");       
            fclose($zeiger);
            readfile($datei);   
        }
    }
    ?>
    </body>
    </html>
    

    Die ganze Story möchte ich um ein kleines JavaScript erweitern, dass die eingegebene Email verifiziert ob sie korrekt sein kann oder ob nicht ein schmand wie "blahblubb" eingegeben wurde. Das Script ist hier:

    <script language="javascript1.2" type="text/javascript">
    <!--// Hide from inept browsers
    var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z]{2,3}$/;
    
    function isEmail(s) {
       if(s != "") {
            if(pattern.test(s)) {
                alert("\""+s+"\""+" appears to be a valid email address.");
                return false;
            }
            else {
                alert("\""+s+"\""+" does NOT appear to be a valid email address.");
                return false;
            }
       }
       else {
          alert("You appear to have left the email address field blank. What's up with that?");
          return false;
       }
    }
    
    // Done hiding -->
    </script>
    

    Kann mir vielleicht jemand erklären wie ich in den PHP-Code das JavaScript einknüpfen kann. Danke 🙂



  • Du könntest statt deinem POST oder GET einfach mit <a href="java\1:...
    aufrufen und wenn es ok ist ruft dein JavaScript mit location deine PHP Datei auf

    Aber wieso machst du es denn mit JavaScript und net glei mit PHP ?? 😕



  • Ich würde das zwar eher direkt im PCP-Code überprüfen, aber wenn du es mit JavaScript machen willst: einfach deinen Code in den <head>-Bereich mit reinschreiben und bei dem e-Mail-Input noch sowas in der Art hinzufügen:

    onBlur="return isEmail(this.value)"
    

    oder halt als onSubmit!

    [ Dieser Beitrag wurde am 02.03.2003 um 14:26 Uhr von flenders editiert. ]



  • Original erstellt von paranoiac.org:
    Aber wieso machst du es denn mit JavaScript und net glei mit PHP ?? 😕

    Ööh krass!! Das geht?? 😮
    Welche Funktionen brauch ich denn dafür??



  • also ich weis net genau was dein script mach 😃 aber so isses net so gut....du musst der form nen namen geben wie z.B.

    <form method="Post" class="input" action="<?=$PHP_SELF";? name="august" onSubmit="return isemail()">
    <pre>
    //* Die Input felder hier *//
    </pre>
    </form>

    ( das <?= wirkt wie ein php anfangen und das = steht für echo, auserdem sind die register globals ab 4.2 deaktiviert also würd ich auch empfehlen die aus zu lassen und folgende zeile noch ergänzen:
    <?php
    $PHP_SELF = $_SERVER['PHP_SELF'];
    ?>

    dann nimmste einfach folgendes \1:

    <script language="Java Script">
    function isemail () {
    if(document.august.email.value.indexOF('@') == -1) {
    alert("Keine gültige E-Mail Adresse!");
    document.august.email.focus();
    return false;
    }
    }

    ein fehler hat das ganze, ne gültige mail addy is auch webmaster@c-plusplus ohne die .de endung



  • *argggs*
    Ich komm mit meiner Idee voll nicht klar sie umzusetzen...wäre es möglich dass jemand von euch das fertigschreibt und anschliessend erklärt was er da macht??? 😕 büddeeee



  • <html>
    <head>
    <script type="text/javascript">
    function ismail () {
    if(document.august.email.value.indexOf('@') == -1) {
    alert("Keine gültige E-Mail Adresse!");
    document.august.email.focus();
    return false;
    }
    }
    </script>
    <title>Mein Gästebuch</title>
    <style>
    <!--
    .input
    {
    font-family: Arial;
    font-size: 10;
    font-weight: bold;
    border-color: #FFFFFF;
    border-style: none;
    border-width: 2;
    padding-left: 2px;
    padding-right: 2px;
    padding-top: 0px;
    padding-bottom: 0px}
    //-->
    </STYLE>
    </head>
    <body bgcolor="#000000" basefont="Verdana" text="#FFFFFF" link="yellow">

    <?php
    $PHP_SELF = \_SERVER['PHP_SELF']; ?>

    http://www.ms-cyboard.de/ubb/smile.gif">', '<img src="http://www.ms-cyboard.de/ubb/biggrin.gif">',

    '<img src="http://www.ms-cyboard.de/ubb/graemlins/schluchtz.gif">');
    temp=strreplace(temp = str_replace(search, $replace, text);return(text); return(temp);
    }
    // Ende der Smiliefunktion

    datei="comment.txt";if(1==fileexists(datei = "comment.txt"; if(1 == file_exists(datei))
    {
    if (isset($comment) && $name != "" && email != "" ) { zeiger = fopen(datei,"r+");datei, "r+"); alt = fread(zeiger,filesize(zeiger, filesize(datei));
    email=htmlspecialchars(email = htmlspecialchars(email);
    name=htmlspecialchars(name = htmlspecialchars(name);
    email="name</a>";name</a>"; datum = date("j.n.Y");
    datum2=date("H:i:s");datum2 = date("H:i:s"); comment = htmlspecialchars(comment);comment); comment = smilie(comment);comment); comment = stripslashes(nl2br(comment));comment)); meinung = "<table width=\"350\" bgcolor=\"#AFAFAF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\"

    cellpadding=\"1\"><tr><td bgcolor=\"#1F1F1F\" width=\"350\"><font face=\"Verdana\" size=\"1\"><b>$email</b> schrieb am

    <i>$datum</i> um $datum2</td></tr><tr><td bgcolor=\"#6F6F6F\" width=\"350\"><font face=\"Verdana\"

    size=\"1\">$comment</font></td></tr></table><font face=\"Verdana\" size=\"1\"><br><br></font>

    ";
    rewind(zeiger);fputs(zeiger); fputs(zeiger, "meinung\\nalt");
    fclose(zeiger); } readfile(datei);
    }else
    {
    if (isset($comment) && $name != "" && email != "" ) { zeiger = fopen(datei,"w");fclose(datei, "w"); fclose(zeiger);
    zeiger=fopen(zeiger = fopen(datei, "r+");
    email="
    name</a>";name</a>"; datum = date("j.n.Y um H:i:s");
    comment=stripslashes(nl2br(comment = stripslashes(nl2br(comment));
    $meinung = "<table width=\"350\" bgcolor=\"#AFAFAF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\"

    cellpadding=\"1\"><tr><td bgcolor=\"#1F1F1F\" width=\"350\"><font face=\"Verdana\" size=\"1\"><b>$email</b> schrieb am

    <i>$datum</i></td></tr><tr><td bgcolor=\"#6F6F6F\" width=\"350\"><font face=\"Verdana\"

    size=\"1\">$comment</font></td></tr></table><font face=\"Verdana\" size=\"1\"><br><br></font>\n";

    meinung=smilie(meinung = smilie(meinung);
    rewind(zeiger);fputs(zeiger); fputs(zeiger, "meinung\\n"); fclose(zeiger);
    readfile($datei);
    }
    }
    ?>
    </body>
    </html>

    _____________________________________________

    So ab jetzt gehts nurnoch mit nem @ (leider reicht auch nen @)
    auserdem kann man keine HTML Codes mehr machen (die waren bei dir an das is bissl schlecht...des weiteren hab ich dat so eingerichtet das die smiles nurnoch im text und nicht in der e-mail adresse oder im name ersetzt werden da das
    a) scheise ausschaut
    b) fehler gibt
    falls fragen bestehen frag oder ICQ (was mir lieber is)



  • so ich sehe dass du es für mich erstellt hast lieber i6T2yC ...das ja mal nice.
    mitlerweile habe ich allerdings auch schon selbst eine lösung gefunden *lach* tut mir echt leid!

    hab das ganze ganz einfach gelöst indem ich den anweisungsblock zum schreiben in die datei erst ausführe nach dieser if abfrage hier:

    if (strstr($email, "@") && strstr($email, "."))
    

    damit läuft das ganze.+

    ich schau mir aber trotzdem nochmal deine Lösung genau an. 🙂



  • ich empfehel dir trozdem den teil mit HTML indizieren zu übernehmen und den mit den smilies nur im text auch.......auserdem hat dein ding einen nachteil, bei mir kommt ne meldung mit nem fenster und ich kann direkt die neue mail addy eingeben, bei dir wirds gesendet und steht net da und keiner weis wieso 😉



  • nene, ich hab ja darüberhinaus auch noch folgendes gemacht...am beste ich poste den ganzen teil mal:

    if (isset($comment) && $name != "" && $email != "" )
        {   
            if (strstr($email, "@") && strstr($email, "."))
            {   
                $zeiger = fopen($datei, "r+");
                $alt = fread($zeiger, filesize($datei));
                $email="<a href=\"mailto:$email\">$name</a>";
                $datum = date("j.n.Y");
                $datum2 = date("H:i:s");
                $comment = stripslashes(nl2br($comment));
                $meinung = "<table width=\"350\" bgcolor=\"#AFAFAF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"><tr><td 
    
    bgcolor=\"#1F1F1F\" width=\"350\"><font face=\"Verdana\" size=\"1\"><b>$email</b> schrieb am <i>$datum</i> um $datum2</td></tr><tr><td bgcolor=\"#6F6F6F\" 
    
    width=\"350\"><font face=\"Verdana\" size=\"1\">$comment</font></td></tr></table><font face=\"Verdana\" size=\"1\"><br><br></font>
    
    ";
                $meinung = smilie($meinung);
                rewind($zeiger);
                fputs($zeiger, "$meinung\n$alt");
                fclose($zeiger);
            } else { echo "Sie haben eine ungueltige Emailadresse eingegeben!!!"; }
        }
    readfile($datei);
    }
    

    Es wird also geprüft ob
    a) ein @ vorkommt
    b) ein . vorkommt

    wenn das nicht der Fall ist, dann kommt die meldung dass man eine ungueltige Emailaddresse eingegeben hat 🙂



  • naja das kann ich dir schnell an meinen hinzu scripten, geb mal als e-mail addy ein:
    :)@web.<h1>huhu
    a) die geht ob wohl die ungültig is
    b) du hast nen fehler vor der
    c) steht noch nen fettes huhu drann

    und dann geb als name mal
    :)<tt>lala
    ein dann kommt auch smilie...und es steht in schreibmaschienenschrift lala da

    dann gibst mal im kommentar einfach
    </td>
    </tr>
    </table>
    ein dann haste das schlimmste was passieren kann 😉

    von daher musste schon noch bissl an deinem script schaffen



  • Zum Testen, ob eine E-Mail-Adresse gültig ist:

    if(ereg("^[_a-zA-z0-9-]+(\.[_a-zA-z0-9-]+)*@([_a-zA-z0-9-]+\.)+([a-zA-z]{2,3})$",$email)) {
     // [...]
    }
    

    Hab's nicht ausprobiert, aber so stang es in einem Buch von mir 🙂 (hoffe mal, dass ich mich net vertippt hab 🙄 )



  • naja wenn es keine @irgendwas.info sein darf is das gut...sonst mus es so heisen:

    if(ereg("^[_a-zA-z0-9-]+(\.[_a-zA-z0-9-]+)*@([_a-zA-z0-9-]+\.)+([a-zA-z]{2,3,4})",",email)) {
    // [...]
    }

    und normal darf am anfang kein _ stehen und auch keine zahl glaub ich...wenn das echt so is dann musses so sein:

    if(ereg("^[a-zA-z][_a-zA-z0-9-]+(\.[_a-zA-z0-9-]+)*@([_a-zA-z0-9-]+\.)+([a-zA-z]{2,3,4})",",email)) {
    // [...]
    }

    fals nisch tritt 1 in kraft 😉



  • Ich hab den letzen genommen:**

    ^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z][a-zA-Z][a-zA-Z]?$
    

    **

    Der ist am besten.
    Einer der anderen wollte nicht mitmachen als ich als emailadresse Grinder@Grindheaven.com eingegeben habe. Wobei die entspricht ja der RFC, also darf das Script da auch nicht rummeckern. ich habe von einem Klassenkammeraden schonmal ein Script gesehen das für die Validation von emailadressen zuständig war, und zwar nach RFC norm -> das ding hat eine ganze DIN A4 Seite geflastert *g*

    =======================================================================
    Das Problem mit der Email hätten wir dann also soweit gelöst.
    Jetzt sollte ich noch schauen wie ich das mache dass man keinen Unfug anstellt indem man einfach HTML-Code eintippt.

    Ich glaube eine Lösung wäre einfach zu Prüfen ob man ein "<" eingegeben hat und das ganze dann zu sperren.

    [ Dieser Beitrag wurde am 02.03.2003 um 18:00 Uhr von Peter Piksa editiert. ]


  • Mod

    Original erstellt von Peter Piksa:
    Ich glaube eine Lösung wäre einfach zu Prüfen ob man ein "<" eingegeben hat und das ganze dann zu sperren.

    oder einfach strip_tags bzw. htmlentities aufrufen...
    wobei strip_tags wohl besser wäre 🙂



  • Original erstellt von Shade Of Mine:
    oder einfach strip_tags bzw. htmlentities aufrufen...
    wobei strip_tags wohl besser wäre 🙂

    sauber!! 🙂
    Das läuft ja wie geschmiert!
    Boar Leute ich bekomm hier voll den Orgasmus auf PHP *lol* 😮 😮 😮
    Wenn ich mal vergleiche wie schwer das alles in C zu realisieren wäre *muaahhahaha* da geh ich ja ein bei!!

    Der aktuelle Code ist nun der hier:
    Er überprüft Die Felder Name sowie Kommentar auf irgendwelche HTML-Böswilligkeiten *G*

    if(ereg("^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z][a-zA-Z][a-zA-Z]?$",$email))
            {   
                $name = strip_tags($name, '');
                $zeiger = fopen($datei, "r+");
                $alt = fread($zeiger, filesize($datei));
                $email="<a href=\"mailto:$email\">$name</a>";
                $datum = date("j.n.Y");
                $datum2 = date("H:i:s");
                $comment = stripslashes(nl2br($comment));
                $comment = strip_tags($comment, '<br>');
                $meinung = "<table width=\"350\" bgcolor=\"#AFAFAF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"><tr><td 
    
    bgcolor=\"#1F1F1F\" width=\"350\"><font face=\"Verdana\" size=\"1\"><b>$email</b> schrieb am <i>$datum</i> um $datum2</td></tr><tr><td bgcolor=\"#6F6F6F\" 
    
    width=\"350\"><font face=\"Verdana\" size=\"1\">$comment</font></td></tr></table><font face=\"Verdana\" size=\"1\"><br><br></font>
    
    ";
                $meinung = smilie($meinung);
                rewind($zeiger);
                fputs($zeiger, "$meinung\n$alt");
                fclose($zeiger);
            } else { echo "<table width=\"350\" bgcolor=\"#FFFFFF\" bordercolor=\"#AFAFAF\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"><tr><td 
    
    bgcolor=\"red\" width=\"350\" align=\"center\"><font face=\"Verdana\" size=\"1\"><b>Sie haben eine ungültige Emailadresse eingegeben!!!</font></td></tr></table><font 
    
    face=\"Verdana\" size=\"1\"><br><br>"; }
        }
    

    [ Dieser Beitrag wurde am 02.03.2003 um 18:35 Uhr von Peter Piksa editiert. ]



  • naja.....ich bevorzuge htmlspecialchars (eigendlich ma ne gute frage wieso es von einer programmiersprache über 2 dinger gibt die nur 1 zeil verfolgen...das is wie beim ersetzen, das kann man auch mit str_replace oder ereg_replace oder anderen...ganzschön bl....amabel das sind wiedersprüche in der eigenen sprache 😃



  • Also mein Gästebuch kann checkt nun die Emailadresse auf 'richtiggkeit', formt textsmilies in grafiken um und ist sicher gegen HTML-Code. Ein Kumepel meinte zu mir ich solle mal die Smilies, die das Gästebuch unterstützt, auflisten, (so wie hier im forum wenn man eine antwort verfasst) und wenn man draufklickt wird der String sofort in das Nachrichtenfenster übertragen.

    Bsp: man klickt auf den hier -> 🙂
    um Textfenster "comment" soll das dann erscheinen -> "Doppelpunkt+Klammerzu"
    natürlich ohne das plus und die gänsefüsschen.
    Wie konnte ich das machen?
    Hab mir ja schon die JavaScript Funktionen von einigen Foren angesehen, die sowas beinhalten aber da ich mich mit JavaScript voll nicht auskenne, und erst demnächst mein KnowWare-Buch zu den Thema erhalten kann ich da nicht wirklich was machen.



  • NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIN! *HEUL*
    Hab mir den Quellcode anzeigen lassen als die Einträge angezeigt wurden und hab ne änderung vorgenommen. jetzt ist der ganze PHP Code im Eimer!!!!! Alles Weg! aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah



  • Du darfst eben nicht den transformierten Code speichern, sondern musst dies bei der Anzeige erledigen, oder was meintest du 😕


Anmelden zum Antworten