PHP wachtwoord vergeten email doet het niet.
Pagina: « vorige 1 2 3 volgende »
Niet helemaal..FILTER_VALIDATE_EMAIL gebruiken om te valideren. Volgens mij is er dan sowieso geen XXS mogelijk, omdat die tekens direct al geweigerd worden. Maar vanwaar lijn 3?
Gewijzigd op 06/03/2019 09:22:05 door - Ariën -
Dat heb ik gedaan.
Nu wil ik alleen nog weten waarom de $headers bij de mail() functie niet worden geacccepteerd bij gmail.
Dit is de code van de email validatie:
Code (php)
En dit is de code van de mail()
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$to = $userEmail;
$subject = 'Wachtwoord jinvantongeren.nl herstellen';
$message = '<p>Er is een verzoek binnengekomen om uw wachtwoord te herstellen. Als u dat niet was, kan u deze e-mail gewoon negeren.</p> <a href="' . $url . '">' . $url . '</a></p>';
$headers = "From: Jin van Tongeren <[email protected]>\r \n Reply-To: <[email protected]>\r\n Content-type: text/html\r\n";
if(mail($to, $subject, $message, $headers)) {
header('Location: ../reset-password.php?reset=success&request=valid');
exit();
}
else {
header('Location: ../reset-password.php?reset=mailfail');
exit();
}
?>
$to = $userEmail;
$subject = 'Wachtwoord jinvantongeren.nl herstellen';
$message = '<p>Er is een verzoek binnengekomen om uw wachtwoord te herstellen. Als u dat niet was, kan u deze e-mail gewoon negeren.</p> <a href="' . $url . '">' . $url . '</a></p>';
$headers = "From: Jin van Tongeren <[email protected]>\r \n Reply-To: <[email protected]>\r\n Content-type: text/html\r\n";
if(mail($to, $subject, $message, $headers)) {
header('Location: ../reset-password.php?reset=success&request=valid');
exit();
}
else {
header('Location: ../reset-password.php?reset=mailfail');
exit();
}
?>
Er werd al iets over een spatie geroepen in dit topic. Maar het kan geen kwaad om de headers uit het Wiki-artikel die ik noemde te gebruiken.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$headers = 'From: Jin van Tongeren <[email protected]>' . PHP_EOL;
$headers .= 'Reply-To: <[email protected]>' . PHP_EOL;
$headers .= 'Content-type: text/html' . PHP_EOL;
?>
$headers = 'From: Jin van Tongeren <[email protected]>' . PHP_EOL;
$headers .= 'Reply-To: <[email protected]>' . PHP_EOL;
$headers .= 'Content-type: text/html' . PHP_EOL;
?>
Sommige mailservers hebben de verplichting om de email aan te maken, al is t maar zonder mailbox. Bijv. hostnet doet dit ook
Ozzie PHP op 06/03/2019 10:11:58:
Probeer zo eens:
Nooit die PHP_EOL gebruiken. Voor mail headers moet het "\r\n" zijn, en PHP_EOL op Linux is "\n" ...
En in sommige gevallen werkt dat prima ... dus even testen of het werkt kan geen kwaad.
Ozzie PHP op 06/03/2019 11:49:00:
En in sommige gevallen werkt dat prima ... dus even testen of het werkt kan geen kwaad.
Met Windows hosting gaat dit goed (want PHP_EOL = \r\n) en met mail servers die een beetje "flexibel" zijn (lees: zowel \n als \r\n accepteren). Maar als de mail server een beetje strict is, dan zou ie enkel \r\n moeten accepteren. Wil je dus iets maken dat altijd werkt dan moet je zoveel mogelijk volgens het boekje werken (= \r\n).
Andersom: leuk als het hiermee wel gaat werken, maar dan heb je geen garantie voor de toekomst.
Ozzie PHP op 06/03/2019 10:11:58:
Probeer zo eens:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$headers = 'From: Jin van Tongeren <[email protected]>' . PHP_EOL;
$headers .= 'Reply-To: <[email protected]>' . PHP_EOL;
$headers .= 'Content-type: text/html' . PHP_EOL;
?>
$headers = 'From: Jin van Tongeren <[email protected]>' . PHP_EOL;
$headers .= 'Reply-To: <[email protected]>' . PHP_EOL;
$headers .= 'Content-type: text/html' . PHP_EOL;
?>
Ik heb dit geprobeerd.
Maar nu kom ik nog steeds uit op: ?error=invalidrequest.
En welke voorwaarde hangt er aan vast?
Als het om de if() gaat, is dit de voorwaarde:
Hij komt uit op ?error=invalidrequest. En dat stukje code is een andere locatie
Toevoeging op 06/03/2019 15:57:21:
Ik zie het al.
Bij de pagina waar de gebruiker een email adres moet invullen voor de wachtwoord herstel, staat dit stukje code bovenaan:
Code (php)
Ik heb dit gedaan, zodat het zeker is dat de gebruiker op de knop/link "wachtwoord vergeten" heeft geklikt.
$_GET['request'] is blijkbaar geen 'valid'. Debug die $_GET['request'] eens om te kijken wat er wél inzit.
Code (php)
In plaats van dit:
Euh. Hoe werkt het bovenstaande dan precies? Er gaat iets fout maar het is goed?
Overigens, het voltooid deelwoord van "verzonden" is sent.
Creëer eens wat overzicht voor jezelf.
Test het verzenden van een e-mail eens in complete afzondering van alle andere code.
Loop dan nog eens door *alle* code heen vanaf het begin, en plaats hier een *volledig* fragment, beschrijf precies wat je achtereenvolgens doet, en geef aan waar je vastloopt.
Dit is de enige manier waarop we dingen kunnen uitsluiten en naar de oorzaak toe kunnen werken.
Met een halve puzzel krijg je nooit het hele plaatje.
Gewijzigd op 06/03/2019 16:31:47 door Thomas van den Heuvel
Ik heb gelezen dat deze library / plugin / extensie alle veilige dingen doet, die moeten worden gedaan.
Zoals dat gedoe in header van de mail() functie.
Ik weet niet of dit een slimme / verstandige keuze is.
Laat me maar weten wat u er van vind.
Als je niet weet wat er misgaat, want ben je dan precies (met phpMailer) aan het oplossen?