update bevestiging via email.
Ik sla gegevens op in de databank. Via een email wil ik een bevestiging (update) doen om het zoekertje te activeren.
Het lukt me echter niet om deze update uit te voeren.
Link mail: <a href="http://www.******.be/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
Code bevestiging
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
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
<?
include('system/config.connection.php');
$adv_id = $_GET['adv_id'];
/* sql voor updaten*/
if(isset ($_GET['adv_id']))
{
$sql =
"
UPDATE
advertenties SET geactiveerd = '1'
WHERE
adv_id = '". mysql_real_escape_string($_GET['adv_id']) ."'
";
mysql_query($sql) or die (mysql_errno());
echo'<br></br>
<center>
Beste '.$_POST["naam"].', <br><br>
Uw zoekertje is correct bevestigt en staat nu online op onze site.<br><br>
Met Vriendelijke Groet<br>
</center>';
}else{
echo '<center><font color="#FF0000"><br></br> Uw advertentie is reeds bevestigd en deze activeerlink is niet meer geldig!</font></center>';
}
?>
include('system/config.connection.php');
$adv_id = $_GET['adv_id'];
/* sql voor updaten*/
if(isset ($_GET['adv_id']))
{
$sql =
"
UPDATE
advertenties SET geactiveerd = '1'
WHERE
adv_id = '". mysql_real_escape_string($_GET['adv_id']) ."'
";
mysql_query($sql) or die (mysql_errno());
echo'<br></br>
<center>
Beste '.$_POST["naam"].', <br><br>
Uw zoekertje is correct bevestigt en staat nu online op onze site.<br><br>
Met Vriendelijke Groet<br>
</center>';
}else{
echo '<center><font color="#FF0000"><br></br> Uw advertentie is reeds bevestigd en deze activeerlink is niet meer geldig!</font></center>';
}
?>
Als ik de link aanklik in de mail, zie ik ook dat er geen adv_id word mee gestuurd in de browser!
http://www.*****.be/index.php?pagina=bevestig&adv_id=
Alvast bedankt.
Dendeze ikke op 04/03/2013 11:35:21:
Als ik de link aanklik in de mail, zie ik ook dat er geen adv_id word mee gestuurd in de browser!
http://www.*****.be/index.php?pagina=bevestig&adv_id=
http://www.*****.be/index.php?pagina=bevestig&adv_id=
Dan moet je dus daar gaan zoeken naar de fout.
Overigens is het niet slim om het op deze manier te doen. Veel mensen zullen al heel snel doorhebben dat ze door het wijzigen van adv_id advertenties van anderen kunnen activeren. Geef op zijn minst nog een persoonlijke waarde mee in de link (e-mailadres) waarbij je bij het bevestigscript eerst controleert of het e-mailadres en de adv_id bij elkaar horen.
Ik gebruik overigens altijd een md5-string die als activatiecode in de link mee wordt gegeven (in combinatie met het e-mailadres). Deze md5-string staat dan ook in de database (in deze situatie bij de advertentie). Op die manier controleer ik dat de advertentie ook echt bij het e-mailadres hoort.
Ik heb in de database ook nog een string staan om controle uit te voeren op de echtheid van de bevestiging.
Ik wilde echter eerst testen of ik het zo voor elkaar kreeg en de update kon uitvoeren. Ik ga nu eerst controleren of de variabele wel in de mail staat.
thx.
Toevoeging op 04/03/2013 14:31:47:
- SanThe - op 04/03/2013 11:42:07:
Dan moet je dus daar gaan zoeken naar de fout.
Dendeze ikke op 04/03/2013 11:35:21:
Als ik de link aanklik in de mail, zie ik ook dat er geen adv_id word mee gestuurd in de browser!
http://www.*****.be/index.php?pagina=bevestig&adv_id=
http://www.*****.be/index.php?pagina=bevestig&adv_id=
Dan moet je dus daar gaan zoeken naar de fout.
Het zit dus inderdaad in de link die ik verstuur. Hij geeft de waarde van row->adv_id niet mee. Dus hoe los ik deze op ?
Link mail:
Waar komt $row->adv_id vandaan?
- SanThe - op 04/03/2013 14:35:19:
Waar komt $row->adv_id vandaan?
Uit de gegevens die ik in de databank zet bij het plaatsen van een zoekertje.
Maar daar gaat blijkbaar iets niet goed.
- SanThe - op 04/03/2013 14:44:20:
Maar daar gaat blijkbaar iets niet goed.
Inderdaad ! Vroeger gebruikte ik dit, maar de functie insert_id() is vervallen.
<a href="http://www.*****.be/index.php?pagina=bevestig='. $bevestig .'&id='. mysql_insert_id() .'">
Toevoeging op 04/03/2013 15:36:27:
Elwin - Fratsloos op 04/03/2013 14:45:17:
Als adv_id een auto_increment is zal je de waarde van dat id na het opslaan van de gegevens op moeten halen met mysql_insert_id.
Inderdaad Elwin, maar deze functie bestaat niet meer in php 5.3
Code (php)
1
2
3
4
2
3
4
<?php
$save = "INSERT INTO tabel (naam, adres, telefoonnummer) VALUES ('Kees', 'Hoofdstraat 1', '0123456789');";
$get_id = "SELECT id FROM tabel WHERE naam = 'Kees' AND adres = 'Hoofdstraat 1' AND telefoonnummer = '0123456789' ORDER BY id DESC LIMIT 0, 1 ";
?>
$save = "INSERT INTO tabel (naam, adres, telefoonnummer) VALUES ('Kees', 'Hoofdstraat 1', '0123456789');";
$get_id = "SELECT id FROM tabel WHERE naam = 'Kees' AND adres = 'Hoofdstraat 1' AND telefoonnummer = '0123456789' ORDER BY id DESC LIMIT 0, 1 ";
?>
Uiteraard is dit alleen de query, die je moet uitvoeren, controleren etc.
De ORDER BY id moet eigenlijk niet nodig zijn, aangezien je bij dit onderwerp geen identieke informatie in je tabel wil. Maar als je dat wel wilt, moet je de laatste selecteren (dat doe je met die order in combinatie met de LIMIT).
Als het wel uniek is, dan is de WHERE genoeg.
Is dit sneller dan mysql_inserted_id()? Nee. Werkt het goed én betrouwbaar: ja!
Deze manier lijkt logisch, maar toch werkt ze niet. Krijg nog steeds geen adv_id in de email bij bevestiging. Heb het op deze manier geprobeerd:
Code (php)
1
2
3
2
3
<?php
$_get_adv_id = "SELECT * FROM advertenties WHERE naam = 'naam' AND bevestig = 'bevestig' AND email = 'email' LIMIT 1 ";
?>
$_get_adv_id = "SELECT * FROM advertenties WHERE naam = 'naam' AND bevestig = 'bevestig' AND email = 'email' LIMIT 1 ";
?>
En dit is de link in de mail:
Code (php)
1
2
3
2
3
<?php
<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
?>
<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
?>
Hij voert het script wel uit, maar neemt geen id mee, dus doet ook geen update.
Geef eens iets meer code van hoe je het id ophaalt en in de link zet.
Code (php)
1
2
3
2
3
<?php
$_get_adv_id = "SELECT * FROM advertenties WHERE naam = 'naam' AND bevestig = 'bevestig' AND email = 'email' LIMIT 1 ";
?>
$_get_adv_id = "SELECT * FROM advertenties WHERE naam = 'naam' AND bevestig = 'bevestig' AND email = 'email' LIMIT 1 ";
?>
Nee, want er is niemand die naam heet met emailadres email.
Jij zoekt iets als:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$_get_adv_id = "
SELECT adv_id
FROM advertenties
WHERE naam = '".$naam."'
AND bevestig = '".$bevestig."'
AND email = '".$email."'
LIMIT 1 ";
?>
$_get_adv_id = "
SELECT adv_id
FROM advertenties
WHERE naam = '".$naam."'
AND bevestig = '".$bevestig."'
AND email = '".$email."'
LIMIT 1 ";
?>
Maar goed, wellicht gebruik je andere variabelen en kolommen.
Dus: welke INSERT-query gebruik je?
?>
Toevoeging op 05/03/2013 11:17:04:
Code (php)
1
2
3
2
3
<?php
<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
?>
<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
?>
Verander dat eens naar:
Code (php)
1
2
3
2
3
<?php
echo '<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id . '">klik</a>';
?>
echo '<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id . '">klik</a>';
?>
Let dus op de quotes. Ik heb er even een echo bij gezet zodat je kan zien wat ik doe.
- SanThe - op 05/03/2013 10:59:18:
Geef eens iets meer code van hoe je het id ophaalt en in de link zet.
Het komt eigenlijk allemaal uit een formulier. Dit formulier slaat de gegevens op in de databank en toont op het einde de boodschap:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
echo '
Beste ' . $_POST["naam"] . ' ,<br>
Uw zoekertje staat nog niet online. <br>
Er is een E-mail verstuurd naar: ' . $_POST["email"] . ' ,<br>
om uw advertentie met te activeren.';
?>
echo '
Beste ' . $_POST["naam"] . ' ,<br>
Uw zoekertje staat nog niet online. <br>
Er is een E-mail verstuurd naar: ' . $_POST["email"] . ' ,<br>
om uw advertentie met te activeren.';
?>
Hierna verzend ik de email.
Dit werkt allemaal, enkel krijg ik het adv_id niet mee in de link.
Toevoeging op 05/03/2013 11:32:26:
@Eddy,
Dit is de insert:
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
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
<?php
/*opslaan gevens voor databank*/
$SQL = "INSERT INTO
advertenties
(
`adv_id` ,
`naam` ,
`foto` ,
`foto1` ,
`foto2` ,
`foto3` ,
`email` ,
`nb` ,
`titel` ,
`tekst` ,
`telefoon` ,
`gepl_op` ,
`gepl_tot` ,
`cat_id` ,
`bevestig` ,
`ip` ,
`provider`
)
VALUES (
NULL , '". mysql_real_escape_string ($_POST["naam"]) ."', '". $foto ."', '". $foto1 ."', '". $foto2 ."', '". $foto3 ."', '". mysql_real_escape_string ($_POST["email"]) ."', '". $nb ."', '". mysql_real_escape_string ($_POST["titel"]) ."', '". mysql_real_escape_string ($_POST["tekst"]) ."', '". mysql_real_escape_string ($_POST["telefoon"]) ."', '". $timestamp ."' , '". $timestamp2 ."', '". mysql_real_escape_string ($_POST["categorie"]) ."', '". $bevestig ."', '" .mysql_real_escape_string ($_SERVER['REMOTE_ADDR'])."', '" .gethostbyaddr($_SERVER['REMOTE_ADDR'])."'
)";
if(!$result = mysql_query($SQL))
{
trigger_error(mysql_error());
}
else
{ //hier de boodschap//
//selecteren gegevens voor mail//
//mail verzenden//
?>
/*opslaan gevens voor databank*/
$SQL = "INSERT INTO
advertenties
(
`adv_id` ,
`naam` ,
`foto` ,
`foto1` ,
`foto2` ,
`foto3` ,
`email` ,
`nb` ,
`titel` ,
`tekst` ,
`telefoon` ,
`gepl_op` ,
`gepl_tot` ,
`cat_id` ,
`bevestig` ,
`ip` ,
`provider`
)
VALUES (
NULL , '". mysql_real_escape_string ($_POST["naam"]) ."', '". $foto ."', '". $foto1 ."', '". $foto2 ."', '". $foto3 ."', '". mysql_real_escape_string ($_POST["email"]) ."', '". $nb ."', '". mysql_real_escape_string ($_POST["titel"]) ."', '". mysql_real_escape_string ($_POST["tekst"]) ."', '". mysql_real_escape_string ($_POST["telefoon"]) ."', '". $timestamp ."' , '". $timestamp2 ."', '". mysql_real_escape_string ($_POST["categorie"]) ."', '". $bevestig ."', '" .mysql_real_escape_string ($_SERVER['REMOTE_ADDR'])."', '" .gethostbyaddr($_SERVER['REMOTE_ADDR'])."'
)";
if(!$result = mysql_query($SQL))
{
trigger_error(mysql_error());
}
else
{ //hier de boodschap//
//selecteren gegevens voor mail//
//mail verzenden//
?>
Dendeze ikke op 04/03/2013 14:48:05:
Inderdaad Elwin, maar deze functie bestaat niet meer in php 5.3
Elwin - Fratsloos op 04/03/2013 14:45:17:
Als adv_id een auto_increment is zal je de waarde van dat id na het opslaan van de gegevens op moeten halen met mysql_insert_id.
Inderdaad Elwin, maar deze functie bestaat niet meer in php 5.3
Oke, het werkt bij veel mensen dus blijkbaar niet (zie http://www.mail-archive.com/php-bugs@lists.php.net/msg140923.html). In dat geval kan je wel nog een query uitvoeren met:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$res = mysql_query("SELECT LAST_INSERT_ID() as LID");
$r = mysql_fetch_assoc($res);
echo "LAST-ID (Query): " . $r['LID'];
?>
$res = mysql_query("SELECT LAST_INSERT_ID() as LID");
$r = mysql_fetch_assoc($res);
echo "LAST-ID (Query): " . $r['LID'];
?>
Gewijzigd op 05/03/2013 14:38:25 door Koen Vlaswinkel
Nu heb ik de connectie op mysqli over gezet voor de functie mysqli_insert_id en krijg de volgende foutmelding:
Warning: mysqli_insert_id() expects exactly 1 parameter, 0 given in /customers/e/9/4/*****.be/httpd.www/pages/free.php on line 305
De variable bevestig komt uit een unieke string en word wel mee gegeven.
http://www.*****.be/index.php?pagina=bevestig&con=euzNaN5&id=
Maar nog steeds krijg ik het ID dus niet mee!
Code (php)
1
2
3
4
5
2
3
4
5
<?php
<p>Om uw zoekertje te activeren
<a href="http://www.donsiegirl.be/index.php?pagina=bevestig&con='. $bevestig .'&id='. mysqli_insert_id() .'"><b> KLIK HIER. </b></a></p>
?>
<p>Om uw zoekertje te activeren
<a href="http://www.donsiegirl.be/index.php?pagina=bevestig&con='. $bevestig .'&id='. mysqli_insert_id() .'"><b> KLIK HIER. </b></a></p>
?>
Nog iemand enig idee ?
Dendeze ikke op 07/03/2013 17:31:22:
Warning: mysqli_insert_id() expects exactly 1 parameter, 0 given
Nog iemand enig idee ?
Nog iemand enig idee ?
Lezen misschien?
OffTopic: Ik snap in ieder geval waar er steeds op de plek van het domein ***** worden neergezet :)... Iets met escort en dating site? haha... in de laatste post heb je de domeinnaam laten staan