Неопределенный индекс в сообщении PHP

Я беру форму и выполняю проверку переменных в jquery, а затем передаю ее в файл php в ajax, но получаю это уведомление

Примечание: неопределенный индекс: ваше_имя в C:\xampp\htdocs\process.php в строке 3 что-то здесь не так Примечание: неопределенный индекс: your_email в C:\xampp\htdocs\process.php в строке 7

Вот мой код jquery здесь

        $(".button").click(function(){
    $('.error').hide(); 
    var your_email=$("input#your_email").val(); 
    if(your_email ==""){
        $("label#youremail_error").show();  
        $("input#your_email").focus(); 
        return false; 
    }
    var your_name=$("input#your_name").val(); 
    if(your_name==""){
        $("label#yourname_error").show();
        $("input#your_name").focus(); 
        return false; 
    }
    var friends_email=$("input#friends_email").val(); 
    if(friends_email==""){
        $("label#friendsemail_error").show(); 
        $("input#friends_email").focus(); 
        return false; 
        }
    var friends_name=$("input#friends_name").val(); 
    if(friends_email==""){
        $("label#friendsname_error").show(); 
        $("input#friends_name").focus(); 
        return false;
        }
        var dataString = 'your_email=' + your_email + '&friends_email=' + friends_email + '&your_name=' + your_name + '&friends_name=' + friends_name; 
        //alert(dataString); 
        $.ajax({
        type: "POST", 
        url:"process.php",
        data: dataString, 
        success: function(ret) {
            alert(ret); 
            //alert("thank you for signing up"); 
        },

а вот мой пхп

   <?php
include 'inc/class.phpmailer.php';
if(isset($_POST['your_name'])){
    $your_name=$_POST['your_name'];
    }
else{
    echo "something is wrong with your name having:";
    var_dump($_POST['your_name']);
    echo "<br/>"; 
    }
if(isset($_POST['your_email'])){
    $your_email=$_POST['your_email']; 
}
else{
    echo "something is wrong with your email having:";
    var_dump($_POST['your_email']); 
    echo "<br/>"; 
    }
if(isset($_POST['friends_name'])){
    $friends_name=$_POST['friends_name']; 
    }
else{
    echo "something is wrong with friends name having:"; 
    var_dump($_POST['friends_name']);
    echo "<br/>"; 
    }

Я не уверен, почему я получаю это уведомление. Очевидно, мои значения $_POST не установлены.
Я не в своем уме с этим. Вы знаете, почему/когда $_POST не установлен?


person user1154295    schedule 24.04.2012    source источник
comment
var_dump($_POST); --- всегда используйте var_dump(), чтобы увидеть, что на самом деле находится в переменной. Знания - вот чем отличаются программисты от гадалок   -  person zerkms    schedule 24.04.2012
comment
спасибо @zerkms, значения NULL :-( я так запутался, почему   -  person user1154295    schedule 24.04.2012


Ответы (3)


Сначала вы получаете значение your_name, а затем проверяете, существует ли оно

$your_name=$_POST["your_name"];  <--- this line should be inside an if isset
if(!isset($_POST['your_name'])){

Сделайте что-то вроде следующего

if (isset($_POST['your_name'])) {
   $your_name = $_POST['your_name'];
   // do whatever here
}
person Muhammad Hasan Khan    schedule 24.04.2012
comment
спасибо, @Hasan Khan, мои почтовые переменные не существуют, и когда я делаю var_dump, все оказывается NULL. Я в моем остроумии конец с этим. У вас есть идея, почему индекса $_POST не существует? - person user1154295; 24.04.2012
comment
Его не существует, потому что его нельзя отправить? Проверьте форму, которая публикует эти переменные. Убедитесь, что имя такое же. - person Muhammad Hasan Khan; 24.04.2012

$_POST['your_name'] не может быть назначено переменной $your_name, когда "your_name" не опубликовано, потому что оно не существует.. вам нужно сначала проверить, существует ли оно, а затем присвоить его переменной.. код должен выглядеть следующим образом:

if (isset($_POST['your_name'])) {
   $your_name = $_POST['your_name'];
}
else { 
   echo "something is wrong here";
}
person Ahmed Muhammad    schedule 24.04.2012
comment
спасибо @Ahmed Мухаммед :-) вы понимаете, почему его не существует? - person user1154295; 24.04.2012
comment
пока вы отправляете форму.. если «ваше_имя» не отправлено, оно не будет добавлено в массив $_POST - person Ahmed Muhammad; 25.04.2012

не видел никаких проблем в вашем коде js, но ваш код php имеет небольшой недостаток

 <?php
include 'inc/class.phpmailer.php';

//it can be like that or
if(!isset($_POST['your_name'])){
    echo "something is wrong here"; 
}
else{
    $your_name=$_POST["your_name"]; 
}

Примечание. Обработка ошибок PHP должна быть выполнена правильно, или вы можете отключить предупреждения php.

person ieatbytes    schedule 24.04.2012