• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Hilfe bei Button mit automatischer E-Mail

reinprecht

Neues Mitglied
Hallo Leute,
hab ein kleines Problem ich soll an meiner Feuerwehrhomepage eine neue Funktion einfügen, nämlich für den internen Bereich. Im internen Bereich gibt es den Punkt "MY ACCOUNT", wo jeder User seine Daten eintragen soll. Durch einen Druck auf den Knopf "SENDEN" sollen änderungen an den Daten über eine E-Mail an mich geschickt werden. Und genau das ist das Problem. Ich habe vor ca. 2 Monaten die Homepage übernommen da ich derzeit der einzige in der Feuerwehr mit kleinen Kenntnissen auf PHP ebene bin. Doch das geht eindeutig über meine Kenntnisse hinaus.

Hier ist der Code in den die neue Funktion eingebunden werden soll:

PHP:
<?
include "modul_cfg.php";

/************************************************************************/
/* die Klasse "modul" muss immer vorhanden sein                         */
/************************************************************************/
class modul{
    var $user_rechte;
    var $modul_data;
    var $output;


    //Die Funktion edit_modul(), hilft bei der bearbeitung eines gewissen Benutzers
    function edit_modul($id){
        global $site, $db, $base_cfg, $HTTP_POST_FILES;
                $zwischenspeicher="";
        $msg="";

        //Ausf�hrung der MYSQL - Befehle
        //Editierung eines Users (incl. das anlegen eines neuen Benutzers)
        if(param("action")=="update_user"){

            //�bertragung der per POST �bertragenen Variablen auf eine "normale"
            $u_data=$_POST;

                //Telefonnummern Konvertierung
                $telefon_string="";
                $u_data['telefon_handy']=explode("\n",$u_data['telefon_handy']);
                foreach($u_data['telefon_handy'] as $nummer)
                    $telefon_string.=($nummer!="")?"h:".trim($nummer).";":"";
                $u_data['telefon_firma']=explode("\n",$u_data['telefon_firma']);
                foreach($u_data['telefon_firma'] as $nummer)
                    $telefon_string.=($nummer!="")?"f:".trim($nummer).";":"";
                $u_data['telefon_privat']=explode("\n",$u_data['telefon_privat']);
                foreach($u_data['telefon_privat'] as $nummer)
                    $telefon_string.=($nummer!="")?"p:".trim($nummer).";":"";
                
                //E-Mail Konvertierung
                $u_data['email']=str_replace("\n",";",$u_data['email']);

                //Generierung des "gro�en" Update Codes
                $code="UPDATE {$base_cfg['database']['prefix']}_login SET titel='{$u_data['titel']}', strasse='{$u_data['strasse']}', plz='{$u_data['plz']}', fax='{$u_data['fax']}', ort='{$u_data['ort']}', telefon='{$telefon_string}', email='{$u_data['email']}', nick='{$u_data['nick']}' WHERE id='".$_POST['id']."'";

                //Ausf�hrung des MYSQL Codes
                $data=$db->sql_query($code,$base_cfg['database']['maindb']);

                //Statusmeldung
                $msg=($db->affect($data))?"<font id='text_green'><i><u>Hinweis:</u> <b>{$u_data['name']} {$u_data['vorname']}</b> wurde erfolgreich aktualisiert.</i></font>":"<font id='text_red'><i><u>Hinweis:</u> <b>{$u_data['name']} {$u_data['vorname']}</b> wurde nicht aktualisiert.</i></font>";
              

            $msg.="<br><br>";

            //Ausgabe einer "Zwischenseite" um die Gefahr eines "reload's" zu verhindern
            $link="index.php?".request('msg:'.base64_encode($msg),'','action');

            //Neuer Headerzusatz
            $site['finish']['header'].='<meta http-equiv="refresh" content="1; url='.$link.'">';
                        echo $site['finish']['header'];
            $site['cfg']['page_reload']=$link;
        }//End-if
        
        //Holen der Daten um das Formular auszuf�llen
        //Bearbeitung eines bestehenden Einsatzes bzw. eines neuen bereits abgesendeten
            //Einlesen der Benutzerdaten
            $template=$db->fetch_row($db->sql_query("SELECT * FROM {$base_cfg['database']['prefix']}_login WHERE id='".$id."'",$base_cfg['database']['maindb']),1);
    
        $html="";
    if(!isset($site['cfg']['page_reload'])){
        //Ausgabevariable
        
        //Speichern - Button (Diskette)
        $return['submit']="<input type='image' src='images/save.png' title='Daten so abspeichern'>";
        

        //Personenbezogene Daten
        //Erstellung der Formularfelder
            //Akademische Titel
            $return['titel']=generate_form_textfield('titel','30',$template['titel'],'100','a-z+','Bitte nur Buchstaben verwenden!','2','','');

            //Name und Vorname
            $return['name']=generate_form_textfield('name','40',$template['name'],'100','a-z+','Bitte nur Buchstaben verwenden!','','readonly','');
                        $zwischenspeicher=$zwischenspeicher.$return['name']."<br>";
            $return['vorname']=generate_form_textfield('vorname','40',$template['vorname'],'100','a-z+','Bitte nur Buchstaben verwenden!','','readonly','');
                        $zwischenspeicher=$zwischenspeicher.$return['vorname']."<br>";
            
            //Adresse (Strasse, PLZ und Ort)
            $return['strasse']=generate_form_textfield('strasse','40',$template['strasse'],'255','*','Bitte nur Buchstaben verwenden!','9','','');
                        $zwischenspeicher=$zwischenspeicher.$return['strasse']."<br>";
            $return['plz']=generate_form_textfield('plz','4',$template['plz'],'4','0-9','Bitte nur Buchstaben verwenden!','10',' style=\'margin-top:1px\'','');
                        $zwischenspeicher=$zwischenspeicher.$return['plz']."<br>";
            $return['ort']=generate_form_textfield('ort','25',$template['ort'],'150','a-z+','Bitte nur Buchstaben verwenden!','11',' style=\'margin-top:1px\'','');
                        $zwischenspeicher=$zwischenspeicher.$return['ort']."<br>";

            //E-Mail Adressen
            $return['email']=generate_form_field('email','35',str_replace(";","\n",$template['email']),'','*','','15',' rows="2"','','textarea');
                        $zwischenspeicher=$zwischenspeicher.$return['email']."<br>";

            //Telefonnummern
            //Trennung von Handy, Firma und Privat
            $telefon_nummern=array(
                "h"=>"",
                "f"=>"",
                "p"=>"");
            $telefon=explode(";",$template['telefon']);
            foreach($telefon as $nummer){
                if($nummer!=""){
                    $nummer=explode(":",$nummer);
                    if($nummer[1]!=""&&$nummer[0]!="")
                        $telefon_nummern[$nummer[0]].=$nummer[1]."\n";
                }//End-if
            }//End-foreach

            $return['telefon_handy']=generate_form_field('telefon_handy','25',$telefon_nummern['h'],'','0123456789-/\n ()','Bitte nur Zahlen verwenden!','16',' rows="1"','','textarea');
            $zwischenspeicher=$zwischenspeicher.$return['telefon_handy']."<br>";
                        mail("[email protected]", $zwischenspeicher, "t", "From: admin <[email protected]>");
                        $return['telefon_firma']=generate_form_field('telefon_firma','25',$telefon_nummern['f'],'','0123456789-/\n ()','Bitte nur Zahlen verwenden!','17',' rows="1"','','textarea');
                        $return['telefon_privat']=generate_form_field('telefon_privat','25',$telefon_nummern['p'],'','0123456789-/\n ()','Bitte nur Zahlen verwenden!','18',' rows="1"','','textarea');
                        $return['fax']=generate_form_textfield('fax','25',$template['fax'],'150','0123456789-/\n ()','Bitte nur Zahlen verwenden!','19',' style=\'margin-top:1px\'','');


        //Erstellung der Tabelle "Personenbezogene Daten"
        $pers_data="<table id='listen_tabelle_head' width='100%'>";
        $pers_data.="<tr><td width='150'>Titel:</td>";
        $pers_data.="<td>{$return['titel']}</td><td align='right' valign='top'>{$return['submit']}</td></tr>";
        $pers_data.="<tr><td>Name:</td>";
        $pers_data.="<td colspan='2'>{$return['name']}</td></tr>";
        $pers_data.="<tr><td valign='top'>Alarmierungsnummer:</td>";
        $pers_data.="<td colspan='2'>{$return['fax']}</td></tr>";
        $pers_data.="</table>";

// HIER SOLL DER BUTTON DANN EINGEFÜGT WERDEN

        $param=array(
            "titel"=> "<font id='text_standard'>Personenbezogene Daten:</font>",
            "bericht"=>$pers_data
            );
        $html.=fixed_template("bericht_template",$param);

        //Inkludieren der Javascript-Modul-Funktionen
        $site['finish']['header'].="<script type='text/javascript' src='{$site['cfg']['modul_path']}".strtolower($this->modul_data['titel'])."/check_form.js'></script>";

        //Einf�gen in das Formular
        $html="<form name='user' action='?".request('action:update_user','','')."' method='post' enctype='multipart/form-data' onSubmit='return check_form_".(($template['id']=="new")?"new":"edit")."(this)'><input type='hidden' name='id' value='{$template['id']}'>".$html."</form>";
    }//End-if
        //R�ckgabe der Seite
        return base64_decode(param("msg")).$html;
    }//End-function edit_modul()


?>


kann mir vllt irgendjemand helfen ?
Der Code wurde von mir jetzt stark gekürzt, falls noch weiterer Code benötigt wird bitte dazu schreiben.

mfg reinprecht
 
Der für deinen Wunsch relevante Abschnitt beginnt bei

PHP:
if(param("action")=="update_user"){

und endet am Ende dieser if-Bedingung. Dazwischen findest Du das SQL-Statement, welches die eingegebenen Formulardaten in der MySQL-Datenbank aktualisiert.

PHP:
$code="UPDATE {$base_cfg['database']['prefix']}_login SET ...

Und genau dort müsstest Du die mail()-Funktion hinterlegen, wenn Du diese Daten verschicken willst. Beispiele dazu findest Du im Manual.

Den Inhalt der E-Mail, also die im Formular eingegebenen Daten, kannst Du darüber zusammensetzen. Dort gibt es ja schon einen Abschnitt in dem die per POST übergebenen Variablen ausgelesen werden. Diese müsstest Du nur parallel zu dem jetzigen Code in einen eigenen String schreiben den Du dann in die E-Mail einfügst.
 
Also schreibe ich zB

PHP:
//Ausf�hrung der MYSQL - Befehle
        //Editierung eines Users (incl. das anlegen eines neuen Benutzers)
        if(param("action")=="update_user"){

            //�bertragung der per POST �bertragenen Variablen auf eine "normale"
            $u_data=$_POST;
            $email_code=$u_data;

                //Telefonnummern Konvertierung
                $telefon_string="";
                $u_data['telefon_handy']=explode("\n",$u_data['telefon_handy']);
                foreach($u_data['telefon_handy'] as $nummer)
                    $telefon_string.=($nummer!="")?"h:".trim($nummer).";":"";
                $u_data['telefon_firma']=explode("\n",$u_data['telefon_firma']);
                foreach($u_data['telefon_firma'] as $nummer)
                    $telefon_string.=($nummer!="")?"f:".trim($nummer).";":"";
                $u_data['telefon_privat']=explode("\n",$u_data['telefon_privat']);
                foreach($u_data['telefon_privat'] as $nummer)
                    $telefon_string.=($nummer!="")?"p:".trim($nummer).";":"";
                
                //E-Mail Konvertierung
                $u_data['email']=str_replace("\n",";",$u_data['email']);

                //Generierung des "gro�en" Update Codes
                $code="UPDATE {$base_cfg['database']['prefix']}_login SET titel='{$u_data['titel']}', strasse='{$u_data['strasse']}', plz='{$u_data['plz']}', fax='{$u_data['fax']}', ort='{$u_data['ort']}', telefon='{$telefon_string}', email='{$u_data['email']}', nick='{$u_data['nick']}' WHERE id='".$_POST['id']."'";
                mail([email protected],TestMail,$email_code);

                //Ausf�hrung des MYSQL Codes
                $data=$db->sql_query($code,$base_cfg['database']['maindb']);

                //Statusmeldung
                $msg=($db->affect($data))?"<font id='text_green'><i><u>Hinweis:</u> <b>{$u_data['name']} {$u_data['vorname']}</b> wurde erfolgreich aktualisiert.</i></font>":"<font id='text_red'><i><u>Hinweis:</u> <b>{$u_data['name']} {$u_data['vorname']}</b> wurde nicht aktualisiert.</i></font>";

                //Aktualisierung des Passwortes
                if($u_data['pass1']!=""&&$u_data['pass2']!=""&&$u_data['pass1']==$u_data['pass2']){

                    //Generierung des eindeutigen Hashes
                    $hash=gen_hash($u_data['pass1']);

                    //Aktualiserung des Passwortes in der DB
                    $code="UPDATE {$base_cfg['database']['prefix']}_login SET password='{$hash}' WHERE id='".$_POST['id']."'";
                    $data=$db->sql_query($code,$base_cfg['database']['maindb']);

                    //Statusmeldung
                    $msg.=($db->affect($data))?"<br><font id='text_green'><i><u>Hinweis:</u> Das Kennwort wurde ge�ndert!</i></font>":"<br><font id='text_red'><i><u>Hinweis:</u> Das Kennwort wurde nicht ge�ndert!</i></font>";

                }else{

                    //Meldung das Passwort nicht ge�ndert
                    if($u_data['pass1']!=$u_data['pass2'])
                        $msg.="<br><font id='text_red'><i><u>Hinweis:</u> Das Kennwort wurde nicht ge�ndert!</i></font>";

                }//End-if

                //Aktualisierung des Benutzerbildes
                $id="bild";
                if($HTTP_POST_FILES[$id]['tmp_name']==""){

                    //Kein Upload...

                }elseif($HTTP_POST_FILES[$id]['size']>=1048576){

                    //Datei ist zu Gro�
                    $msg.="<br><font id='text_red'><u>Fehler:</u> Das Userbild wurde nicht ge�ndert! (Die maximal zul�ssige Dateigr��e ist 1 MB = 1048576 Bytes)</font>";
                    
                }elseif($HTTP_POST_FILES[$id]['error']==1){

                    //Upload war fehlerhaft
                    $msg.="<br><font id='text_red'><u>Fehler:</u> Das Userbild wurde nicht ge�ndert! (Beim Upload der Datei trat ein undefinierter Fehler auf)</font>";

                }elseif(
                    $HTTP_POST_FILES[$id]['type']!="image/pjpeg"&&
                    $HTTP_POST_FILES[$id]['type']!="image/jpeg"&&
                    $HTTP_POST_FILES[$id]['type']!="image/gif"    &&
                    $HTTP_POST_FILES[$id]['type']!="image/png"    &&
                    $HTTP_POST_FILES[$id]['type']!="image/x-png"){

                    //Dateityp nicht richtig (weder PNG, GIF noch JPG)
                    $msg.="<br><font id='text_red'><u>Fehler:</u> Das Userbild wurde nicht ge�ndert! (Es wurde ein nicht kompatibler Dateityp verwendet)</font>";

                }else{

                    //Speichern des Bildes in der DB als Kennung wird der aktuelle Unix-Timestamp verwendet

                    $stmp=explode(" ",microtime());        //Holen einer absolut einmaligen Zahl (Unix-TimeStamp)
                    $stmp[1]=$stmp[1];

                        //Einlesen und konvertieren des Bildes als String
                        $data=addslashes(fread(fopen($HTTP_POST_FILES[$id]['tmp_name'], "r"), filesize($HTTP_POST_FILES[$id]['tmp_name'])));

                        $code="UPDATE {$base_cfg['database']['prefix']}_login SET bild='".$data."'  WHERE id='".$_POST['id']."'";

                        $data=$db->sql_query($code,$base_cfg['database']['maindb']);
                        $msg.=($db->affect($data))?"<br><font id='text_green'><i><u>Hinweis:</u> Das Userbild wurde erfolgreich ge�ndert!</i></font>":"<br><font id='text_red'><i><u>Fehler:</u> Das Userbild wurde nicht ge�ndert!</i></font>";
                }//End-if

            $msg.="<br><br>";

            //Ausgabe einer "Zwischenseite" um die Gefahr eines "reload's" zu verhindern
            $link="index.php?".request('msg:'.base64_encode($msg),'','action');

            //Neuer Headerzusatz
            $site['finish']['header'].='<meta http-equiv="refresh" content="1; url='.$link.'">';
                        echo $site['finish']['header'];
            $site['cfg']['page_reload']=$link;
        }//End-if

oder habe ich das jetzt falsch verstanden ?

lg
 
Zurück
Oben