tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
584
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Hallo!
    Ich bastel an einem Registierungsskript rum. Es soll bei Neuanlage eine E-Mail versandt werden zum neuen Mitglied und direkt ein Eintrag in die Datenbank vorgenommen werden - nur leider wird keine Mail verschickt und einen Eitrag in die Datenbank wird auch nicht vorgenommen. Mit Hilfe diverser Artikel hier im Forum konnte ich mich schon bis hierhin "vortasten"......aber nichts geht mehr! Auch meine Bücher haben da keine Lösung Parat.


    Hier der Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    
    <?
    $title = "Mitglieder Registrierung!"; // Überschrift
    include("header.html"); 
    include("connect_sql.php"); // Einbinden der Datenbankvariablen
     
    $verbindung = @mysql_connect($mysqlserver, $mysqluser, $mysqlpass) 
       or die("Konnte keine Verbindung zum Datenbankserver aufbauen!"); // Überprüfung der Verbindung zur Datenbank
       
    $selectdb = @mysql_select_db($mysqldb, $verbindung)            
       or die("Konnte die Datenbank <b>$mysqldb</b> nicht auswählen!"); // Zugriff auf die Datenbank wird hergestellt
     
    // Passwort automatisch erstellen   
    function getpass() {
       $newpass = "";
       $laenge=10;
       $string="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
     
       mt_srand((double)microtime()*1000000);
     
       for ($i=1; $i <= $laenge; $i++) {
           $newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
       }
       
       return $newpass;
    }
     
    $ident_user_id = $_POST["ident_user_id"]; 
    $ident_nick = $_POST["ident_nick"];
    $_POST["ident_pass"] = getpass(); 
    $ident_pass = $_POST["ident_pass"]; 
    $ident_mail = $_POST["ident_mail"]; 
     
    $link = mysql_query("SELECT ident_user_id FROM inf_mem_ident WHERE 1"); // Abfrage der Datenbank
       echo mysql_error();
     
    // Neue User-ID bestimmen    
       while($data = mysql_fetch_array($link)){
       $id = $data[ident_user_id] +1 ;
       }
    ?>
    <div align="center">
        <table>
        <tr>
            <td>&nbsp;</td>
        </tr>   
        </table>
        <form method="post" action="emailreg.php">
        <table style="width: 500px;" border="0" cellpadding="3" cellspacing="0">
        <tr>
            <td bgcolor="$bg3" align="left" height="20px" width="120px"><font color="#6699CC"><b>Identifikation</b></font></td>
            <td></td>
        </tr>   
        <tr>
            <td class="link2" bgcolor="$bg1" align="left" height="20px" width="120px">User ID: <input type="TEXT" size="5" name="" value="<? echo $id ?>" readonly></td>
            <td></td>       
        </tr>
        </table>
        <table>
        <tr>
            <td>&nbsp;</td>
        </tr>   
        </table>        
        <table style="width: 500px;" border="0" cellpadding="3" cellspacing="0">
        <tr>
            <td bgcolor="$bg3" height="20px" colspan="2"><font color="#6699CC"><b>Mitglied Anlegen</b></font></td>
        </tr>
        <tr bgcolor="$bg1">
            <td class="link2" height="20px" width="140px">Nick:</td>    
            <td width="300px"><input type="text" size="30" maxlength="30" name="ident_nick" <? if(isset($_REQUEST[ident_nick])){ 
        echo("value=\"".$_REQUEST[ident_nick]."\""); } ?> class="input"> </td>  
        </tr>   
        <tr bgcolor="$bg2">
            <td class="link2" height="20px" width="140px">Password eingeben:</td>
            <td width="300px"><input type="password" size="30" maxlength="30" name="" value="<? echo $ident_pass ?>" <? if(isset($_REQUEST[$ident_pass])){ 
        echo("value=\"".$_REQUEST[$ident_pass]."\""); } ?> readonly></td>       
        </tr>       
        <tr bgcolor="$bg2">
            <td class="link2" height="20px" width="140px">E-Mail:</td>  
            <td width="300px"><input type="mail" size="50" maxlength="80" name="ident_mail" value="@" <? if(isset($_REQUEST[ident_mail])){ 
        echo("value=\"".$_REQUEST[ident_mail]."\""); } ?> class="input"></td>   
        </tr>   
        </table>    
        <table>
        <tr>
            <td>&nbsp;</td>
        </tr>   
        </table>    
        <table style="width: 500px" border="0" cellpadding="3" cellspacing="0">
        <tr>
             <td></td>
             <td><input type="submit" value="Mitglied Anlegen">
                 <input type="button" value="Abbrechen" onClick=window.location.href="javascript:history.back()">
             </td>
           </tr>
        </table>
        </form> 
        <table> 
        <tr>
            <td>&nbsp;</td>
        </tr>   
        </table>
    </div>
     
    <?
    $sql = "SELECT ident_nick FROM inf_mem_ident WHERE Nickname='".$ident_nick."'"; // Nick überprüfen
    $result = mysql_query($sql, $verbindung); 
    if (mysql_num_rows($result)>0) 
        { 
        $nickname_inuse = "1"; 
        } 
         
    $sql = "SELECT ident_mail FROM inf_mem_ident WHERE EMail='".$ident_mail."'"; // E-Mail überprüfen 
    $result = mysql_query($sql, $verbindung); 
    if (mysql_num_rows($result)>0) 
        { 
        $email_inuse = "1"; 
        }
     
    // Eintrag merken   
    if(isset($_REQUEST['ident_nick'])){     
        if(strlen($_REQUEST['ident_nick']) > 0 && strlen($_REQUEST['ident_pass']) > 0 && strlen($_REQUEST['ident_mail']) > 0){ 
        }else{ 
          $error = "Es ist ein Fehler beim ausführen entstanden!.<br>"; 
        } 
      } 
     
    // Eintrag vornehmen  
    if ($_POST['submit'] == "insert") {
        $insert = "INSERT INTO inf_mem_ident SET
        nick='".$_POST['ident_nick']."',
        password=MD5'".$_POST['ident_pass']."', 
        mail='".$_POST['ident_mail']."'";
        mysql_query($insert); 
        }
     
    mysql_close($verbindung); // Verbindung schliessen
     
    include("footer.html");  
    ?>

    Wenn ich Submit drücke wird die Bestätigung aufgerufen mit den Angaben die ich vorher eingetragen habe - das ist auch schon alles. Wer könnte mir hier behilflich sein? Vielleicht mit einer kurzen Erklärung warum weshalb usw!? Wäre echt nett von euch!

    thx
    ice
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  2. #2
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Keiner eine Idee?
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  3. #3
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Die Länge des geposteten Quellcodes ist proportional zur sinkenden Lust sich dem Problem anzunehmen!

    PHP-Code:
    if ($_POST['submit'] == "insert") {
        
    $insert "INSERT INTO inf_mem_ident SET
        nick='"
    .$_POST['ident_nick']."',
        password=MD5'"
    .$_POST['ident_pass']."',
        mail='"
    .$_POST['ident_mail']."'";
        
    mysql_query($insert);
        } 
    Wenn Du das gepostete HTML-Formular abschicken solltest, dann ist $_POST['submit'] niemals "insert", sondern immer "Mitglied Anlegen".

    nur leider wird keine Mail verschickt
    Das liegt wohl daran, dass Du vergessen hast die mail()-Funktion zu verwenden. Zumindest konnte ich diese in Deinem Quellcode nicht erblicken.

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  4. #4
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    Okay!

    1) Email wird nicht verschickt, weil du die mail() Funktion nicht genutzt hast!
    2) Der Eintrag kann nicht vorgenommen werden, weil deine SQL-Syntax vollkommen falsch ist!

    Dein Code:
    PHP-Code:
    if ($_POST['submit'] == "insert") { 
        
    $insert "INSERT INTO inf_mem_ident SET 
        nick='"
    .$_POST['ident_nick']."', 
        password=MD5'"
    .$_POST['ident_pass']."', 
        mail='"
    .$_POST['ident_mail']."'"
        
    mysql_query($insert); 
        } 
    So wärs richtig:
    PHP-Code:
    $insert "INSERT INTO inf_mem_ident (nick, password, mail) VALUES
                      ('"
    .$_POST['ident_nick']."',
                      MD5('"
    .$_POST['ident_pass']."'),
                      '"
    .$_POST['ident_mail'."')";
    mysql_query($insert
    SET wird nur in Verbindung mit 'UPDATE' genutzt, also wenn du einen Eintrag editieren willst!
    mfg
    split

    //EDIT: In die Datenbank solltest du die per Variable übergebenen Werte (Email usw) NIE direkt einfügen. Aus Sicherheitsgründen solltest du immer addslashes() und htmlspecialchars() vor dem einzufügendem Wert nutzen (z.B. '".addslashes(htmlspecialchars($_POST['ident_mail']))."')
    Geändert von split (17.01.04 um 22:39 Uhr)
     

  5. #5
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    ...und dann eben mit mail() versenden:

    PHP-Code:
    mail($_POST['ident_mail'], $subject$message$head); 
     

  6. #6
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Vielen Dank für eure Hilfe!
    Ich werde das nun versuchen umzusetzen.
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  7. #7
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    sooo......!
    Nach einiger Arbeit an meinem Skript wird nun die E-Mail verschickt! Aber ich habe immer noch Probleme mit dem Eintrag in der Datenbank:

    Code :
    1
    2
    3
    4
    
    if ($_POST['submit'] == "Mitglied Anlegen") {
        $insert = "INSERT INTO inf_mem_ident ('ident_nick', 'ident_pass', 'ident_mail') VALUES 
        ('".addslashes(htmlspecialchars($_POST['ident_nick']))."', MD5('".addslashes(htmlspecialchars($_POST['ident_pass']))."'), '".addslashes(htmlspecialchars($_POST['ident_mail']))."')"; 
        }

    Was kann da nur verkehrt sein?
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  8. #8
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Du musst das SQL-Statement natürlich noch mit "mysql_query " ausführen
    --> http://de.php.net/mysql_query

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  9. #9
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Ok, das hatte ich beim ändern übersehen bzw vergessen wieder mit reinzunehmen. Ich habe nun die Zeile eingefügt aber nichts tut sich. Wenn ich wenigstens eine Fehlermeldung bekommen würde.....!
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  10. #10
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Fehlermeldungen bekommst Du über mysql_error
    --> http://de.php.net/mysql_error
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  11. #11
    MiLa MiLa ist offline Mitglied Smaragd
    Registriert seit
    Aug 2003
    Beiträge
    1.166
    Ändere deine MySQL Querys mal wie folgt ab:
    PHP-Code:
    mysql_query("") or die(mysql_error()); 
    Vieleicht bekommst du so ja eine aussagekräftige Fehlermeldung
     

  12. #12
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Es kommt einfach keine Fehlermeldung!
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  13. #13
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Habs hinbekommen!

    Danke für eure Tips.

    mfg
    ice
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

  14. #14
    MiLa MiLa ist offline Mitglied Smaragd
    Registriert seit
    Aug 2003
    Beiträge
    1.166
    Bitte nochmal die Lösung für die Nachwelt hinterlassen...

    Danke
     

  15. #15
    Avatar von icefire
    icefire icefire ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    Kerpen
    Beiträge
    217
    Ok, hier mein Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    <?
    if($_POST[ident_nick]==''){
      $addmem = 1;  
      echo"<table style=\"width: 500px\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
            <tr>
             <td bgcolor=\"".$bg1."\"><font color=\"#ff0000\">Es wurde kein Nick angegeben.</font></td>
            </tr>
           </table><br>";
      }
    if($_POST[ident_mail]==''){
      $addmem = 1;  
      echo"<table style=\"width: 500px\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
            <tr>
             <td bgcolor=\"".$bg1."\"><font color=\"#ff0000\">Es wurde keine Mail angegeben.</font></td>
            </tr>
           </table><br>";
      }
    if (!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*". "@([a-z0-9]+([\.-][a-z0-9]+))*$",$_POST[ident_mail])){
      $addmem = 1;  
      echo"<table style=\"width: 500px\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
            <tr>
             <td bgcolor=\"".$bg1."\"><font color=\"#ff0000\">Die angegebene Mailadresse ".$_POST[ident_mail]." ist ungültig.</font></td>
            </tr>
           </table><br>";
      }    
    if($addmem == 1){echo "<br><a href=index.php?file=test/neuanlage><font size=\"+1\">Zurück</font></a>";}
    if($addmem != 1)
        {
        $insert = "INSERT INTO inf_mem_ident (ident_nick, ident_pass, ident_mail) VALUES 
        ('".addslashes(htmlspecialchars($_POST[ident_nick]))."', MD5('".addslashes(htmlspecialchars($_POST[ident_pass]))."'), '".addslashes(htmlspecialchars($_POST[ident_mail]))."')"; 
        echo $insert. "<br><span style=\"color: #FFCC00;\">Ein Eintrag in die Datenbank ist erfolgt!</span>"; 
        mysql_query($insert, $verbindung) or die(mysql_error());        
        }
    ?>

    Natürlich könnte man noch die if Schleife vereinfachen bzw. abspecken - aber alles zu seiner Zeit! Vielleicht hat ja noch jemand eine andere Lösung parat!?
     
    Linux is like a wigwam. No windows, no gates, only apache inside.

    Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun.

Ähnliche Themen

  1. Email bei Datenbankeintrag
    Von outless im Forum PHP
    Antworten: 1
    Letzter Beitrag: 11.03.10, 00:07
  2. Datenbankeintrag ohne Formular
    Von eugster im Forum PHP
    Antworten: 8
    Letzter Beitrag: 23.02.06, 10:32
  3. Kontaktinfo-Formular wird nicht versandt
    Von huginwp im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 09.08.05, 20:20
  4. MySQL: Datenbankeintrag per Formular
    Von FBIagent im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 01.07.05, 00:50
  5. Antworten: 0
    Letzter Beitrag: 04.09.04, 19:29