Formular: Email wir nicht versandt - kein Datenbankeintrag!

icefire

Erfahrenes Mitglied
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:
<?
$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
 
Die Länge des geposteten Quellcodes ist proportional zur sinkenden Lust sich dem Problem anzunehmen!

PHP:
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
 
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:
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:
$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']))."')
 
Zuletzt bearbeitet:
...und dann eben mit mail() versenden:

PHP:
mail($_POST['ident_mail'], $subject, $message, $head);
 
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:
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?
 
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.....!
 
Zurück