Avatar billede kiwankow Nybegynder
21. september 2009 - 14:41 Der er 3 kommentarer og
1 løsning

Kan ikke ændre input felt fra "skal udfyldes" til "frivilligt"

Jeg har følgende kontaktform på min hjemmeside, men jeg ønsker at ændre scriptet således det er frivilligt om man vil indtaste sit telefonnummer:

<?php
if(isset($_POST['email'])) {
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "min@mail.dk";
    $email_subject = "Du er blevet kontaktet via din hjemmeside";

        function died($error) {
        // your error code can go here
        echo "Vi beklager, men der blev fundet fejl i et af de udfyldte felter. ";
        echo "Du kan se hvilken fejl herunder.<br /><br />";
        echo $error."<br /><br />";
        echo "Venligst gå tilbage og ret fejlen.<br /><br />";
        die();
    }
    // validation expected data exists
    if(!isset($_POST['first_name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['comments'])) {
        died('Vi beklager men der er opstået et problem med den mail du prøvede at sende.');       
    }
    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // not required
    $comments = $_POST['comments']; // required

    $error_message = "";
    $email_exp = "^[A-Z0-9._%-æøå]+@[A-Z0-9.-æøå]+\.[A-Zæøå]{2,4}$";
  if(!eregi($email_exp,$email_from)) {
      $error_message .= 'Den indtastede E-mail adresse lader ikke til at være gyldig.<br />';
  }
    $string_exp = "^[a-z .'-æøå]+$";
  if(!eregi($string_exp,$first_name)) {
      $error_message .= 'Det indtastede fornavn lader ikke til at være gyldigt.<br />';
  }
  if(!eregi($string_exp,$last_name)) {
      $error_message .= 'Det indtastede efternavn lader ikke til at være gyldigt.<br />';
  }
  if(strlen($comments) < 2) {
      $error_message .= 'Den indtastede besked lader ikke til at være gyldig.<br />';
  }
  $string_exp = "^[0-9 .-]+$";
  if(!eregi($string_exp,$telephone)) {
      $error_message .= 'Det indtastede telefonnummer lader ikke til at være gyldigt.<br />';
  }
  if(strlen($error_message) > 0) {
      died($error_message);
  }
    $email_message = "Du har modtaget følgende besked via din hjemmeside.\n\n";
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
    $email_message .= "Fornavn: ".clean_string($first_name)."\n";
    $email_message .= "Efternavn: ".clean_string($last_name)."\n";
    $email_message .= "E-mail: ".clean_string($email_from)."\n";
    $email_message .= "Telefon: ".clean_string($telephone)."\n";
    $email_message .= "Besked: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); 
?>
<?php include("sendtmail.php"); ?>
<?
}
?>
Avatar billede Slettet bruger
21. september 2009 - 14:54 #1
Slet

  $string_exp = "^[0-9 .-]+$";
  if(!eregi($string_exp,$telephone)) {
      $error_message .= 'Det indtastede telefonnummer lader ikke til at være gyldigt.<br />';
  }

og ret

    $email_message .= "Telefon: ".clean_string($telephone)."\n";

til

    if ($telephone)
      $email_message .= "Telefon: ".clean_string($telephone)."\n";

og

    if(!isset($_POST['first_name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['comments'])) {
        died('Vi beklager men der er opstået et problem med den mail du prøvede at sende.');     
    }
    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // not required
    $comments = $_POST['comments']; // required

til

    if(!isset($_POST['first_name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['comments'])) {
        died('Vi beklager men der er opstået et problem med den mail du prøvede at sende.');     
    }
    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    if (isset($_POST['telephone'] && strlen($_POST['telephone']) > 0)
      $telephone = $_POST['telephone'];
    else
      $telephone = false;
    $comments = $_POST['comments']; // required
Avatar billede kiwankow Nybegynder
21. september 2009 - 22:23 #2
Det virker desværre ikke.

Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in /send_form_email.php on line 33
Avatar billede kiwankow Nybegynder
21. september 2009 - 22:28 #3
arh der manglede bare en parentes. :-)

Smid et svar så er der point
Avatar billede Slettet bruger
21. september 2009 - 22:31 #4
Succes! Jeg vil foreslå, at du tjekker det igennem med alle tænkelige faldgrupper af mulige fejl, så du er sikker på, at jeg ikke har overset noget... Det er altid bedre selv at finde fejlene end at lade hackeren gøre det :o)
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