Avatar billede nfssister Forsker
07. oktober 2019 - 14:40 Der er 14 kommentarer og
1 løsning

Forms på hjemmeside

Hej eksperter

Jeg er lidt rusten i det her efter mange års fravær fra HTML programmering.

Men jeg forsøger at laver nogle forms, hvor den så sender en mail til en bestemt mail.

Jeg har kigget på dette:
https://www.w3schools.com/howto/howto_css_contact_form.asp

Alt giver mening, på nær den der hedder action_page.php.
Hvordan finder jeg ud af hvad UnoEuro bruger der ? - syntes ikke deres hjemmeside kan oplyse mig dette ?

Og hvis jeg vil have den til at sende det på et givent tidspunkt, f.eks. kl 21 om aftnen fast. Kan man så lave en form der gemmer det indtastet man taster ind kl. 11 og så taster en ny kl 14. At den så sender disse 2 på en gang kl 21. ?
Avatar billede ejvindh Ekspert
07. oktober 2019 - 15:07 #1
action_page.php er en fil, du selv skal oprette, og som skal håndtere de data, som brugeren har indtastet i din form.

Hvis du vil have dit webhotel til at afsende emails på bestemte tidspunkter, skal du ligeledes oprette en php fil, der afsender emailen. Denne php-fil "starter" imidlertid ikke sig selv. Dertil skal du hos UnoEuro oprette et cronjob, som peger på den php-fil, du vil have sat i gang. Hos UnoEuro opretter man cronjob ved at gå ind i controlpanelet, klikke på på "Website" yderst til venstre, og så vælge "Cronjobs" under Webservices.
Avatar billede ejvindh Ekspert
07. oktober 2019 - 15:28 #2
Php-filer til at håndtere inputs fra html-forms kan du finde her:
https://www.w3schools.com/php/php_forms.asp
Avatar billede nfssister Forsker
07. oktober 2019 - 18:30 #3
Har du evt. et færdigt script jeg kan kigge på, tænker også hvis der findes nogle evt. med lidt sikkerhed i.

Kan man evt. lave en pinkode, så man skal kende pinkoden for at kunne trykke send ?
Avatar billede ejvindh Ekspert
07. oktober 2019 - 18:44 #4
Jeg tænker, at hvis du følger det sidste link, jeg lagde, så får du en del bud på færdige scripts du kan arbejde med. Heri finder du også valideringsprocedurer.

Man kan godt indlægge et check for en bestemt pinkode, men så kan det naturligvis ikke umiddelbart bruges i et cronjob.
Avatar billede nfssister Forsker
08. oktober 2019 - 07:10 #5
Jeg har ramt en mur... jeg har lånt et script på nettet, men når jeg forsøger at sende med det får jeg følgende fejl:

arse error: syntax error, unexpected '"' in /var/www/DOMÆNE/public_html/FOLDER/contact-form-handler.php on line 44


Linie 44 er den linie med bodytekst ifølge note++ - Kan ikke se hvad der er galt :(

<?php
$errors = '';
$myemail = 'MAIL;//<-----Put Your email address here.
if(empty($_POST['kage1']) ||
  empty($_POST['kage2']) ||
  empty($_POST['kage3']) ||
  empty($_POST['kage4']) ||
  empty($_POST['kage5']) ||
  empty($_POST['kage6']) ||
  empty($_POST['kage7']) ||
  empty($_POST['kage8']) ||
  empty($_POST['kage9']) ||
  empty($_POST['kage10']) ||
  empty($_POST['kage11']) ||
  empty($_POST['kage12']) ||
  empty($_POST['kage13']) ||
  empty($_POST['kage14']) ||
  empty($_POST['kage15']) ||
  empty($_POST['kage16']) ||
  empty($_POST['kage17']) ||
  empty($_POST['kage18']) ||
  empty($_POST['kage19']) ||
  empty($_POST['navn']))
{
    $errors .= "\n Fejl: Alle felter skal udfyldes";
}

$name = $_POST['name'];
$email_address = $_POST['email'];
$message = $_POST['message'];

if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address))
{
    $errors .= "\n Fejl: Mailadressen er forkert";
}

if( empty($errors))
{
    $to = $myemail;
    $email_subject = "Bagerbestilling fra Shell Assens";
    $email_body = "Vi vil gerne bestille følgende:"
    "Hindbærsnitter: $kage1 \n Træstammer: $kage2 \n Sveskesnitter: $kage3 \n Nøddesnitter: $kage4 \n Dag/Natsnitte: $kage5 \n Drømmekage (Skærekage): $kage6 \n Drømme Chokoladekage (Skærekage): $kage7 \n Nøddekage (Skærekage): $kage8 \n Romkugler Kokos: $kage9 \n Romkugler Multi Mix: $kage10 \n Romkugler Chokolade: $kage11 \n Marcipansnitter: $kage12 \n Nougat Drøm: $kage13 \n Makronsnitter: $kage14 \n Softkernebrød (I Skiver): $kage15 \n Græskarbrød (I Skiver): $kage16 \n Landmandsbrød (I Skiver): $kage17 \n Pakke Rugbrød u/ kerner (I Skiver): $kage18 \n Pakke Rugbrød m/ kerner (I Skiver): $kage18 \n Med venlig hilsen: $navn ";
   
    $headers = "From: $myemail\n";
    $headers .= "Reply-To: $email_address";
   
    mail($to,$email_subject,$email_body,$headers);
    //redirect to the 'thank you' page
    header('Location: contact-form-thank-you.html');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Contact form handler</title>
</head>

<body>
<!-- This page is displayed only if there is some error -->
<?php
echo nl2br($errors);
?>


</body>
</html>
Avatar billede ejvindh Ekspert
08. oktober 2019 - 07:45 #6
Ved emailbody afslutter du strengen, uden at fortælle at du vil binde den næste sammen med den forudgående. Så enten fjern det afsluttende anførselstegn og den begyndende anførselstegn i næste linje, eller sæt et punktum efter det afsluttende, så script-fortolkeren ved, at næste linje også er en del af emailbody.
Avatar billede nfssister Forsker
08. oktober 2019 - 18:46 #7
Tak det hjalp

Nu er mit eneste problem, at POST ikke rigtig virker med det der kommer frem på mailen. Den skriver alt det tekst jeg har forud defineret, men værdierne kommer ikke med over....

så alt det med $NAME det kommer ikke frem. Nogle der har et godt bud på dette ?
Avatar billede nemlig Professor
08. oktober 2019 - 21:07 #8
Du mangler at definere dine variabler......

$kage1 = $_POST['kage1'];
$kage2 = $_POST['kage2'];
osv..

Du kan også bare skrive din POST-variabler direkte i teksten...

"Hindbærsnitter: $_POST['kage1'] \n Træstammer: $_POST['kage2'] \n
osv.
Avatar billede ejvindh Ekspert
08. oktober 2019 - 21:11 #9
I den kode, du har lagt ud her, er der ingen steder, du fylder indhold i dine $kage variabler.

Måske skulle du udskifte $kage1 med $_POST['kage1']
... Og tilsvarende med de andre kager?
Avatar billede ejvindh Ekspert
08. oktober 2019 - 21:12 #10
Nå, crosspost :-)
Avatar billede nfssister Forsker
08. oktober 2019 - 21:51 #11
Hvordan definere jeg "kagerne". Jeg antog at den tog variablerne (kagerne) fra min første side med form'en og så lagde den værdierne over i PHP scriptet ?
Avatar billede nfssister Forsker
09. oktober 2019 - 06:55 #12
Tak for svaret, jeg var bare stære blind ! - Tak - alt virker som det skal :D
Avatar billede nfssister Forsker
15. oktober 2019 - 21:06 #13
Ja så kom der alligevel lidt skår i glæden. Jeg er nødt til at have lavet scriptet om, så det sender gennem en SMTP server jeg definere, mange mails ender i spam + yahoo, gmail og outlook tillader ikke den her slags mail fra script.

Nogle der kender et script hvor jeg kan benytte min egen SMTP server som afsender ?
Avatar billede ejvindh Ekspert
15. oktober 2019 - 22:00 #14
Det med SMTP har jeg ingen erfaring med. Men jeg ved, at det nogle gange kan betale sig, at udfærdige de afsendte emails lidt grundigt -- fx i headeren, hvis man vil undgå at de ryger i spam. Det har jeg i hvert fald selv erfaret. Se evt. mere her:

http://www.velvetblues.com/web-development-blog/avoid-spam-filters-with-php-mail-emails/
Avatar billede nemlig Professor
16. oktober 2019 - 06:02 #15
Jeg benytter PHPmailer() til afsendelse af mail.
Her kan du nemt opsætte, at du sender gennem en SMTP server.
Der findes mange vejledninger på nettet og fx på YouTube.
Det er nemt gjort.
Du skal også i din DNS opsætning definere en SPF record.

Du kan efterfølgende teste din mail med
https://www.mail-tester.com/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester