afmeldlink werkt niet correct
Ik verstuur 'n nieuwsbrief naar alle personen in de db, die krijgen hem dus da's ok.
De afmeldlink werkt niét correct : er wordt nochthans een variabele ID meegegeven in de db bij ingave van de naam en emailadres maar wanneer ik de mail verstuur en in de code kijk van de - in outlook - gearriveerde nieuwsbrief zie ik dat de afmeldlink telkens klaarstaat om de ID van de eerste record in de databank te verwijderen.
Als ik op de link druk, tjah...dan verwijdert hij deze ook : dus niét de ID van de specifieke persoon die de mail heeft ontvangen...
Wat doe ik mis ?
alvast bedankt !
code mail versturen :
Code (php)
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
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
<?php
include('../connect.php');
$bericht = Stripslashes($_POST['content']);
$onderwerp = Stripslashes($_POST['onderwerp']);
$tekst = "
<html>
$bericht
</html>" ;
$query = "SELECT DISTINCT email FROM `mailing`";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$headers = "From: $van_naam<$van_email>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
mail($row['email'], $onderwerp, $tekst, $headers);
};
echo "<font face='haettenschweiler'><center>verzonden!</center></font>";
?>
include('../connect.php');
$bericht = Stripslashes($_POST['content']);
$onderwerp = Stripslashes($_POST['onderwerp']);
$tekst = "
<html>
$bericht
</html>" ;
$query = "SELECT DISTINCT email FROM `mailing`";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$headers = "From: $van_naam<$van_email>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
mail($row['email'], $onderwerp, $tekst, $headers);
};
echo "<font face='haettenschweiler'><center>verzonden!</center></font>";
?>
code verwerken van delete :
Code (php)
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
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
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
if ((isset($_GET['DELETE'])) && ($_GET['DELETE'] != "")) {
$deleteSQL = sprintf("DELETE FROM mailing WHERE ID=%s",
GetSQLValueString($_GET['DELETE'], "int"));
mysql_select_db($database_tutorial, $tutorial);
$Result1 = mysql_query($deleteSQL, $tutorial) or die(mysql_error());
$deleteGoTo = "gedaan.html";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
mysql_select_db($database_tutorial, $tutorial);
$query_Recordset1 = "SELECT * FROM mailing";
$Recordset1 = mysql_query($query_Recordset1, $tutorial) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
mysql_free_result($Recordset1);
?>
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
if ((isset($_GET['DELETE'])) && ($_GET['DELETE'] != "")) {
$deleteSQL = sprintf("DELETE FROM mailing WHERE ID=%s",
GetSQLValueString($_GET['DELETE'], "int"));
mysql_select_db($database_tutorial, $tutorial);
$Result1 = mysql_query($deleteSQL, $tutorial) or die(mysql_error());
$deleteGoTo = "gedaan.html";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
mysql_select_db($database_tutorial, $tutorial);
$query_Recordset1 = "SELECT * FROM mailing";
$Recordset1 = mysql_query($query_Recordset1, $tutorial) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
mysql_free_result($Recordset1);
?>
code nieuwsbrief :
?php
mysql_select_db($database_tutorial, $tutorial);
$query_Recordset1 = "SELECT * FROM mailing";
$Recordset1 = mysql_query($query_Recordset1, $tutorial) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<p>nieuwsbrief.</p>
<p> </p>
<p><a href="http://www.f-inject.be/apps/newsletter/nieuwsbrief3/admin/verwerk_delete.php?DELETE=">uitschrijven ? </a></p>
</body>
</html>
Het lijkt erop dat je de content van de email niet correct aanmaakt.
Edit en offtopic: Door alleen het id in de url op te nemen, wordt het wel erg gemakkelijk om jouw database even leeg te gooien... Iedereen kan zelf de url aanpassen!
Tip: Gooi nooit iets weg, zet gewoon een parameter op FALSE (extra kolom toevoegen) en klaar ben je. Uiteraard wel even de SELECT-query laten checken op deze parameter.
Het emailadres met id ga je hashen, bv. met SHA1(), zet je in de url en bij het uitlezen van de url ga je vergelijken of deze hash overeenkomst met de hash van de gegevens die in de database staan. Dit is erg lastig te hacken.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
'k ga wat verder zoeken, thx voor de hulp !!