Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  2 2312
Heisann.

Driver å mekker sammen et påmeldingsskjema for en kursarrangør jeg samarbeider litt med. Har middels kunnskap om php/html etc. Riktignok noen år siden jeg holdt på med dette sist, men det går greit å sette seg inn i det på nytt. (Skjønner at web-utvikling anno 2017 stort sett dreier seg om bruk av framworks etc, det er litt nytt for meg hehe. Men har satt meg litt inn i bootstrap, og fått til en grei responsiv side på denne måten).

Uansett, dette påmeldingsskjemaet skal være av enkleste sort. Det skal ha vanlige felt som Navn, fødselsdato, tlf, epost, adresse og en kommentar til slutt. Tanken er at dette skjemaet så skal sendes til vår firma-epost.

Ønsker også å kjøre en enkel validering på at i hvertfall "navn OG (tlf ELLER epost-adresse)" er fylt ut. Dette hadde kanskje vært greiest å gjøre i javascript, men siden jeg ikke har så mye kunnskap om javascript, så kjører jeg dette via php. Skjønner at dette fører til flere spørringer, men på en nettside som blir besøkt 10-15 ganger i døgnet er vel ikke dette store problemet.

Jeg lurer på to ting.

1. Er denne valideringen god nok? Jeg har ikke noen validering på at tlf-nummeret faktisk er et telefonnummer, men det er ok. Jeg har validering på e-post er en gyldig epost-adresse dog.

Kode

if (isset($_POST['submit'])) {

    $klasse = $_POST['klasse'];
    $name = $_POST['inputName'];
    $bdate = $_POST['inputBDate'];
    $phone = $_POST['inputPhone'];
    $email = $_POST['inputEmail'];
    $address = $_POST['inputAddress'];
    $postnr = $_POST['inputPostnr'];
    $stedsnavn = $_POST['inputStedsnavn'];
    $kommentar = $_POST['inputKommentar'];

    if (!empty($name) && ((valid_email($email)) || !empty($phone))) {

        $subject = "(Fra ***.no)" . " | " . $name . " | " . $klasse . " | " . $email;

        $body = "Navn: " . $name . "\n" . "Fødselsdato: " . $bdate . "\n" . "Telefon: " . $phone . "\n" . "Epost: " . $email . "\n" . "Adresse: " . $address . "\n" . "Postnr: " . $email . "\n" . "Sted: " . $stedsnavn . "\n" . "Kommentar: " . $kommentar . "\n";

        $mailsendt = mail(MAIL_ADRESSE, $subject, $body);

        if ($mailsendt == 1) {
            $melding = "Kontaktskjema er sendt!";
            $success = 0;
        } else {
            $melding = "Noe gikk galt, vennligst kontakt oss på e-post eller prøv igjen(1).";
            $success = 1;
        }

    } else if (empty($name)) {

        $melding = "Vennligst oppgi navn.";
        $success = 2;

    } else if (empty($phone) && empty($email)) {
        $melding = "Vennligst oppgi tlf-nummer eller e-post.";
        $success = 3;
    } else if (!valid_email($email)){
        $melding = "Epost-adressen er ugyldig.";
        $success = 4;
    } else {
        $melding = "Noe gikk galt, vennligst kontakt oss på e-post eller prøv igjen(2).";
        $success = 1;
    }
    
}
2. Er det greit å bruke funksjonen mail() til dette? Jeg skjønner at det finnes bibliotek, typ PHPmail osv, som kanskje har mer funksjonalitet, men har forstått at dette først og fremst er tiltenkt når en skal sende epost med mer avansert innhold. F.eks bilder, html osv.

Det jeg lurer mest på / bekymrer meg mest for, er om man kan føle seg trygg på at skjemaet faktisk blir sendt ved retur-verdi true fra mail()- funksjonen. Kjipt om folk melder seg på, får beskjed om at skjemaet er sendt, men det faktisk ikke er det.

Har PHPmail noen innebygde mekanismer for å fange opp dette kanskje?
Ser helt kurant ut i mine øyne.

http://php.net/manual/en/function.mail.php:
Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.
Vis hele sitatet...
Med andre ord betyr det at utgående e-postserver sier "I got this" og legger det i en utgående kø. Hva som skjer videre vet du strengt tatt ikke. Jeg ville bl.a. sørget for at avsender-adressen var en adresse som blir lest, slik at du ser eventuelle bounces.

Normalt gjør man jo dette inne i et CMS hvor man også lagrer påmeldingene til en database.
Sist endret av fuzzy76; 6. februar 2017 kl. 12:53.
Litt på siden - om det uansett skal være enkelt, hvorfor ikke bare sette opp et skjema på Google Docs? Da kan jo alle påmeldte legges automatisk i regneark, påmeldingerk kan sendes på epost, det kan ordnes "kvittering" i PDF-format mm.