Gå til innhold

Kontaktskjema


Anbefalte innlegg

Hei, håper det er noe smartinger der ute som kan hjelpe meg med kontaktskjema jeg holder på å lage.

Jeg har brukt inspirasjon funnet på nett for å lage denne kontaktskjema med reCaptcha.

En kan se kontaktskjema på følgende side: www.slotit.no (siden er hostet av one.com)

Å skrive inn navn, epost, din melding + send knappen vil gi feilmelding: Vertification failed.

Dvs.  error reporting fungerer.

Å skrive inn navn, epost, din melding, recaptcha + send knappen vil gi feilmelding: Failed to send the message.

Her får jeg feilmedelding, jeg vil så gjerne at denne skal funke, å faktisk sende en mail til meg.

 

Her er kode jeg bruker, :
 

<?php

    error_reporting(0);
    $msg="";
        if(isset($_POST['submit'])) {
            $to = "my email adresse, fjernet dette for å skjule mitt epost for dine øyner";
            $subject = "Form Submission";
            $name = $_POST['name'];
            $email = $_POST['email'];
            $message = $_POST['message'];
            
            $msgBody = 'Name : '.$name. ' has written you : '.$message;
            $headers = 'From:'.$email;
            
            $secretKey = "Fjernet nøkkel for dine øyner !!!!";
            $responseKey = $_POST['g-recaptcha-response'];
            
            $url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey";
            
            $response = file_get_contents($url);
            $response = json_decode($response);
            
            if($response->success){
                if(mail($to, $subject, $msgBody, $headers)){
                    $msg="Message Sent Successfully!";
            }
            else{
                $msg="Failed to send the message!";
            }
        }
        else{
            $msg="Verification Failed";
        }
    }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="author" content="AMRC">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title>Kontakt Skjema</title>
        <script src="https://www.google.com/recaptcha/api.js" async defer></script>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    </head>
    <body class="bg-info">
        <div class="container">
            <div class="row justify-content-center">
                <div class="col-lg-4 bg-light rounded mt-3">
                    <h4 class="text-center text-dark p-2">Kontakt oss</h4>
                    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="post" class="p-2">
                        <div class="form-group">
                            <input type="text" name="name" class="form-control" placeholder="Ditt Navn" required>
                        </div>
                        <div class="form-group">
                            <input type="email" name="email" class="form-control" placeholder="Ditt Epost" required>
                        </div>
                        <div class="form-group">
                            <textarea name="message" class="form-control" rows="4" placeholder="Skriv din beskjed her" required></textarea>
                        </div>
                        <div class="form-group">
                            <div class="g-recaptcha" data-sitekey="Fjernet nøkkel for dine øyner !!!!"></div>

                        </div>
                        <div class="form-group">
                            <input type="submit" name="submit" value="Send" class="btn btn-danger btn-block">
                        </div>
                        <div class="form-group"><h4 class="text-success text-center"><?= $msg; ?></h4></div>
                    </form>
                </div>
            </div>
        </div>
        <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    </body>
</html>

 

Lenke til kommentar
Videoannonse
Annonse
5 minutes ago, nirolo said:

Tydeligvis denne som ikke slår til. Den ser riktig ut for meg, men jeg har aldri kodet php...

Slik jeg forsto det får han feilmeldingen "Failed to send the message." og det betyr denne ikke blir sann.

if($response->success){

Så innholdet i $response er nok nøkkelen her.

Lenke til kommentar
nirolo skrev (12 minutter siden):

Tydeligvis denne som ikke slår til. Den ser riktig ut for meg, men jeg har aldri kodet php...

Ja den slår ikke inn, jeg vet ikke hvorfor. Error reporting ser jo ut til å funke, dvs. den sier ifra om du gjør noe feil.. men likevel slår den ikke inn.

Men så er siden hostet hos one.com (dvs. øverført via FTP)... One.com støtter da PHP og det ser man jo.
Jeg vet ikke om dette har noe med at jeg må legge inn noe ala SMTP koder eller PHP Mailer .. nei vet da søren jeg.
Har også tittet rundt i kontroll panel hos one.com men ser ingen settings eller noe jeg kan gjøre for å ... ja si det ?

Lenke til kommentar
hiphopopotamus skrev (9 minutter siden):

Slik jeg forsto det får han feilmeldingen "Failed to send the message." og det betyr denne ikke blir sann.


if($response->success){

Så innholdet i $response er nok nøkkelen her.

Du kan jo teste siden hos:slotit.no

Endret av koford
Lenke til kommentar
1 minute ago, koford said:

Du kan jo teste siden hos: www.slotit.no

Gjorde det akkurat og da kom feilmeldingen Failed to send message. 
Innholdet i $response er jo ikke noe jeg har tilgang til herfra, da dette ligger på serveren. 
 

Fungerer mail()-funksjonen om du kjører den uten å bruke skjemaet?

Lenke til kommentar
hiphopopotamus skrev (9 minutter siden):

Slik jeg forsto det får han feilmeldingen "Failed to send the message." 

Ja, det har du rett i. Testet på siden hans nå.

koford skrev (Akkurat nå):

og det betyr denne ikke blir sann.


if($response->success){

Så innholdet i $response er nok nøkkelen her.

Nei det blir vel ikke riktig. Koden er slik

Sitat

if($response->success){
  if(mail($to, $subject, $msgBody, $headers)){
    $msg="Message Sent Successfully!";
  }else{
    $msg="Failed to send the message!";
  }
}

Så det er kallet på mail(...) som returnerer false/0/hva det er i php

Lenke til kommentar
1 minute ago, nirolo said:

Ja, det har du rett i. Testet på siden hans nå.

Nei det blir vel ikke riktig. Koden er slik

Så det er kallet på mail(...) som returnerer false/0/hva det er i php

Det har du helt rett i! Ble litt forvirret på liten skjerm her. 

 

2 minutes ago, hiphopopotamus said:

Fungerer mail()-funksjonen om du kjører den uten å bruke skjemaet

Lenke til kommentar
hiphopopotamus skrev (8 minutter siden):

Fungerer mail()-funksjonen om du kjører den uten å bruke skjemaet?

Det vet jeg ikke, åssen gjør jeg det? Det er som sagt i første post at jeg har kun fulgt en "guide" for dette skjeamet.
Målet mitt er og ha en "sikkerhet" for å unngå spam osv.. dvs. recaptcha lignende.


Jeg har tidligere hatt en skjema uten noe form for "sikkerhet", men mottar mye spam, robot shitt og greier. Kun plain stuff.

Lenke til kommentar
1 minute ago, koford said:

Det vet jeg ikke, åssen gjør jeg det?

Helt øverst i koden din (etter <?php) kaller du funksjonen: 

mail($to, $subject, $msgBody, $headers)

I dette tilfellet må du fylle ut verdiene selv istedet for å bruke variablene. 
 

Dette vil forsøke å sende en e-post med en gang siden lastes. Du kan også slå på error_reporting under utvikling så du får se PHPs feilmeldinger

Lenke til kommentar
hiphopopotamus skrev (17 minutter siden):

Helt øverst i koden din (etter <?php) kaller du funksjonen: 


mail($to, $subject, $msgBody, $headers)

I dette tilfellet må du fylle ut verdiene selv istedet for å bruke variablene. 
 

Dette vil forsøke å sende en e-post med en gang siden lastes. Du kan også slå på error_reporting under utvikling så du får se PHPs feilmeldinger

Jeg testet følgende:
 

<?PHP
$sender = '[email protected]';
$recipient = '[email protected]';

$subject = "php mail test";
$message = "php test message";
$headers = 'From:' . $sender;

if (mail($recipient, $subject, $message, $headers))
{
    echo "Message accepted";
}
else
{
    echo "Error: Message not accepted";
}
?>

Fikk da følgende error: Message not accepted.

Endret av koford
Lenke til kommentar

For meg virker det ut som plattformen til one.com ikke tilater meg å bruker mail() funksjonen.
Altså de har et plattform som lar deg bygge nettside uten å "kode", men her valgte jeg å lage noe selv og bare overføre det.
De har et egen epost hvor man kan logge seg inn og osv, nå vet jeg heller ikke om plattformen lar deg bygge et "kontaktskjema" og osv.

Skal nok ta kontakt med dem å spørre hvorfor standard mail() funksjonen returnerer FALSE.

Lenke til kommentar
Dan-Levi skrev (27 minutter siden):

Mail funksjonen fungerer i one.com.

 

Etter


$response = file_get_contents($url);
            $response = json_decode($response);

 

lim inn

print_r($response);

return;

 

 

Hva får du da?

stdClass Object ( [success] => 1 [challenge_ts] => 2020-02-10T02:06:26Z [hostname] => slotit.no )

Lenke til kommentar
Dan-Levi skrev (28 minutter siden):

Fungerer dette?


<?php
$to      = '[email protected]';
$subject = 'emne';
$message = 'hei';
$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

 

Yepp, jeg endret $to til et epost jeg bruker daglig, så endra jeg $header epost til ****slotit.no

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...