Carson Clark Carson Clark - 2 months ago 7
PHP Question

Undefined variable that has been defined

I am trying to create a simple contact form and for some reason when I load my index.php file I get the following error:


Notice: Undefined variable: emailError in C:\xampp\htdocs\Coming Soon
Landing page\index.php on line 105


Here is my code: (the important parts are the PHP tags at the top, and the php tags in the "signup" section ID)

<?php

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

$from = $_POST['email'];
$to = 'carsonclark2009@gmail.com';
$subject = 'email sign up';
$message = 'please sign me up to the mailing list';

if (!$_POST['email']) {
$emailError = "Please enter a valid email Address";
}

}

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Landing Page</title>

<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link rel="stylesheet" href="css/style.css">
<!-- Fonts -->
<link rel="stylesheet" href="font-awesome/css/font-awesome.css">
<link href="https://fonts.googleapis.com/css?family=Just+Another+Hand" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Amatica+SC" rel="stylesheet">
</head>
<body>

<section id="logo">

<div class="container">
<div class="row">

<div class="col-md-12">
<img src="img/my-logo.png" class="img-fluid">
</div>

</div>
</div>

</section>


<section id="intro">

<div class="container">
<div class="row">
<div class="col-md-12">
<p>We're working hard, we'll be ready to launch in...</p>
</div>
</div>
</div>

</section>

<section id="counter">

<div class="container">
<div class="row">
<div class="col-md-12">
<div class="countDown"></div>
</div>
</div>
</div>

</section>

<section id="icons">

<div class="container">
<div class="row">
<div class="col-md-12">
<ul class="list-inline">
<a href="#"><li class="list-inline-item"><i class="fa twitter fa-twitter-square fa-3x" aria-hidden="true"></i></li></a>
<a href="#"><li class="list-inline-item"><i class="fa facebook fa-facebook-square fa-3x" aria-hidden="true"></i></li></a>
<a href="#"><li class="list-inline-item"><i class="fa google fa-google-plus-square fa-3x" aria-hidden="true"></i></li></a>
<a href="#"><li class="list-inline-item"><i class="fa instagram fa-instagram fa-3x" aria-hidden="true"></i></li></a>
</ul>
</div>
</div>
</div>

</section>

<section id="signup">

<div class="container">
<div class="row">

<div class="col-md-12">
<form class="form-inline" role="form" method="post" action="#signup">
<input type="email" class="form-control form-control-sm" name="email" placeholder="enter your email">
<button type="submit" class="btn btn-signup btn-sm" name="submit" value="send">Find out more</button>
</form>
<?php echo $emailError; ?>
</div>

</div>
</div>

</section>


I defined the variable at the top of the page, and to my knowledge (which is lacking) it should be working but before I even click submit I get this error. I'm wondering what's wrong. Any input is greatly appreciated.

thanks

Answer

I defined the variable at the top of the page.

if (!$_POST['email']) {
    $emailError = "Please enter a valid email Address";
}

No, you're defining this variable in an if statement, maybe condition is false.

Declare variable at the top outside if statement or use this code:

<?php if (!empty($emailError)) { echo $emailError;} ?>

Note: consider replacing this code

if (!$_POST['email'])

with

if (!isset($_POST['email']))
Comments