Mal wieder mail

jbo

Mitglied
Hi,
obwohl es scheinbar so einfach ist, krieg ich es nicht hin, das nach der Eingabe in ein Formular, welches Daten in eine sql-Datenbank schreibt, danach zur Bestätigung eine mail mit einigen Variablen an den neuen user übergeben wird.
Wo muss der $recipiend, etc. hin?

Übergabe der Daten an die tab

$sql="INSERT INTO benutzer01 (id, pwd, firma, vname, nname, strasse, hausnr, plz, ort, land, telefon, handy, fax, email) VALUES ('".$id."','".$pwd."','".$firma."','".$vname."','".$nname."','".$strasse."','".$hausnr."','".$plz."','".$ort."','".$land."','".$telefon."','".$handy."','".$fax."','".$email."')";
if(!$sql=mysql_query($sql)) {
echo mysql_error();
} else {
echo "Sie wurden erfolgreich registriert!<br><br>";
formmail.php;
}

?>



formmail.php
<?
$mailto="$email";
$subject = "Ihre Registrierungsdaten";
$msg = "<a href=http://www.xxx.com/activate.php?user=".$id." target=_blank>Hier klicken</a>\n";
$mailheaders = "From: <a href="http://www.xxx.com\n" target="_blank">http://www.xxx.com\n</a>";
$mailheaders .= "Reply-to: info@xxx.com \n";
$mailheaders .= "Content-Type: text/html; charset=iso-8859-1\n";
$senden=mail ($mailto, $subject, $msg, $mailheaders);
>

Warum das nicht?
 
Sollte in $email die E-Mail Adresse des Empfängers stehen, er schreibt diese auch in die Datenbank, du bindest dann die formmail.php via include() ein und trotzdem passiert nichts, kann ich dir auch nicht helfen.

Was jedoch wahrscheinlicher ist, ist dass er die $email auch nicht in die Datenbank einträgt, da Daten, die von Formularen übergeben werden, seit PHP 4.2.0 über die superglobalen Arrays $_POST oder $_GET angesprochen werden müssen (siehe dazu auch unsere FAQ - Sticky Thread im PHP Forum).

Also benutze $_POST['varname'] oder $_GET['varname'] (abhängig vom Übertragungsmodus) an Stelle von $varname. Dies gilt für sämtliche Variablen, die von einer auf die nächste Seite übergeben werden.
 
Die email Adresse wird eingetragen.
Hab ich die formmail.php richtig eingebunden?
Bin langsam am verzweifeln.

$sql="INSERT INTO benutzer01 (id, pwd, firma, vname, nname, strasse, hausnr, plz, ort, land, telefon, handy, fax, email) VALUES ('".$id."','".$pwd."','".$firma."','".$vname."','".$nname."','".$strasse."','".$hausnr."','".$plz."','".$ort."','".$land."','".$telefon."','".$handy."','".$fax."','".$email."')";
if(!$sql=mysql_query($sql)) {
echo mysql_error();
} else {
echo "Sie wurden erfolgreich registriert!<br><br>";
include (formmail.php);
}

?>
 
Hallo..

Speichert er denn die Inhalte in der Datenbank?!

Falls das nicht der Fall sein sollte:

$sth = $dbh->query("INSERT INTO benutzer01 (id, pwd, firma, vname, nname, strasse, hausnr, plz, ort, land, telefon, handy, fax, email) VALUES ('$id','$pwd','$firma','$vname','$nname','$strasse','$hausnr','$plz','$ort','$land','$telefon','$handy','$fax','$email')");

DB::isError($sth) and print 'Datenbankfehler: '.$sth->getMessage();


Nachtrag:

include $DOCUMENT_ROOT.'formmail.php';

SG,
Claus
 
Zuletzt bearbeitet:
Dann mach dir nach dem DB-Eintrag (Da wo du im Mom. formmail includierst eine $hilf, die du einfach bei erfolgreichem Eintrag (in der DB) auf 1 setzt.

Dann machst du einfach eine Abfrage... Wenn $hilf ==1, dann mail()

Es mag zwar unlogisch sein, aber wenn du dich mit Java (und X anderen Sprachen) auskennen würdest, wüßtest du aus Erfahrung, dass diese Dinger goldwert sind.. :-)
 
Zuletzt bearbeitet:
Bekommst du aus der Function mail(); eine Warning .


Versuch mal
PHP:
if(!mail($mailto, $subject, $msg, $mailheaders)){
 echo "fehler";
}

mail() hat als Rückgabewert true/false;

dann bist du sicher ob die mail rausgegangen ist oder nicht.

Es kann natürlich auch sein das die mail Funktion dort wo du deine Site gehostet hast nicht aktive ist. Dann könntest du dein Email über eine Socket Verbindung an einen SMTP Server schicken.
 
Zuletzt bearbeitet:
Danke, das mail hab ich im Griff.
Mein nächstes ist warscheinlich wieder ein Denkfehler. ich will vor der Übergabe an die tabelle die daten überprüfen und krieg es nicht geregelt.

Ich kriege immer die Ausgabe "Bitte geben Sie Ihre ID-Nummer an".

php:
<?
if ($identnr == "") {echo "Bitte geben Sie Ihre ID-Nummer ein.<p>" ;} {else include 'send.php';};
if ($identnr < 1600000) {echo "Dies ist keine gültige ID - Nummer<p>"; } {else include 'send.php';};
if ($pwd == "") {echo "Bitte geben Sie ein Passwort ein.<p>" ; } {else include 'send.php';};
if ($pwd_w == "") {echo "Sie müssen das Passwort bestätigen.<p>" ; } {else include 'send.php';};
if ($vname == "") {echo "Bitte geben Sie Ihren Vornamen ein.<p>" ; } {else include 'send.php';};
if ($nname == "") {echo "Bitte geben Sie Ihren Nachnamen ein.<p>" ; } {else include 'send.php';};
if ($strasse == "") {echo "Bitte geben Sie Ihre Strasse ein.<p>" ; } {else include 'send.php';};
if ($hausnr == "") {echo "Bitte geben Sie Ihre Hausnummer ein.<p>" ; } {else include 'send.php';};
if ($plz == "") {echo "Bitte geben Sie Ihre Postleitzahl ein.<p>" ; } {else include 'send.php';};
if ($ort == "") {echo "Bitte geben Sie Ihren Wohnort ein.<p>"; } {else include 'send.php';};
if ($land == "") {echo "Bitte geben Sie Ihre Land ein.<p>"; } {else include 'send.php';};
if ($telefon == "") {echo "Bitte geben Sie Ihre Telefonnr. ein.<p>" ; } {else include 'send.php';};
if ($email == "") {echo "Bitte geben Sie Ihre Emailadresse ein.<p>";} {else include 'send.php';};
if ($pwd != $pwd_w) {echo "Die eingegebenen Passwörter stimmen nicht überein.";} {else include 'send.php';};
?>
 
erstmal zu deinen überprüfungen, sicher das dir das ganze lang? eine gültige plz wäre laut der übrpüfung auch ein 'a' etc... aber gut.
des weiteren hättest du für jedes else von jedem if ein inlcude von send.php,
dies würde ich einfach ans ende aller ifs stellen...

wegen deinem fehler, mal ne dumme frage aber hast du einfach mal ein echo auf $identnummer gemacht um zehen ob auch wirkloich was drinsteht?
 
PHP:
<?

// $identnr = 333333333333333333333;

if ($identnr == ""){
echo("Bitte geben Sie Ihre ID-Nummer ein!");
}elseif($identnr < 1600000){
echo("Dies ist keine gültige ID - Nummer!");
// ...
}else{ 
include 'send.php';
}

?>
 
Zuletzt bearbeitet:
Zurück