Stan Kosmoseistis
Stan Kosmoseistis

Reputation: 1

Make PHP form do nothing if field is empty

At this moment I have a small contact-box on my page that ask for telephone number.

If no number is entered the form should do nothing. Instead of sending a empty email to my client. It is not necessary that the form creates a message or something else if the field is empty. I just want to have extra php code, that makes sure nothings happening if somebody clicks the send button while the field is left empty.

This is my code:

<?php

$EmailFrom = Trim(stripslashes($_POST['email']));
$EmailTo = "[email protected]";
$Subject = "Vraagt om hem te bellen - Website Epimmo";
$free = Trim(stripslashes($_POST['free']));

// validation
$validationOK=true;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body = "";

$Body .= "Volgend telefoonnummer werd ingevoerd via uw website:";
$Body .= $free;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.epimmo.be/hire-us-phone.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

Thanks for reading and a hopefully a solution ;-)

Kristof

Upvotes: 0

Views: 3944

Answers (5)

TARKUS
TARKUS

Reputation: 2200

Here, we're presented with the action page, which means something has already happened: The form was submitted, and redirected to the action page.

As @Mohini pointed out, you can test the condition of an empty field on the action page.

But after the submit button is pressed, you can easily use javascript on the form page to test if the required fields are populated.

(plain vanilla javascript)

if(! document.forms['formname']['email'].value == "" ){
    document.forms['formname'].sumit();
} else {
    // do nohing. Or do something. I don't really care!
}

Upvotes: 0

rybo111
rybo111

Reputation: 12588

To redirect, you should be using:

header("Location: your-url.php");
exit;

This code would need to go before anything is echoed, including whitespace.

Also, what is this code?

// validation
$validationOK=true;
if (!$validationOK) {

Clearly, the if statement will never be false.

You could validate the easy way, such as one big if statement. But a better way is to do something like this:

if($_POST['email'] == ''){
  $_SESSION['my_form']['errors']['email'] = 'The email was left blank';
}
if(!empty($_SESSION['my_form']['errors'])){
  // redirect & exit here
}

And then on your form page, you can use this session data to display a relevant error to the user:

if(isset($_SESSION['my_form']['errors']['email'])){
  // output $_SESSION['my_form']['errors']['email'] here to the user
}

Upvotes: 0

Shaw
Shaw

Reputation: 81

Just after <?php you could add the following code:

if(!isset($_POST['free']) || empty($_POST['free']) {
    header('location: /hire-us-phone.php');
    exit;
}

header('location: /hire-us-phone.php'); will do a header redirect to /hire-us-phone.php (which is much better than using a meta refresh) and exit; will ensure no code after the header redirect will be run.

Upvotes: 0

Tom291
Tom291

Reputation: 519

You can do this with HTML like this:

<input type="number" required></input>

Upvotes: 0

Mohini
Mohini

Reputation: 407

First you can add if condition that will check email or phone number is not blank and in its not blank then execute next code of sending an email.

if(isset($_POST['email']) && $_POST['email']!="") 
{
 //write here your code to send an email
}

Upvotes: 2

Related Questions