PHP wachtwoord vergeten email doet het niet.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

- Ariën  -
Beheerder

- Ariën -

06/03/2019 09:12:02
 
PHP hulp

PHP hulp

26/04/2024 20:56:10
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 09:15:05
Quote Anchor link
Ik heb nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    $userEmail
= $_POST['email'];
    $userEmail = filter_var($userEmail, FILTER_VALIDATE_EMAIL);
    if(!filter_var($email, FILTER_SANITIZE_EMAIL)) {
        header('Location: ../reset-password.php?error=invalidemail');
        exit();
    }

    else {
// de rest van de code ....
}
?>
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 09:21:06
Quote Anchor link
Ik zou vooral
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 -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 09:26:38
Quote Anchor link
Okey.
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $userEmail
= $_POST['email'];
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        header("Location: ../reset-password.php?error=invalidmail");
        exit();
    }

    else {
// rest van de code .....
}
?>


En dit is de code van de mail()
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
<?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();        
        }
  
?>
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 09:30:08
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

06/03/2019 10:11:58
Quote Anchor link
Probeer zo eens:

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

?>
 
Dennis WhoCares

Dennis WhoCares

06/03/2019 10:14:05
Quote Anchor link
Bestaat de from email wel?
Sommige mailservers hebben de verplichting om de email aan te maken, al is t maar zonder mailbox. Bijv. hostnet doet dit ook
 
Rob Doemaarwat

Rob Doemaarwat

06/03/2019 10:43:33
Quote Anchor link
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" ...
 
Ozzie PHP

Ozzie PHP

06/03/2019 11:49:00
Quote Anchor link
En in sommige gevallen werkt dat prima ... dus even testen of het werkt kan geen kwaad.
 
Rob Doemaarwat

Rob Doemaarwat

06/03/2019 13:04:58
Quote Anchor link
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.
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 15:25:30
Quote Anchor link
Ozzie PHP op 06/03/2019 10:11:58:
Probeer zo eens:

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

?>


Ik heb dit geprobeerd.
Maar nu kom ik nog steeds uit op: ?error=invalidrequest.
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 15:49:14
Quote Anchor link
En welke voorwaarde hangt er aan vast?
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 15:51:51
Quote Anchor link
Hoe bedoelt u?
Als het om de if() gaat, is dit de voorwaarde:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    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();        
        }
  
?>
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 15:55:26
Quote Anchor link
Hij komt uit op ?error=invalidrequest. En dat stukje code is een andere locatie
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 15:56:02
Quote Anchor link
Waar zou dat stukje code kunnen zijn?

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    if(!isset($_GET['request'])) {
        if($_GET['request'] !== 'valid') {
            header('Location: login.php?error=invalidrequest');
            exit();
        }
    }

?>

Ik heb dit gedaan, zodat het zeker is dat de gebruiker op de knop/link "wachtwoord vergeten" heeft geklikt.
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 16:13:49
Quote Anchor link
$_GET['request'] is blijkbaar geen 'valid'. Debug die $_GET['request'] eens om te kijken wat er wél inzit.
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 16:15:25
Quote Anchor link
Ik heb nu die valid werkend gemaakt, dus als er een error is bijvoorbeeld de email is niet verzonden dan is het nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?Php
header("Location: ../reset-password.php?error=mailnotsend&request=valid");
exit();
?>

In plaats van dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?Php
header("Location: ../reset-password.php?error=mailnotsend");
exit();
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

06/03/2019 16:31:06
Quote Anchor link
error=mailnotsend&request=valid

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
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 16:46:54
Quote Anchor link
Na even wat zoeken op internet, heb ik besloten PHPMailer te gaan gebruiken.
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

06/03/2019 16:55:52
Quote Anchor link
Als je niet weet wat er misgaat, want ben je dan precies (met phpMailer) aan het oplossen?
 

Pagina: « vorige 1 2 3 volgende »



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.