я создал php-форму и успешно подключил ее к mysql, я создал таблицу в mysql и добавил данные, все данные добавлены, за исключением того, что пол не отображается в базе данных, а пол 0 отображается в таблице. Второй вопрос - моя проверка не работает с формой Ниже приведен код: Вот код для подключения к базе данных и проверки:
<?php
session_start();
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$mail = $_POST['mail'];
$password = $_POST['password'];
$age = $_POST['age'];
$gender = $_POST['gender'];
//database Connection
$conn = new mysqli('localhost', 'root', '', 'codetodesign');
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
$stmt = $conn->prepare("insert into registration(firstName, lastName, mail, password, age, gender)
values(?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssi",$firstname, $lastname, $mail, $password, $age, $gender);
$stmt->execute();
echo "Registration successfully";
$stmt->close();
$conn->close();
}
//Validations
$firstnameErr = $lastnameErr = $mailErr = $passwordErr = $ageErr = $genderErr = "";
$firstname = $lastname = $mail = $password = $age = $gender = "";
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (empty($_POST["firstname"])){
$firstnameErr = "Firstname is required";
} else {
$firstname = test_input($_POST["firstname"]);
}
if (empty($_POST["lastname"])){
$lastnameErr = "lastname is required";
} else {
$lastname = test_input($_POST["lastname"]);
}
if (empty($_POST["mail"])){
$mailErr = "Mail is required";
} else {
$mail = test_input($_POST["mail"]);
}
if (empty($_POST["password"])){
$passwordErr = "Password is required";
} else {
$password = test_input($_POST["password"]);
}
if (empty($_POST["age"])){
$ageErr = "Age is required";
} else {
$age = test_input($_POST["age"]);
}
if (empty($_POST["gender"])){
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Here is the code for gender values:
<div class = "form-group">
<label for = "gender">Gender</label>
</div>
<label for = "male" class = "radio-inline"><input type = "radio" name = "gender" value = "m"
id = "male">Male</label>
<label for = "female" class = "radio-inline"><input type = "radio" name = "gender" value = "f"
id = "female">Female</label>
<label for = "others" class = "radio-inline"><input type = "radio" name = "gender" value = "o"
id = "other">Other</label>
<button type = "submit" class = "btn btn-primary">Submit</button>
</form>
@SimoneRossaini я сделал ошибку с запросом, я просто заменил, что я вставляю с s, и это работает, спасибо за ответ
это php, а не jquery :)
@SimoneRossaini, да, извините, это php
Помимо обрезки, то, что вы делаете в своей функции test_input
, не нужно, поскольку вы используете подготовленные операторы. Они автоматически очистят ваши входные значения. Кроме того, ознакомьтесь с хешированием паролей. Хранение простых текстовых паролей — огромная дыра в безопасности.
Вы можете установить свой тип данных пола в базе данных mysql на целое число в таблице mysql. Пожалуйста, проверьте это. попробуйте с этим для проверки
if (isset($_POST["firstname"])){
if (($_POST["firstname"] = "")){
$firstnameErr = "Firstname is required";
} else {
$firstname = test_input($_POST["firstname"]);
}
}
советы : пожалуйста, введите свой пароль, используя функцию md5() для безопасности
я пробовал этот код, но те же результаты, когда я оставляю первое место пустым в форме, не отображается сообщение для ввода имени, что означает, что проверка не работает. Есть ли другой способ решить это
Пожалуйста, не рекомендуйте md5
для хеширования паролей. Сама документация советует против этого, поскольку она была создана для скорости, а не для безопасности. Правильнее всего использовать password_hash и password_verify.
Вы ошиблись в своем запросе, вы используете «i» с буквой. Изменять:
$stmt->bind_param("sssssi",$firstname, $lastname, $mail, $password, $age, $gender);
в:
$stmt->bind_param("ssssss",$firstname, $lastname, $mail, $password, $age, $gender);
Ссылка для просмотра всех символов спецификации типа: Ссылка
спасибо, приятель, твой ответ сработал для меня, я сделал ошибку с запросом, я просто заменил, что я вставляю с s, и это работает
Вы пытались
var_dump($_POST)
или напрямуюvar_dump($_POST["gender"])
посмотреть, не пусто ли?