-
mail() nur an eine id
Hallo Leute,
bin in PHP ziehmlich eingerostet, da ich erst wieder seit langem (ca. 2 Jahre) was mit PHP mache.
Ich Schreib derzeit ein kleines Freundschaftstest Script. Die Registrierung und das Verschicken funktioniert soweit, das Problem jedoch
ist das die Ergebnisse des Tests an jede Email in der Datenbank verschickt.
Folgendermaßen sieht bei mir die Abfrage aus:
Code:
$result = mysql_query ("SELECT * FROM ft");
$num = mysql_num_rows($result);
if (mysql_num_rows($result))
{
while($row = mysql_fetch_array($result))
{
$id=$row['id'];
$name=$row['name'];
$email=$row['email'];
$ip = $_SERVER['REMOTE_ADDR'];
mail($email, $betreff, $ausgabe, $extra, "FROM: Freunde-Test.xe.cx - Team");
}
}
Der Code funktioniert zwar, jedoch habe ich das Problem das mail() die Email an jeden schickt, die in der Datenbank Registriert ist.
Ich habe auch schon Probiert
Code:
$result = mysql_query ("SELECT * FROM ft WHERE id ='".$_GET['id']."'");
zu machen, leider erfolgslos, er Schickt ab da dann keine Email mehr.
Kann mir da jemand Helfen?
Mit freundlichen Grüßen
-
Also die Idee mit in die SQL Abfrage zu tun ist schonmal soweit ganz richtig ;):
Code:
$result = mysql_query ("SELECT * FROM ft WHERE id ='".$_GET['id']."'");
und da wir es ja sicher haben wollen,... scannen wir das $_GET lieber nochmal nach irgendwelchen Injections
also
mysql_real_escape_string
Code:
$result = mysql_query ("SELECT * FROM ft WHERE id ='".mysql_real_escape_string($_GET['id'])."'");
siehe http://de.php.net/mysql_real_escape_string
Dann muss aber das darauffolgende anders:
PHP-Code:
if (is_array($result)) //Das zählen der Reihen und dann das überprüfen hätte keinen richtigen Sinn da dort eh nur 1 Zeile gibt! Also so ist es gut denn wenn alles richtig ist kommt ein array, wenn nicht false als Ausgabe
{
while ($row = mysql_fetch_assoc($result)) { //Hier war es fast richtig nur nicht mysql_fetch_arrary sondern mysql_fetch_assoc
{
$id=$row['id'];
$name=$row['name'];
$email=$row['email'];
$ip = $_SERVER['REMOTE_ADDR'];
mail($email, $betreff, $ausgabe, $extra, "FROM: Freunde-Test.xe.cx - Team");
}
}
Infos:
http://de.php.net/is_array
http://de.php.net/manual/de/function...etch-assoc.php
So müsste eigentlich alles gehen ;)
-
Hast vergessen das if zu schließen :P
Leider funktioniert des trotzdem nicht, jetzt schickt er wieder keine Emails, so wie vorhin erwähnt, sobald ich
PHP-Code:
WHERE id ='".mysql_real_escape_string($_GET['id'])."'");
einfüge, für mich echt ein Rätsel..
lg
-
PHP-Code:
$result = mysql_query ("SELECT * FROM ft WHERE id ='".mysql_real_escape_string($_GET['id'])."'");
also dies ist aber so richtig :P (bin ich mir ziemlich sicher ;) )
was sagt er denn wenn du des result diest.
Also danach einfach mal folgendes einfügst:
PHP-Code:
die($result."<br>".mysql_error());
Dann sollte eigentlich ein Aufschlussreicher Error kommen ;)
-
Da kommt "Resource id #6"? :D
lg
-
Was laber ich hier eigentlich gerade -.-... Ich glaub ich muss ins Bett ^^ also probier es mal so:
PHP-Code:
$result = mysql_query ("SELECT * FROM ft WHERE id ='".mysql_real_escape_string($_GET['id'])."'");
$row = mysql_fetch_array($result);
if($row){
$id=$row['id'];
$name=$row['name'];
$email=$row['email'];
$ip = $_SERVER['REMOTE_ADDR'];
mail($email, $betreff, $ausgabe, $extra, "FROM: Freunde-Test.xe.cx - Team");
}
Ich programmiere in letzter Zeit auch zu wenig ^^, bekomm nicht mal mehr ne Abfrage hin^^
-
Scheint trotzdem nicht zu funktionieren, hast du zufällig ICQ das ich dir mal den kompletten Code schicken kann? Weil ich verzweifel schon den ganzen Tag und weiß nich an was das liegen will. :P
lg
-
Also,... wir haben uns das gerade angeschaut, und falls jemand noch diese Theard liest ;)
Die beiden möglichkeiten von mir waren richtig ;), Problem war ein anderes ;)
Auch Contras Lösung war richtig nur dann mit:
WHERE id ='".$_GET['id']."'
und wie ja jetzt schon öfters erwähnt lieber auch mit:
mysql_real_escape_string
Also alles richtig hier, ne andere Stelle war falsch ;)
-
Jop.. dummheit muss weh tun :D
Danke für die Hilfe
lg