2012-03-02 8 views
0

この$_POST['submit']は私を夢中にしています。私はその値がNULLである理由は何も見ません。

これは私のPHPコードです:

if(isset($_POST['username']) && isset($_POST['email']) && isset($_POST['email2']) && isset($_POST['password']) 
&& isset($_POST['firstname']) && isset($_POST['surname']) && isset($_POST['gender']) && isset($_POST['day']) 
&& isset($_POST['month']) && isset($_POST['year'])) { 

    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $email2 = $_POST['email2']; 
    $password = $_POST['password']; 
    $firstname = $_POST['firstname']; 
    $surname = $_POST['surname']; 
    $gender = $_POST['gender']; 
    $day = $_POST['day']; 
    $month = $_POST['month']; 
    $year = $_POST['year']; 

    $date = $year."-".$month."-".$day; 

    $hashed_password = hashMe($password,$salt); 


    if (!preg_match("/^[a-z](?=[\w.]{3,19}$)\w*\.?\w*$/i", $username)) { 

     echo "invalid username"; 
    } 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 

     echo "Invalid email."; 
    } 
    if ($email !== $email2) { 

     echo "Emails are not matching."; 
    } 
    if (!preg_match("/^([^\s])[a-zA-Z]*$/i", $firstname)) { 

     echo "Invalid first name."; 
    } 
    if (!preg_match("/^([^\s])[a-zA-Z]*$/i", $surname)) { 

     echo "Invalid last name."; 
    } 
    if($day === "Day" || $month === "Month" || $year === "Year") { 

     echo "Choose a date."; 

    } 
    if($gender === "Your gender:") { 

     echo "choose a gender."; 
    } 
    else if(array_key_exists('submit', $_POST)) 
    { 
     $mysqli = new mysqli('blaa', 'blablaa', 'blabla', 'cucumber'); 

     if(mysqli_connect_errno()) { 
      echo "Connection Failed: " . mysqli_connect_errno(); 
      exit(); 
     } 

     $stmt = $mysqli->prepare("INSERT INTO USERS (USER_USERNAME, USER_EMAIL, USER_GENDER, USER_FIRSTNAME, USER_LASTNAME,   USER_BIRTHDAY, USER_PASSWORD, USER_SALT) VALUES (?,?,?,?,?,?,?,?)"); 
     $stmt->bind_param('ssssssss',$username,$email,$gender,$firstname,$surname,$date,$hashed_password,$salt); 
     $stmt->execute(); 

     echo "everything successfully inserted into the database \n"; 



    } 
    else{ 
     var_dump($_POST['submit']); 
     echo "something went wrong!"; 
    } 
} 

そして、これが私のボタンのコードです:

<input class="btn btn-large btn-success" id="register-button" type="submit" name="submit" value="Registreer" onclick="handlePost()"/> 

多分知っておくと便利:そこに私はすべてのログファイルを読み込むしようとしました、何もありません。他のすべての値はサーバーにうまく送信されているため、残りのフォームに問題はありません。 handlePost()はサーバーへのAjax呼び出しを行います。 var_dump($_POST)私は提出を除いてすべてを得ています。そしてvar_dump($_POST['submit'])は私にNULLを与えます。

UPDATE:handlePost()

function handlePost() { 

var username = $('#username').val(); 
var email = $('#email').val(); 
var email2 = $('#email2').val(); 
var password = $('#password').val(); 
var firstname = $('#firstname').val(); 
var surname = $('#surname').val(); 
var gender = $('#gender').val(); 
var day = $('#day').val(); 
var month = convertMonth($('#month').val()) 
console.log(month); 
var year = $('#year').val(); 

$.ajax({ 
    type: "POST", 
    url: "handleRegister.php", 
    data: "username="+username+"&email="+email+"&email2="+email2+"&password="+password+"&firstname=" 
    +firstname+"&surname="+surname+"&gender="+gender+"&day="+day+"&month="+month+"&year="+year, 
    success: function(resp){ 
    // we have the response 
    //alert("Server said:\n '" + resp + "'"); 

    console.log("Server said:\n '" + resp + "'"); 

    }, 
    error: function(e){ 
    //alert('Error: ' + e); 
    console.log("Server said:\n '" + e + "'"); 
    } 
}); 
} 

私は<form>を使用していないので、私は、私はまた、'submit'を送信する必要が推測?

+0

あなたは 'firebug'を取り、実際に送信されてきたものを見たらどう?おそらくそれはちょうどすべて渡されていない可能性がありますので、問題はクライアント上であり、PHPではありません – zerkms

+1

handlePost()も参照してください。 – Corbin

+0

残りの '

'は見えません。送信ボタンは ''の内部にありますか? –

答えて

1

data文字列には送信フィールドが含まれていません。追加すると、問題が解決されるはずです。

var sbmt = $('#register-button').val();

data: "username="+username+"&email="+email+"&email2="+email2+"&password="+password+"&firstname=" +firstname+"&surname="+surname+"&gender="+gender+"&day="+day+"&month="+month+"&year="+year+"&submit="+sbmt

+0

この回答は完璧です。ありがとう。 – Loolooii

1

handlePost()はどのようにAJAXコールを行いますか?

フォームを送信するイベントがボタン自体から来た場合、送信ボタンの値がPOSTデータにのみ含まれるという印象があります。なぜなら、送信ボタンが多数ある場合は、クリックされたものがデータに含まれます)。

編集:

あなた$.ajax呼び出しでdataプロパティは、サーバーに送信するすべてのものを含める必要があります。指定しなかったフォームの値は自動的には含まれません。

AJAXコールを行うことは、どのようにトリガーされても、フォームを正常に送信することとは異なります。

+0

handlePost()はこのボタンで実際に起動されるため、handleRegister.phpに送信する必要があります。 – Loolooii

+0

いいえ、私の編集を参照してください。 –

関連する問題