开发者

PHP mail keeps giving me undefined index, help?

I have a contact form script, and I added a few fields to it, identical to the rest, but the new variables on submit give 'notices' of undefined index, and the variables do not populate. I grab them POST like this,

$name     = $_POST['name'];
$website  = $_POST['website'];
$company  = $_POST['company'];
$addy     = $_POST['addy'];
$email    = $_POST['email'];
$phone    = $_POST['phone'];

The name, email and phone all work, but website, addy and company do not.

The JavaScript that grabs it looks like so,

$.post(action, { 
        name: $('#name').val(),
        email: $('#email').val(),
        website: $('#website').val(),
        company: $('#company').val(),
        addy: $('#开发者_如何学运维addy').val(),
        phone: $('#phone').val(),

..etc

What can cause this? I am unsure what other code would be helpful, thank you.

EDIT TO ADD HTML.

Here is some of the form code in the HTML, I can not see anything I missed..

<form method="post" action="send_mail.php" name="contactform" id="contactform">

        <fieldset>

        <legend>Please fill in the following form to contact us</legend>

        <label for=name accesskey=U><span class="required">*</span> Your Name</label>
        <input name="name" type="text" id="name" size="30" value="" /> 

        <br />
        <label for=email accesskey=E><span class="required">*</span> Email</label>
        <input name="email" type="text" id="email" size="30" value="" />

        <br />
        <label for=website accesskey=W>Website</label>
        <input name="website" type="text" id="website" size="30" value="" />

        <br />
        <label for=company accesskey=C>Company</label>
        <input name="company" type="text" id="company" size="30" value="" />

        <br />
        <label for=addy accesskey=A>Address</label>
        <input name="addy" type="text" id="addy" size="30" value="" />


If the values is false or empty, the post won't include those variables in the AJAX call. Recommend you to use isset() in the PHP to verify the variables are set:

$name     = isset($_POST['name']) ? $_POST['name'] : '';
etc...

Detailed explanation

If we in javascript (jQuery) has following code:

$.post('url',{
  'foo': 'bar',
  'baz': $('#nonexisting_element').val(),
   'qux': 'quux'
},...);

An #nonexisting_element doesn't exists, it will send following:

foo=bar&qux=quux

and on the PHP side following will end up in the PHP array:

$_POST = array (
    'foo' => 'bar'
    'qux' => 'quux'
);


jQuery does not send post fields whose value is null. So in your case the error is probably that you don't have fields with the given IDs website, addy, ....

Maybe you forgot to add the id=".." attribute or forgot to change it when copying the old code?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜