简体   繁体   中英

how to call a php function from my html form?

I have a template for a website, and I want to customize the message sender there. I saw this form to help out with the implementation of it.

the php file looks like this:

<?php
echo 'testing php'; 
$name = $_POST['name']; // contain name of person
$email = $_POST['email']; // Email address of sender 
$web = $_POST['web']; // Your website URL
$body = $_POST['text']; // Your message 
$receiver = "myEmail@hotmail.com" ; // hardcorde your email address here - This is the email address that all your feedbacks will be sent to 

$body = "Name:{$name}\n\nWebsite :{$web}\n\nComments:{$body}";
$send = mail($receiver, 'Contact Form Submission', $body, $email);
if ($send) {
    echo 'true'; //if everything is ok,always return true , else ajax submission won't work
}
?>

UPDATE

I've managed to call the php file like this:

<form id="form" method="post" action="ajaxSubmit.php" > 
                <fieldset> 
                <label><input type="text" id="name" name="name" value="Name" onBlur="if(this.value=='') this.value='Name'" onFocus="if(this.value =='Name' ) this.value=''"></label>
                  <label><input type="text" id="email" name="email" value="Email" onBlur="if(this.value=='') this.value='Email'" onFocus="if(this.value =='Email' ) this.value=''"></label> 
                <label><input type="text" id="web" name="web" value="Phone" onBlur="if(this.value=='') this.value='Phone'" onFocus="if(this.value =='Phone' ) this.value=''"></label>
                  <label><textarea id="text" name="text" onBlur="if(this.value==''){this.value='Message'}" onFocus="if(this.value=='Message'){this.value=''}">Message</textarea></label> 
                <input type="reset" /> 
                <input type="submit" /> 
                </fieldset> 
                </form>

but when I run this I get teh following ERROR

Warning: mail() [function.mail]: SMTP server response: 550 The address is not valid. in C:\wamp\www\forSale\dataTable\ajaxSubmit.php on line 17

but then I check the vallues of the variables, they are correct. what does that mean?

Unless my lack of coffee is playing tricks on my eyes, you have not specified a name attribute on those inputs. $_POST does not contain the ID of the element, but rather the 'name' and 'value' attributes.

eg:

<input type="text" id="name" value="Name" name="name" ...

edit: to debug this theory, try outputting the values of the $_POST variables in your PHP file

add attribute name="field_name" to the input fields. This might fix the issue.

As I said in the chat, you should try by starting from the ground up by first submitting the form normally, then improve it by validating it with javascript and after that try to submit it with ajax.

If you modify the form back to basics you get:

<form id="form" method="post" action="ajaxSubmit.php" >
    <fieldset>
        <input type="text" id="name" name="name" value="Name" 
                    onBlur="if(this.value=='') this.value='Name'" 
                    onFocus="if(this.value =='Name' ) this.value=''" />
        <input type="text" id="email" name="email"  value="Email" 
                    onBlur="if(this.value=='') this.value='Email'"
                    onFocus="if(this.value =='Email' ) this.value=''" />
        <input type="text" id="web" name="web"  value="Phone" 
                    onBlur="if(this.value=='') this.value='Phone'" 
                    onFocus="if(this.value =='Phone' ) this.value=''" />
        <textarea id="text" name="text" value="Message"
                    onBlur="if(this.value==''){this.value='Message'}" 
                    onFocus="if(this.value=='Message') this.value=''}" />  
        <input type="reset" />
        <input type="submit" />
    </fieldset>  
</form>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM