Hallo,
Ik ben bezig met een systeem waarbij de gebruiker een "wachtwoord vergeten knop" kan aanklikken.
Als je erop klikt, moet de gebruiker zijn / haar email invoeren waar de gebruiker geregistreerd mee staat.
Als de gebruiker de email invoert, moet het een token id aanmaken in een apart MYSQLI tabel.
Ik heb de hele code gevolgd van een tutorial:

https://youtu.be/wUkKCMEYj9M

Ik weet het, het is niet zelf verzonnen, maar ik weet zelf ook niet hoe ik het zelf zou kunnen maken, dus credits naar MMTUTS.
Bij het verzenden van de mail gaat het fout, maar ik weet niet waarom.
Ik heb mijn eigen webhosting server bij Versio.nl en ik heb zelf eerder al een contact formulier gemaakt, die een email kan verzenden. (Het formulier werkt ook).
Het mysqli gedeelte werkt wel. Dus pwdResetEmail, pwdResetSelector, pwdResetToken, pwdResetExpires worden normaal ingevoerd. Alleen de email wordt dus niet verzonden.

Dus ik weet niet wat ik fout heb gedaan.
Dit is mijn (email verzend) code:
<?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";
mail($to, $subject, $message, $headers);
header('Location: ../reset-password.php?reset=success&request=valid');
?>

Van het andere contact formulier dat werkte is dit mijn code:
<?php
$name = $_POST['name'];
$subject = $_POST['subject'];
$mailFrom = $_POST['mail'];
$message = $_POST['message'];
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "Je hebt een email van je website namens ". $name.".\n\n".$message;
mail($mailTo, $subject, $txt, $headers);
$mailsend = 'De mail is successvol verzonden!';
header('Location: ../contact.php?mailSend');
exit();

?>
Ik heb zelf al geprobeerd een error weer te geven, maar dat gebeurt niet, want er is geen error.
Zelf heb ik ook al in de error log gekeken, maar daar staat ook niets.
Heeft iemand een idee waarom de email niet wordt verzonden?
Alvast bedankt,

Ik weet niet wat dat is.
Waar kan ik dat vinden?

[size=xsmall]Toevoeging op 05/03/2019 21:12:40:[/size]

Ik heb nu een vinkje bij mijn hosting aangezet van de DKIM.
Ik weet niet of dit wel / niet goed is.
Zou u me dat kunnen uitleggen?
Het komt nogal nauw met mailheaders.

Er staat een spatie na je no-reply adres.

Daarnaast staat alles tussen enkele quotes.

De carriage return (\r) en line feed (\n) worden dan letterlijk weergegeven als een backslash + de letter r + een backslash + de letter n in plaats van een daadwerkelijke carriage return + linefeed...
Wat wil je met dit bereiken?

htmlspecialchars($userEmail = $_POST['email']);

Post van 05/03/2019 20:05:38 regel 8.
Heb even snel (nou ja snel) door die videotutorial gebladerd. De code die die gast schrijft is (nog steeds) bagger.

De video is een bijna anderhalf uur durende typeoefening en dat is echt helemaal nergens voor nodig.

Wat je moet snappen is de flow door die functionaliteit. Als die eenmaal duidelijk is maakt het niet echt uit hoe je dit implementeert, al zou ik het niet doen zoals deze kerel voorstelt.

MMTUTS = troep.
- SanThe - op 06/03/2019 00:23:51

Wat wil je met dit bereiken?

htmlspecialchars($userEmail = $_POST['email']);

Post van 05/03/2019 20:05:38 regel 8.


Zodat XSS attacks niet mogelijk worden.
Waarom $userEmail = $_POST['email'] ?
Als je nu filter_var() gebruikt om een mailadres te controleren, is het nog fraaier.
Omdat de gebruiker een email adres moet opgeven en naar dat email adres wordt het wachtwoord herstel email gestuurd.
Maar die constructie...?


Als je nu filter_var() gebruikt om een mailadres te controleren, is het nog fraaier.
dus ik moet het volgende doen:

<?php
if(!FILTER_VAR($_POST['email'])
?>

Reageren