php подготовленные заявления и правильное использование - PullRequest
0 голосов
/ 03 июля 2018

Мне сказали, что я не правильно использую подготовленные утверждения ... хотя мое понимание предмета состояло в том, что использование подготовленных утверждений требует простой пошаговой процедуры, такой как подготовка, связывание, получение ... Мне также сказали, что это будет отправлять данные в разное время, чтобы сделать запросы пользователей к базе данных более безопасными. Вот пример того, как я использую подготовленные утверждения, если кто-то может прокомментировать, если это правильно и безопасно, что будет высоко оценено. Дополнительная информация всегда приветствуется.

<?php
//define connection
$conn = new mysqli('localhost', 'over_watch','xxxxxxx','billing');


//create variales and check if form is submitted
$first = htmlentities($_POST['first']);
$last= htmlentities($_POST['last']);
$address = htmlentities($_POST['address']);
$addressTwo = htmlentities($_POST['addressTwo']);
$city = htmlentities($_POST['city']);
$zip = htmlentities($_POST['zip']);
$state= htmlentities($_POST['state']);
$email = htmlentities($_POST['email']);
$password = htmlentities($_POST['password']);
$confirmPassword = htmlentities($_POST['confirmPassword']);


//EmailConfirmation
$CheckEmailSQL = $conn->prepare( "SELECT email FROM members WHERE email = ?;");
$CheckEmailSQL->bind_param('s',$email);
$CheckEmailSQL->execute();
$CheckEmailSQL->store_result();
$CheckEmailSQL->bind_result($CheckEmail);
$CheckEmailSQL->fetch();


//$CheckEmailSQLQuery = mysqli_query($conn,$CheckEmailSQL);
$CheckIfEmailExists = $CheckEmailSQL->num_rows();


//RegExExpressionsPassword//Email//ZipCode
$PasswordRegEx="/^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\`\~\!\@\#\$\%\^\&\*\(\)\-\_\=\+\[\]\{\}\\\|\;\:\,\.\<\>\/\?\'\"]).*$/";
$ZipCodeRegEx='/^\d{5,10}$/';
$EmailRegEx='/^.+@.+\.[a-zA-Z]{2,4}$/';

//ConditionalStatementsToCheckIfFormIsProperlyFilledOut
if (empty($first) || empty($last) || empty($address) || empty($addressTwo) || empty($city) || empty($zip)|| empty($state) || empty($email) || empty($password)|| empty($password) ||empty($confirmPassword)){
  header('Location:http://localhost/xampp/Websites/subWeb/sign-in-required-fill-out.php');
}
//CheckForValidZipCode
elseif(!(preg_match($ZipCodeRegEx,$zip))){
echo 'invalid';
}
//CheckIfEmailExists
elseif( $CheckIfEmailExists > 0 or !(preg_match($EmailRegEx,$email))){
  header('Location:http://localhost/xampp/Websites/subWeb/sign-in-required-fill-out-email.php');
}
//CheckIfValidEmailisUsed
elseif(!(preg_match($PasswordRegEx,$password)) or $password !== $confirmPassword ){
  header('Location:http://localhost/xampp/Websites/subWeb/sign-in-required-fill-out-password.php');

}
//QueryResultsToDataBase
else{
//HashPasswords
$passwordHashed = password_hash($password,PASSWORD_BCRYPT );
$confirmPasswordHashed = password_hash($confirmPassword,PASSWORD_BCRYPT );
//Query DataBase
$SQLInsertFormDataIntoDataBase = $conn->prepare("INSERT INTO members(first,last,address,address_two,city,zip,state,email,password,confirm_password)
VALUES (?,?,?,?,?,?,?,?,?,?);");
$SQLInsertFormDataIntoDataBase->bind_param('sssssissss',$first,$last,$address,$addressTwo,$city,$zip,$state,$email,$passwordHashed,$confirmPasswordHashed);
$SQLInsertFormDataIntoDataBase->execute();
header('Location:../Login.php');

}


 ?>
...