This $_POST['submit'] is driving me crazy. I don’t see any reason why its value is NULL.
This is my PHP code:
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!";
}
}
And this is my button code:
<input class="btn btn-large btn-success" id="register-button" type="submit" name="submit" value="Registreer" onclick="handlePost()"/>
Useful to know maybe: I’ve tried reading all log files, nothing there. All other values are being sent to the server nicely, so there’s no problem with the rest of the form. handlePost()makes an Ajax call to the server. using var_dump($_POST)I’m getting everything except submit. And var_dump($_POST['submit']) gives me 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 + "'");
}
});
}
I’m not using <form>, so I guess I also have to send 'submit' ?
Your
datastring does not contain the submit field. If you add it, it should solve your problem.var sbmt = $('#register-button').val();and
data: "username="+username+"&email="+email+"&email2="+email2+"&password="+password+"&firstname="+firstname+"&surname="+surname+"&gender="+gender+"&day="+day+"&month="+month+"&year="+year+"&submit="+sbmt