update bevestiging via email.

Overzicht Reageren

Dendeze ikke

dendeze ikke

04/03/2013 11:35:21
Quote Anchor link
Beste,
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?

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.
 
PHP hulp

PHP hulp

31/07/2014 01:15:24
 
- SanThe -

- SanThe -

04/03/2013 11:42:07
Quote Anchor link
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=


Dan moet je dus daar gaan zoeken naar de fout.
 
Elwin - Fratsloos

Elwin - Fratsloos

04/03/2013 11:44:15
Quote Anchor link
Staat die variabele wel in de tekst van de e-mail? Ik denk dat het daar fout zal gaan, aangezien bij het aanroepen de GET-var leeg is.

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.
 
Dendeze ikke

dendeze ikke

04/03/2013 11:50:07
Quote Anchor link
Hoi Elwin,
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:
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=


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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<a href="http://www.******.be/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
?>
 
- SanThe -

- SanThe -

04/03/2013 14:35:19
Quote Anchor link
Waar komt $row->adv_id vandaan?
 
Dendeze ikke

dendeze ikke

04/03/2013 14:42:22
Quote Anchor link
- 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.
 
- SanThe -

- SanThe -

04/03/2013 14:44:20
Quote Anchor link
Maar daar gaat blijkbaar iets niet goed.
 
Elwin - Fratsloos

Elwin - Fratsloos

04/03/2013 14:45:17
Quote Anchor link
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.
 
Dendeze ikke

dendeze ikke

04/03/2013 14:48:05
Quote Anchor link
- 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
 
Eddy E

Eddy E

04/03/2013 17:08:19
Quote Anchor link
Daarna het ID ophalen met daarin een vergelijking met de gegevens die je net opsloeg?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 ";
?>


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!
 
Dendeze ikke

dendeze ikke

05/03/2013 10:54:56
Quote Anchor link
Hoi Eddy,
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<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.
 
- SanThe -

- SanThe -

05/03/2013 10:59:18
Quote Anchor link
Geef eens iets meer code van hoe je het id ophaalt en in de link zet.
 
Eddy E

Eddy E

05/03/2013 11:15:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_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)
PHP script in nieuw venster Selecteer het PHP script
1
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 "
;
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<a href="http://www.*****.be/pages/index.php?pagina=bevestig&adv_id='. $row->adv_id .'">
?>


Verander dat eens naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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.
 
Dendeze ikke

dendeze ikke

05/03/2013 11:19:13
Quote Anchor link
- 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)
PHP script in nieuw venster Selecteer het PHP script
1
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.'
;
?>

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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//

?>
 
Koen Vlaswinkel

Koen Vlaswinkel

05/03/2013 14:37:47
Quote Anchor link
Dendeze ikke op 04/03/2013 14:48:05:
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

Deze functie bestaat nog wel, alleen is hij deprecated, maar dat zijn alle mysql_* functies. Als je dat zo erg vindt moet je ook niet mysql_query gebruiken.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
?>
Gewijzigd op 05/03/2013 14:38:25 door Koen Vlaswinkel
 
Dendeze ikke

dendeze ikke

07/03/2013 17:31:22
Quote Anchor link
Hoi,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>

?>

Nog iemand enig idee ?
 
- SanThe -

- SanThe -

07/03/2013 18:05:04
Quote Anchor link
Dendeze ikke op 07/03/2013 17:31:22:
Warning: mysqli_insert_id() expects exactly 1 parameter, 0 given

Nog iemand enig idee ?


Lezen misschien?
 
Marvin H

Marvin H

08/03/2013 09:29:02
Quote Anchor link
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
 



Overzicht Reageren