link in verstuurde email naar pagina met usergegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tortuga web

tortuga web

08/11/2015 16:27:56
Quote Anchor link
Hallo,
Ik ben bezig een inlogpagina te maken, waarbij, om te registreren autorisatie van de webeigenaar nodig is. Dus ik heb een formulier waarbij de bezoeker naam, email en een unieke usernaam invult. Die gegevens worden opgeslagen in MySQL én naar de webeigenaar gemaild.
Nu wil ik dat de usernaam gelijk een link is naar een formulier dat de gegevens van de betreffende user uit de database haalt, zodat de webeigenaar de rest kan aanvullen en gebruikersrechten kan toekennen.
Maar ik krijg het niet voor elkaar om met de link in de email de usergegevens op te halen.
Deze link stuur ik naar de mail:

$body .= '<br>User: <a href="http://../nieuwe-aanmelding.php?user='.$_POST['user'].'">'.$_POST['user'];

En hiermee probeer ik de gegevens terug te halen, maar ik krijg de melding: User niet gevonden, dus kennelijk een leeg $result.
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
<?php
try {
        require_once ('../sql_link.php');
        $sql_select = "SELECT firstname, lastname, email FROM members WHERE user = :user";
        $userStmt = $db->prepare($sql_select);
        $userStmt->execute(array(
                        ':user' => $_GET['user']
                    ));

        $result = $userStmt->fetchAll();
        if (count($result) == 1) {
            echo $result['firstname'];
        }

        else {
            echo 'User niet gevonden.';
        }
    }

?>

Hoe kan ik dit oplossen?
 
PHP hulp

PHP hulp

25/04/2024 06:38:19
 
Thomas van den Heuvel

Thomas van den Heuvel

08/11/2015 19:12:20
Quote Anchor link
Heet de kolom ook echt "user", of "username"?

Probeer de query/het script eens apart aan te roepen om te zien of dat werkt voor een bestaande user(name), oftewel, probeer het probleem te isoleren. Als daar niets mis is worden de gegevens misschien verkeerd doorgegeven aan het e-mailbericht? Ik zou trouwens het auto_increment id gebruiken, in plaats van de username. Ik hoop/neem aan dat jouw members tabel zo'n veld heeft?
 
Tortuga web

tortuga web

08/11/2015 19:29:52
Quote Anchor link
De kolom heet inderdaad 'user', dus dat klopt.
Ik stuur de gegevens naar de mail gelijktijdig met dat ik ze in de dbase invoer. Daarom gebruik ik de 'user' en niet de id (die ik inderdaad ook heb), zodat ik niet eerst hoef in te voeren, uit te lezen en dan pas te versturen.
In de email komt de juiste $_POST['user'] aan, dat is makkelijk te controlen.
Waar ik over twijfel of het wel correct is, is de wijze van terug oproepen, dus de $_GET['user']. Ik heb eerder een soortgelijke constructie gemaakt, maar toen de gegevens via een sessie doorgestuurd, en niet via mail.
Ik zag trouwens dat ik in de link de afsluitende </a> vergeten was, maar dat maakt geen verschil.
 
Aad B

Aad B

08/11/2015 20:04:51
Quote Anchor link
:user? dubbele punt user? Is dat correcte codering? user is een reserved word in MySQL
Gewijzigd op 08/11/2015 20:07:55 door Aad B
 
Thomas van den Heuvel

Thomas van den Heuvel

08/11/2015 20:06:48
Quote Anchor link
Daarbij lijkt het mij dat alleen de gebruiker die zich zojuist heeft geregistreerd deze gegevens mag wijzigen, dus je zult daarvoor eerst in moeten loggen? Je zou een apart veld in je database bij kunnen houden (bijvoorbeeld "profiel_compleet" ofzo) die je direct doorstuurt naar je profielpagina zolang je deze niet volledig invult.
 
Tortuga web

tortuga web

08/11/2015 21:22:36
Quote Anchor link
@Aad: Bedankt, ik zal er username van maken.

@Thomas: Het is een verzoek tot inlogrechten. Dus de administrator moet eerst een authorisatie geven, voordat iemand in kan loggen. Hier gaat het om.
De basisgegevens worden in de database opgeslagen én de email wordt verstuurd. De email heeft de link naar de webpagina waar die specifieke gebruikersgegevens uit de database opgeroepen worden. Dan kan de administrator daar een authorisatie aan geven, wat ook in de database techtkomt, waarna er een email gaat naar de gebruiker met een link waarbij die een password kan aanmaken om in te loggen.

Dus blijft staan mijn vraag van hierboven.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/11/2015 22:59:42
Quote Anchor link
Hm, kun je dan niet beter met een lange/ingewikkelde activatie-hash werken die gekoppeld wordt aan het profiel op het momemt dat de admin de authorisatie verleent, in plaats van een (vele malen simpelere) username?

Ik zou dus (nog steeds) geen username gebruiken, en daarnaast zou ik eerst controleren of het ding waarop je wilt controleren wel bestaat (isset()) en mogelijk ook of deze voldoet aan een zeker patroon (ingeval van een hash) nog voordat je daar een query aan verkwist :).
Gewijzigd op 08/11/2015 23:01:42 door Thomas van den Heuvel
 
Tortuga web

tortuga web

09/11/2015 16:19:54
Quote Anchor link
Wat je hier beschrijft is wat er gebeurt op het moment dat, of nadat de admin de autorisatie verleent. Mijn vraag gaat over een link vóórdat die autorisatie er is.

Ik snap niet goed wat je probleem is bij wat ik wil.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.