HTML Email versturen met special characters worden leeggemaakt
Ik heb een wachtwoord :
f4=<H106w~:W
Deze komt goed in de database en kan ook inlogen.
Maar als ik deze per mail als $_POST waarde in een html mail plaat, dan komt alleen het volgende door.:
f4=
Waar ligt dit aan, en hoe is dit op te lossen?
Maar overigens: Wachtwoorden in een mail plaatsen. AUW!
Laat je gebruikers liever een wachtwoord bedenken dan dat jij die open en bloot communiceert.
Gewijzigd op 23/01/2025 10:57:15 door - Ariën -
vervang die < door <
Dat kun je, samen met enkele andere tekens regelen met htmlspecialchars()
Toevoeging op 23/01/2025 11:37:32:
want nu "denkt" je browser of email-client dat daar een html-tag begint.
Stel dat het wachtwoord was abc<br>123
Wat is dan het verschil met "print het wachtwoord abc en dan een enter naar de volgende regel en begin met 123"?
En html-tags mogen spaties gevatten: <div class="foo">, dus een tag loopt door tot de volgende >
In jouw geval heb je niet de afsluitende > staan, dus alles wat verder nog komt, valt onder de tag tot je eindelijk een volgende html-tag aantreft.
Staat dan netjes in de e-mail EN in de database.
Gewijzigd op 23/01/2025 12:43:54 door - Ariën -
Adoptive Solution op 23/01/2025 12:23:04:
Nee.
dat is de verkeerde escaping. Deze functie maakt je string veilig om in de database te zetten. Simpel gezegd: een ' wordt vervangen door \'
Dus in de query komt bij de invoer 'foto's' te staan 'foto\'s'
Vervolgens snapt je database dat die ' voor de s niet het einde van de value is.
Met een <, > of & doet dit niets.
Daarvoor gebruik je htmlspecialchars() om dit veilig in een lap html te plaatsen.
Let wel: bij het plaatsen, niet bij het inserten in je database.
Je wilt namelijk niet < in je database zetten. Leuk om de tekst weer te geven, maar als de gebruiker die < in zijn password invoert, dan is dat niet gelijk aan <
En ook voor andere teksten: je hebt vast wel eens in een tekst in een website of pdf document iets als V&D zien staan: dan wordt op de verkeerde plek de html-escaping toegepast.
Toevoeging op 23/01/2025 12:49:50:
oh, en er is natuurlijk geen reden om een password plain-text op te slaan. Daar zijn genoeg mooie simpele oplossingen voor in php.