Reputation: 166
So I have this little php script which upon form completion sends the information to my email. I was able to make it work with one input, however, when trying to specify 3 different inputs, it won't go through.
I suspect that maybe I'm not specifying the inputs as I should with isset at the beginning of the if statement. I'm very new to php and appreciate all the help I can get, anyway here's the code.
<?php
if (isset($_POST['name' && 'emailq' && 'message'])){
$visitor_name = $_POST['name'];
$visitor_email = $_POST['emailq'];
$visitor_message = $_POST['message'];
$email_from = "LightDesigns";
$email_subject = "new quot";
$email_body = "Name: " .$visitor_name."\nEmail: " .$visitor_email."\n\n"
.$visitor_message;
$to = "[email protected]";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
$result = mail($to,$email_subject,$email_body,$headers);
}
?>
<?php
$link_address = 'www.light-designsonline.co.uk';
if ($result){
echo '<link href="css/phpcss.css" rel="stylesheet">';
echo "<header></header>";
echo '<h1>Thank You!</h1>';
echo "<p>I'll get in contact with you shortly.</p>";
}else{
echo '<link href="css/phpcss.css" rel="stylesheet">';
echo "<header></header>";
?>
}
<?php
}
?>
<form action="quotform.php" method="POST" class="quote" name="quot">
<div>
<h1>Get a quot</h1>
<hr align="left" style="width: 82%;">
<label>Name</label><br>
<input type="text" placeholder="Name" class="form" autocomplete required name="name">
</div>
<div>
<label>Email</label><br>
<input type="email" placeholder="Email Address" class="form" autocomplete required name="emailq">
</div>
<div>
<label>Message</label><br>
<textarea placeholder="Message" name="message"></textarea>
</div>
<button class="button_1" type="submit" class="form"><span>Send</span></button>
</form>
Upvotes: 0
Views: 462
Reputation: 771
it's wrong
if (isset($_POST['name' && 'emailq' && 'message'])){
it means to AND together 'name', 'emailq' and 'message' values, which will be a logical TRUE and checked if the $_POST array has a value with the key TRUE
what you need is
if (isset($_POST['name']) && isset($_POST['emailq']) && isset($_POST['message'])){
or you could use
if (isset($_POST['name'], $_POST['emailq'],$_POST['message'])){
as mentioned by Magnus Eriksson
each has to be a separate logical expression which are then ANDed together
Upvotes: 6
Reputation: 2587
You should check for those fields this way:
if ( isset($_POST['name'])
&& isset($_POST['emailq'])
&& isset($_POST['message'])) {
//...
}
OR even use an array: Name you input fields like this: name="input[name]"
and name="input[mail]"
and so on. Then you can access the input
array via $_POST['input']
, which is much cleaner.
Upvotes: 2
Reputation: 4930
You need to check inputs separately like in the code below.
if (isset($_POST['name']) && isset($_POST['emailq']) && isset($_POST['message']))
Upvotes: 2