Очистка и проверка формы php
Полностью брошенный в глубокий конец – новый для PHP и простой отправки формы (создание страницы учетной записи) для отправки в базу данных mySQL, так что извиняйтесь за необъяснимость вопроса.
Я не уверен, как правильно проверять и деактивировать данные перед отправкой. Но я использую PDO и заполнители при вставке в базу данных, поэтому я думаю, что у меня есть эта сторона.
<form action="createaccount.php" name="form" method="post"> <input type="text" name="createUserName" id="createUserName" placeholder="User Name"><br> <input type="password" name="passWord" id="passWord" placeholder="Password (Min 6 Characters)"><br> <input type="password" name="confirmPW" id="confirmPW" placeholder="Confirm Password"><br> <input type="text" name="fName" id="fName" placeholder="First Name"><br> <input type="text" name="sName" id="sName" placeholder="Surname"><br><br> <input type="email" name="userEmail" id="userEmail" placeholder="Email Address"><br> <input type="submit" value="Create Account"> </form>
Это отправляется в отдельный php-файл с именем createaccount.php, который запускает проверку имени пользователя, и если успех выполняет функцию, которая отправляет поля в функцию insert в моем классе dbHandler.
<?php session_start(); include('connect.php'); $username = $_POST['createUserName']; $password = $_POST['passWord']; $password_confirm = $_POST['confirmPW']; $firstname = $_POST['fName']; $surname = $_POST['sName']; $email = $_POST['userEmail']; if ($dbh->checkUserName($username)) { $_SESSION['message'] = "Username is taken, please try again"; header('Location: createAccount.php'); exit(); } else { $dbh->createAccount($username, $password, $password_confirm, $firstname, $surname, $email); header('Location: login.php'); exit(); }; ?>
в<?php session_start(); include('connect.php'); $username = $_POST['createUserName']; $password = $_POST['passWord']; $password_confirm = $_POST['confirmPW']; $firstname = $_POST['fName']; $surname = $_POST['sName']; $email = $_POST['userEmail']; if ($dbh->checkUserName($username)) { $_SESSION['message'] = "Username is taken, please try again"; header('Location: createAccount.php'); exit(); } else { $dbh->createAccount($username, $password, $password_confirm, $firstname, $surname, $email); header('Location: login.php'); exit(); }; ?>
} else {<?php session_start(); include('connect.php'); $username = $_POST['createUserName']; $password = $_POST['passWord']; $password_confirm = $_POST['confirmPW']; $firstname = $_POST['fName']; $surname = $_POST['sName']; $email = $_POST['userEmail']; if ($dbh->checkUserName($username)) { $_SESSION['message'] = "Username is taken, please try again"; header('Location: createAccount.php'); exit(); } else { $dbh->createAccount($username, $password, $password_confirm, $firstname, $surname, $email); header('Location: login.php'); exit(); }; ?>
Так что мои вопросы. Должен ли я использовать
<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
В моей форме действие? Если так. Мне нужно запустить функцию createaccount.php здесь, потому что я не могу отправить ее в другой php-файл?
Должен ли я использовать filter_var? И / Или Должен ли я использовать обрезку, stripslashes или что-нибудь в моих переменных im, отправляющих в форму? Как мне это сделать? Мое понимание
$name = test_input($_POST['createUserName']); $password = test_input($_POST['passWord']); .. etc function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }
Кроме того, вот моя функция вставки. Это безопасно / написано правильно?
<?php function createAccount($userName, $pw, $confirmPW, $fName, $sName, $email) { $sql = "INSERT INTO `room_project`.`user` (`userName`, `pass`, `confirmPW`, `fName`, `sName`, `email`) VALUES (?, ?, ?, ?, ?, ?);"; $query = $this->connection->prepare($sql); $query->execute(Array($userName, $pw, $confirmPW, $fName, $sName, $email)); } ?>
Я очень ценю любые советы! Опять же, пожалуйста, извините начальный характер этого 🙂
Вы должны использовать регулярное выражение PHP для строгой проверки ваших входных данных.
Предположим, вы хотите проверить следующие поля ввода,
то вы бы сделали что-то подобное,
И используйте PDO, чтобы предотвратить вашу базу данных от любого типа SQL Injection.
От PDO :: подготовить
Я сделал пример для вас, чтобы проверить и оценить поля перед отправкой на сервер. посмотрите пожалуйста.
Это не полный пример. просто получите представление о том, как выполнить проверку нулевого значения с помощью javascript.