Door
gertjan spit
op 10-08-2018 14:01
gewijzigd op 10-08-2018 16:01
4.172 views
Hallo
Heb een formulier gemaakt in PHP in met een gedeelte HTML nu wil het formulier niet verzenden en de items die ingevuld moeten worden worden na het versturen ook niet uit de tekst vakken gewist. Ben niet erg thuis in html en php maar zou graag dit formulier werkend willen krijgen. Kan iemand mij vertellen wat er fout is en hoe het op de juiste moet zijn??
Hieronder het php scriptje en het stukje html
@gertjan zoals je wellicht al aan de kleurtjes kon zien in jouw code gaat er iets mis op regel 6.
Het is aan te raden om een editor (tekstverwerkingsprogramma) te gebruiken met "code highlighting" (tekst met kleurtjes) voor de specifieke taal (HTML, PHP et cetera). Bijvoorbeeld Sublime Text.
Zoals @Ariën al aangaf is een array voor de mailheaders pas beschikbaar vanaf PHP versie 7.2.0, dus tenzij je deze versie hebt is het wellicht beter om hier een string van te maken (een ander type voor je variabele), en wel als volgt - voortbordurend op @Ariën zijn aanpassingen:
<?php
$jouw_mail = "[email protected]"; // nieuwe variabele
$name = $_POST['name']; // dat trim() en stripslashes zijn nogal loos...
$from = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$to = '[email protected]';
define('MAIL_LINEBREAK', "\r\n");
$headers = array();
$headers['MIME-Version'] = "1.0";
$headers['Content-type'] = "text/plain; charset=iso-8859-1";
$headers['From'] = "{$name} <{$jouw_mail}>";
$headers['Reply-To'] = "{$from}"; // moesten hier wel punthaken staan?
$headers['Subject'] = "{$subject}";
$headers['X-Mailer'] = "PHP/".phpversion();
// hier controleren we of het "verzenden" slaagt:
if (mail($to, $subject, $message, implode(MAIL_LINEBREAK, $headers))) {
echo 'succes!';
} else {
echo 'er ging iets mis :(';
}
?>
Kijk eerst maar even met deze code in een apart scriptje welke PHP-versie je hebt draaien.
Anders moet je de headers uit de array slopen.
<?php
phpinfo();
?>
Edit: Ah, Thomas' implode het al zie ik, tot een string.
het vast natuurlijk te bekijken of dat nodig is. Als je een mail krijgt, kan je in je mail-programma wel zien welke headers eraan vasthangen. En eigenlijk ook zelfs welke PHP-versie je hebt.
Jullie allen hartelijk dank voor jullie reacties ik ga er mee aan de slag.
En idd de melding van de postmaster stond inderdaad bij afzender in mijn email programma
dank jullie
gr Gertjan
[size=xsmall]Toevoeging op 10/08/2018 17:24:51:[/size]
Gelijk het aangepaste formulier geprobeerd maar krijg nu totaal niks meer binnen.
PHP versie die bij strato draait is 7.2
// hier controleren we of het "verzenden" slaagt:
if (mail($to, $subject, $message, implode(MAIL_LINEBREAK, $headers))) {
echo 'succes!';
} else {
echo 'er ging iets mis :(';
}
?>
Ughhh... Het is nogal lastig om hier een analyse op los te laten want je kijkt alleen maar heeeeeeeeeeeeeeeeeelemaal aan het einde of dat het gewenste effect oplevert, terwijl daarvoor al echt van alles mis had kunnen gaan.
"Ik krijg niets meer binnen" vertelt ons dan ook niet zoveel. Zie je bijvoorbeeld wel "succes!" op je scherm staan ofzo?
Misschien staat er ergens wel een punt of een komma scheef, wie zal het zeggen.
Als je gewoon in een los scriptje een plat mailtje stuurt, werkt dat dan wel?
Weet je zeker dat er niets in je spamfilter blijft hangen ofzo?
EDIT: bij goedkope/gratis hosts zit er mogelijk ook een limiet op de hoeveelheid te verzenden mail, of een vertraging in het versturen, dus mogelijk rolt er na verloop van tijd nog van alles binnen of heb je ondertussen je tax voor de dag/week/maand al bereikt. Wat voor hostingpakket heb je? Kun je contact opnemen met je provider hostingpartij, mogelijk kunnen zij inzicht verschaffen of/waar er mogelijk iets misgaat?
Heb je misschien ergens een controlepaneel waar je (geretourneerde) mail in kunt zien?
Het is op dit moment nogal koffiedik kijken waarom "dit niet werkt", dus we zullen echt stap voor stap op een semi-slimme/intelligente manier naar een oplossing moeten werken maar het startpunt is toch wel een beetje een methodische aanpak.
Hoi Thomas dank voor je mail. Dat het niet makkelijk is kan ik begrijpen ik snap er zelf ook geen snars van. Maar dat neemt niet weg dat ik het fijn vindt om zoveel hulp en ideeen te krijgen.
Op je vraag of ik geen succes melding krijg, nee helemaal niks. Heb inmiddels dit script ook op een andere server gezet en daar werkt het ook niet, terwijl het eigenlijk een kort scriptje is. Heb op internet wel grotere scripts voorbij zien komen.
Als ik de mail verzend komt er op dit moment niks binnen, bij het script een stukje terug, kwam de mail wel binnen maar er stond niks in ook geen afzender. Ook met wat aanpassingen kreeg de postmastermelding. Maar nu met het laatste aagepast script gebeurt er helemaal niks als ik op verzenden klik. Ook in de spam box zit niks. Bij strato heb ik een box van 10 gig die zit nog lang niet vol. Als ik een gewoon plat mailtje stuur werkt alles gewoon dus bedoel het verzenden en ontvangen.Ik ga morgen eens kijken met een ander script of dit wel werkt bij strato, en anders moet ik ze maar eens bellen. Mocht je nog een brilliant idee hebben hoor ik het graag.
Vr gr gertjan