Я не уверен, как озаглавить это;боролся с этим часами, это вроде странная проблема.
У меня есть следующее подготовленное утверждение:
$query = mysqli_prepare($con, "INSERT INTO users
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$query->bind_param('issssssisisiiisssssssssissssi',
$empty, $fname, $lname, $username,
$em, $hash, $date, $empty,
$empty, $empty, $profile_pic, $zero,
$zero, $zero, $no, $comma,
$empty, $empty, $empty, $empty,
$empty, $show, $empty, $empty,
$empty, $banner_pic, $banner_pic_two, $token, $two);
$query->execute();
$query->close();
if ($query) {
array_push($error_array, "<span>Check Your Email to Activate Your Account!</span><br>");
Прежде чем я подойду к этому пункту, есть несколько сдержек и противовесов, но я постараюсь сосредоточиться на этом, если смогу.Когда я заполняю регистрационную форму, я получаю сообщение Check Your Email to Activate Your Account!
Итак, я делаю это и активирую, и это тоже проверяется.Когда я иду на вход, это не в дБ - поэтому, конечно, я получаю сообщение об ошибке.Я также вижу в phpmyAdmin, что его там нет.Поэтому я подумал, что это где-то здесь $query->bind_param
.Прошел через это и как он соответствует дБ, и это выглядит хорошо.
НО (и это странно), когда я ввожу имя и фамилию того, кто уже находится в дБ, регистрация работает.Я не могу использовать тот же адрес электронной почты, (я получу сообщение об ошибке), но я также не могу использовать новое имя с новым адресом электронной почты.Имена должны быть кем-то уже в дБ.Вот как вводятся $fname
и $lname
.
<div class="account-row">
<label for="firstname">FIRST NAME</label>
<input type="text" class="account-input" name="reg_fname" id="firstname" value="<?php if(isset($_SESSION['reg_fname'])){
echo $_SESSION['reg_fname'];
}
?>">
</div>
<div class="account-row">
<label for="lastname">LAST NAME</label>
<input type="text" class="account-input" name="reg_lname" id="lastname" value="<?php if(isset($_SESSION['reg_lname'])){
echo $_SESSION['reg_lname'];
}
?>">
</div>
Вот как они обрабатываются после отправки формы:
//Declaring varibales to prevent errors
$fname = ""; //First Name
$lname = ""; //Last Name
$email = ""; //email
$em2 = ""; //email 2
$password = ""; //password
$password2 = ""; //password 2
$date = ""; //Sign up date
$banner_pic = "assets/images/banner_pics/default/default.gif";
$banner_pic_two = "assets/images/banner_pics/default/default2.gif";
$error_array = array(); //Holds error messages
if(isset($_POST['register_button'])){
//Registration form values
// First name
$fname = strip_tags($_POST['reg_fname']); //Remove html tags
$fname = str_replace(' ', '', $fname); //Removes spaces
$fname = ucfirst(strtolower($fname)); //Uppercase first letter
$_SESSION['reg_fname'] = $fname; //Stores first name into session variable
// Last name
$lname = strip_tags($_POST['reg_lname']); //Remove html tags
$lname = str_replace(' ', '', $lname); //Removes spaces
$lname = ucfirst(strtolower($lname)); //Uppercase first letter
$_SESSION['reg_lname'] = $lname; //Stores last name into session variable
Помимо этого у меня есть некоторый код, который concats
имя и фамилия для создания имени пользователя идобавляет целые числа в конец, если он уже существует.Это работает, b / c, поскольку имена уже находятся в дБ, он просто добавляет 1,2,3 и т. Д. В конце, сколько раз я подписывался с ним.Но когда я вернусь к попытке использовать новое имя и фамилию (еще раз), он не войдет в дБ.Кто-нибудь может увидеть из того, что я написал, где может быть проблема?Я работаю локально, поэтому мне интересно, связано ли это с переменными сеанса ... но я не могу понять, как?