$_POST array is empty after submitting the from [duplicate] - php

This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 4 years ago.
I have a simple form (below), I want to send the Name field in email but POST is empty.
HTML Form:
<form action="contact.php" method="post">
<div class="form-group">
<label for="name">Name:</label>
<input type="text" class="form-control" id="name">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
PHP:
<?php
if (isset($_POST['name'])){
$to = "example#example.com";
$subject = "Test subject";
$txt = $_POST['name'];
$txt .= "test txt";
$headers = "From: example2#example2.com" . "\r\n" .
"CC: somebodyelse#example.com";
if (mail($to,$subject,$txt,$headers)){
echo "succes";
}else{
echo "failed";
}
} else {
echo "Name is required!";
}
?>
Does anyone has an idea what could be wrong? I have other forms on this server and they are working fine.

Input has to have a name attribute.
<input type="text" class="form-control" id="name" name="name">

Related

Why the output is showing undefined "submit" in php? [duplicate]

This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 2 years ago.
Actually I was creating a simple form to send mail to my email ID.
Here's my code:
<!doctype html>
<html>
<body>
<form>
<input type='text' name='name'>
<input type='email' name="email">
<input type="number" name="mobile">
<input type="text" name="message">
<input type="submit" name='submit'>
</form>
</body>
</html>
php code:
<?php
if($_POST['submit']!="")
{
$cname = $_POST['name'];
$email = $_POST['email'];
$mob = $_POST['mobile'];
$query = $_POST['message'];
$subject="Enquiry";
$message="Name : $cname \n email : $email \n Message : $query \n";
$email_from = '<name#gmail.com.com>';
$subject = "registration";
$message = "You have received a new message from the user <b> $cname. </b> \n". "Here is the message:\n $message".
$to = "name<name#gmail.com>";
$headers = "From: $email_from \r\n";
$headers.= "Reply-To: $email \r\n";
if(mail($to, $subject, $message, $headers))
{
echo "<script>alert('Dear User, You Are Successfully Registered')</script>";
}
}
?>
Note: In this question I have changed my actual email id with "name", in my actual code, the id is putten correctly.
The error is in the first if statement that the 'submit' is undefined.
If you load the page, $_POST is empty and $_POST["submit"] is undefined. If you click the submit button, $_POST["submit"] is set. So, instead of checking if the content of $_POST["submit"] is an empty string, check if the variable is set:
if( isset($_POST["submit]) ){
// Form submitted, continue
}
Also, you forgot to set the method in your form:
<form method="post">

PHP Undefined variable for HTML Form [duplicate]

This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 5 years ago.
I am trying to run a contact form PHP script and HTML form and when I run it I get the following errors.
Notice: Undefined variable: name in /storage/ssd4/333/4197333/public_html/heros51/confirm.php on line 17
Notice: Undefined variable: p in /storage/ssd4/333/4197333/public_html/heros51/confirm.php on line 18
Notice: Undefined variable: message in /storage/ssd4/333/4197333/public_html/heros51/confirm.php on line 18
Notice: Undefined variable: visitor_email in /storage/ssd4/333/4197333/public_html/heros51/confirm.php on line 21
<form action="confirm.php" method="POST" >
<label>Name >></label><input id="name" type="text" /><br />
<label>Email >></label><input id="email" type="text" /><br />
<label>PRI >></label><input id="p" type="text" /><br />
<label>Message >></label><textarea id="message" rows="1"></textarea><br /><br /><br />
<input type="submit" value="submit" />
<a class="button" alt="" href="index.html">Cancel</a>
</form>
The PHP which is linked looks like this:
if( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['p']) && isset($_POST['message']) ){
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
$p = $_POST['p'];
$email_from = 'default03#securemail.com';
$email_subject = "New Form submission $name ";
$email_body = "You have received a new message from the user $p.\n". "Here is the message:\n $message".
$to = "erixom#gmail.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
}
else
echo " ISSET FAIL";
$email_from = 'default03#securemail.com';
$email_subject = "New Form submission $name ";
$email_body = "You have received a new message from the user $p.\n". "Here is the message:\n $message".
$to = "test#gmail.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
mail($to,$email_subject,$email_body,$headers);
?>
instead of id="name" you must use name="name". The id attribute is used for JavaScript manipulation while the name attribute is used to name your POST variables
I would like to add that you should sanitize user submitted inputs. Even tho this might not be a internet facing project, it's never too early too adopt this as a habbit :)

php isset cannot use on result of expression contact form [duplicate]

This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 6 years ago.
I want to make a contact form which I have done in HTML like this.
none of this matters i found a better way to handle this using $_SERVER["RESQUEST_METHOD"]
I'll leave it up in case anyone is as new as me and making stupid mistakes.
<!DOCTYPE html>
<html lang="en">
<body>
<h4>Contact me!</h4>
<form method="post" action="test_form.php" autocomplete="on">
Subject:
<br>
<input type="text" name="subject" required>
<br>name:
<br>
<input type="text" name="name" required>
<br>Email:
<br>
<input type="email" name="email" required>
<br>Message:
<br>
<textarea name="message" rows="5" maxlength="500"></textarea>
<br>
<input type="submit" name="submit">
</form>
</body>
</html>
then after I add in the PHP to a separate form called test_form.php this is where I am stuck I have gone over three different layouts and formats what not and still returning the fatal error. this is my .php file I apologise for the layout. (just to add I have tried it with my variables inside the isset and I have tried them after.
<?php
$submit = $_post['submit'];
$to = "no#way.co.uk";
$header = "From:$name Email:$email /n subject:$subject";
$formcontent = "Name:$name /n Message:$message";
if (isset('submit')){
if (empty($_post['subject'])){
$subjectErr = "Subject is required!"
}else{
$subject = valid ($_post['subject']);
}
if(empty($_post['name'])){
$nameErr = "Name is required!";
}else{
$name = valid ($_post ['name']);
}
if(empty($_post['email'])){
emailErr = "Email is required!";
}else{
$email = valid ($_post['email']);
}
if(empty($_post['message'])){
$message = "";
}else{
$message = valid ($_post['message']);
}
//function to validate data
function valid ($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
mail ($to, $subject, $formcontent, $header) or die ('error');
echo "thank you";
}
?>
My question is where am I going wrong? I haven't even finished it yet I was just testing it to see if it was working.
According to a manual:
isset — Determine if a variable is set and is not NULL
See: variable. Do you have any variable in this:
isset('submit')
No, here's only a string "submit".
Your proper code is:
if (isset($submit))
Or simplified:
if (isset($_POST['submit']))
And by the way - it's $_POST, not $_post.
And another by the way - defining
$header = "From:$name Email:$email /n subject:$subject";
before $name, $email and $subject are defined - results in empty strings instead of real values.

Notice: Undefined Index - PHP [duplicate]

This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 7 years ago.
Not sure what is going on here. I am wanting to make a simple e-mail. When the PHP script runs I get three errors:
Notice: Undefined index: subject
Notice: Undefined index: email
Notice: Undefined index: emailcontent
HTML:
<form action="email.php" method="post" class="email-form">
<input type="text" name="subject" placeholder="E-mail Subject"></input>
<input type="text" name="email" placeholder="Your E-mail Address"></input>
<textarea type="text" name="emailcontent"></textarea>
<br>
<button type="submit" name="submit" value="send">Send E-mail</button>
</form>
PHP:
<?php
$emailSubject = $_POST["subject"];
$emailAddress = $_POST["email"];
$emailContent = $_POST["emailcontent"];
$headers = "From: " + $emailAddress;
$myEmail = "myemail";
mail($myEmail, $emailSubject, $emailContent, $headers);
?>
I think you should first check if fields are set or not. When page loads no value is and a notice is generated
<?php
if(isset($_POST['submit']))
{
$emailSubject = $_POST["subject"];
$emailAddress = $_POST["email"];
$emailContent = $_POST["emailcontent"];
$headers = "From: " + $emailAddress;
$myEmail = "myemail";
mail($myEmail, $emailSubject, $emailContent, $headers);
}
?>

No values in $_POST after submitting the form [duplicate]

This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 7 years ago.
I have just started coding in PHP and I am having some issues to make this code work. I have tried to change from $_POST to $HTTP_POST_VARS , but I still cant get the value, anybody could point me what am I doing wrong and how to fix this code?
<?php
$email_address = "email#email.com";
// your e-mail address goes here
$email_subject = "Online Enquiry";
// the subject line for the e-mail goes here
$from_email_name = "email#email.com";
// the from address goes here
$redirect_to_page = "thankyou.html";
// enter the web address where the user should be sent after completing the form
//*********************************
// DO NOT EDIT BELOW THIS LINE!!!**
//*********************************
$mailTo = "$email_address";
$mailSubject = "$email_subject";
$mailBody = "The form values entered by the user are as follows: \n\n";
foreach($_POST as $key=>$value)
{
$mailBody .= "$key = $value\n";
}
$mailBody .= "\n\n";
$fromHeader = "From: $from_email_name\n";
if(mail($mailTo, $mailSubject, $mailBody, $fromHeader))
{
print ("<B><br></b>");
}
echo "<meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=$redirect_to_page\">";
?>
My HTML form.
<form action="contact.php" method="post">
<input type="text" class="textbox" value=" Your Name" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Your Name';}">
<input type="text" class="textbox" value="Your E-Mail" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Your E-Mail';}">
<div class="clear"> </div>
<div>
<textarea value="Message:" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Your Message ';}">Your Message</textarea>
</div>
<div class="submit">
<input type="submit" value="SEND " />
</div>
</form>
See var_dump($_REQUEST). Default form submit uses $_GET object.

Categories