Avatar billede minus Nybegynder
29. maj 2008 - 19:46 Der er 6 kommentarer

Giv fejl hvis felter er tomme

Hej,
Nogen som kan skruge følgende sammen?

Hvis felterne...

Navn
Emne
eller Besked

...er tomme vil der komme en fejlmeddelelse. Gerne for hvert enkelt, som der er lavet for email-validatoren.


----------

<html>
<body>
<?php
function spamcheck($field)
  {
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);
 
  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {//if "email" is filled out, proceed

  //check if the email address is invalid
  $mailcheck = spamcheck($_REQUEST['email']);
  if ($mailcheck==FALSE)
    {
    echo "Invalid input";
    }
  else
    {//send email
    $name = $_REQUEST['name'] ;
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    mail("shahrokh.sotoudeh@gmail.com", "Mail fra barberen: $subject",
    $message, "From: $email" );
    echo "Din besked er hermed sendt.";
    }
  }
else
  {//if "email" is not filled out, display the form
  echo "<form method='post' action='mailform.php'>
  Navn: <input name='name' type='text' /><br />
  Email: <input name='email' type='text' /><br />
  Emne: <input name='subject' type='text' /><br />
  Besked:<br />
  <textarea name='message' rows='15' cols='40'></textarea><br />
  <input type='submit' />
  </form>";
  }
?>

</body>
</html>
Avatar billede w13 Novice
29. maj 2008 - 19:58 #1
Det må være:

if(!isset($_POST['Navn'])){
  echo "Du har ikke udfyldt feltet Navn!";
}else if(!isset($_POST['Emne'])){
  echo "Du har ikke udfyldt feltet Emne!";
}else if(!isset($_POST['Besked'])){
  echo "Du har ikke udfyldt feltet Besked!";
}else{
//Ellers så gør det, der skal gøres
}
Avatar billede minus Nybegynder
29. maj 2008 - 20:42 #2
w13--> har lavet koden om, men det virker ikke rigtig.

---------
mailform.php:

<html>
<body>
<?php
function spamcheck($field)
  {
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);
 
  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {//if "email" is filled out, proceed

  //check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{echo "Invalid input";}
if(!isset($_POST['name'])){
echo "Du har ikke udfyldt feltet Navn!";
}else if(!isset($_POST['subject'])){
echo "Du har ikke udfyldt feltet Emne!";
}else if(!isset($_POST['message'])){
echo "Du har ikke udfyldt feltet Besked!";
}

else
    {//send email
    $name = $_REQUEST['name'] ;
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    mail("shahrokh.sotoudeh@gmail.com", "Mail fra barberen: $subject",
    $message, "From: $email" );
    echo "Din besked er hermed sendt.";
    }
  }
else
  {//if "email" is not filled out, display the form
  echo "<form method='post' action='mailform.php'>
  Navn: <input name='name' type='text' /><br />
  Email: <input name='email' type='text' /><br />
  Emne: <input name='subject' type='text' /><br />
  Besked:<br />
  <textarea name='message' rows='15' cols='40'></textarea><br />
  <input type='submit' />
  </form>";
  }
?>

</body>
</html>

-----------------
Avatar billede minus Nybegynder
29. maj 2008 - 20:45 #3
Altså det den gør, er at skrive "Invalid inputDin besked er hermed sendt."

også modtager jeg en tom mail.
Avatar billede yHec Novice
29. maj 2008 - 21:03 #4
Denne her chekker samtlige felter. Hvis en af dem ikke er udfyldt, sætter laver den en variabel der hedder det samme som post variablen med et ettal på (hvis register_globals nu skulle være on). Den echoer du bare ud for feltet i din form. Hvis den ikke er sat, skrives intet, ellers skrives "* skal udfyldes".

Det er ligemeget hvor mange felter du har på formen, den chekker selv dem allesammen.

if(isset($_POST['submit'])) {
  foreach ($_POST as $key => $value) {
      if ($_POST[$key]=="") {
            $key.="1";
            $$key="<strong>*</strong>";
            $besked="<strong>* Skal udfyldes</strong>";
            $tom=FALSE;
        }           
        }
}
?>

/y
Avatar billede w13 Novice
29. maj 2008 - 21:34 #5
if ($mailcheck==FALSE)
{echo "Invalid input";}
if(!isset($_POST['name'])){

skal være:

if ($mailcheck==FALSE)
{echo "Invalid input";}
else if(!isset($_POST['name'])){
Avatar billede minus Nybegynder
29. maj 2008 - 21:44 #6
v--> Det lyder som en fornuftig løsning. Dog vil jeg meget gerne have at den gør det muligt at email-feltet er validerbar, altså at den ved at der er indtastet en email og ikke bare noget tekst eller lign. Er det på nogen måde muligt at indføre i koden?

w13--> har erstattet som du har skrevet, men så er det egentlig bare tilbage til første punkt. Altså hvor det er kun  Du må gerne teste selv inde på www.wowtrade.dk/kontakt/mailform.php (undgå venligst at sende for mange da den sender til min indbox :) )

-----------
mailform.php:

<html>
<body>
<?php
function spamcheck($field)
  {
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);
 
  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {//if "email" is filled out, proceed

  //check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{echo "Invalid input";}
else if(!isset($_POST['name'])){
echo "Du har ikke udfyldt feltet Navn!";
}else if(!isset($_POST['subject'])){
echo "Du har ikke udfyldt feltet Emne!";
}else if(!isset($_POST['message'])){
echo "Du har ikke udfyldt feltet Besked!";
}

else
    {//send email
    $name = $_REQUEST['name'] ;
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    mail("shahrokh.sotoudeh@gmail.com", "Mail fra barberen: $subject",
    $message, "From: $email" );
    echo "Din besked er hermed sendt.";
    }
  }
else
  {//if "email" is not filled out, display the form
  echo "<form method='post' action='mailform.php'>
  Navn: <input name='name' type='text' /><br />
  Email: <input name='email' type='text' /><br />
  Emne: <input name='subject' type='text' /><br />
  Besked:<br />
  <textarea name='message' rows='15' cols='40'></textarea><br />
  <input type='submit' />
  </form>";
  }
?>

</body>
</html>
---------
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