この$_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'
を送信する必要が推測?
あなたは 'firebug'を取り、実際に送信されてきたものを見たらどう?おそらくそれはちょうどすべて渡されていない可能性がありますので、問題はクライアント上であり、PHPではありません – zerkms
handlePost()も参照してください。 – Corbin
残りの '