Я пытаюсь создать регистрационную форму и перейти по адресу mysqli_real_escape_string
и salt
на мою форму. Однако по каким-то причинам мои коды не будут продолжаться. Даже если я введу правильную информацию о моей форме, она не будет обрабатывать ее правильно. В основном я создал функцию, которая будет выполнять проверку.My PHP Регистрационная форма не работает
Вот мои коды:
<?php
session_start();
require("new-connection.php");
global $connection;
$first_name = mysqli_real_escape_string($connection, $_POST['first_name']);
$last_name = mysqli_real_escape_string($connection, $_POST['last_name']);
$email = mysqli_real_escape_string($connection, $_POST['email']);
$password = mysqli_real_escape_string($connection, $_POST['password']);
$salt = bin2hex(openssl_random_pseudo_bytes(22));
$encrypted_password = md5($password . '' . $salt);
if(isset($_POST['action']) && ($_POST['action']) == 'register'){
//call to function
register_user($_POST); //use the ACTUAL POST
}
elseif(isset($_POST['action']) && ($_POST['action']) == 'login'){
login_user($_POST);
}else{
session_destroy();
header('Location: homepage.php');
die();
}
function register_user(){ //just a parameter called post
$_SESSION['errors'] = array();
if(empty($first_name)){
$_SESSION['errors'][] = "first name can't be blank!";
}
if(empty($last_name)){
$_SESSION['errors'][] = "last name can't be blank!";
}
if(empty($password)){
$_SESSION['errors'][] = "password is required!";
}
if($password != $post['confirm_password']){
$_SESSION['errors'][] = "passwords must match!";
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$_SESSION['errors'][] = "please use a valid email address!";
}
//end of validation
//now count errors
if(count($_SESSION['errors']) > 0){
header('Location: homepage.php');
die();
}else{
$query = "INSERT INTO users(first_name, last_name, password, email, created_at, updated_at)
VALUES ('$first_name', '$last_name','$password', '$email', NOW(), NOW())";
$result = run_mysql_query($query);
$_SESSION['message'] = "user successfully added";
header('Location: homepage.php');
die();
}
}
function login_user($post){ //just a parameter called post
$query = "SELECT * FROM users WHERE users.password = '{$post['password']}'
AND users.email = '{$post['email']}'";
$user = fetch($query); //go and grab all users on above condition
if(count($user) > 0){
$_SESSION['user_id'] = $user[0]['id'];
$_SESSION['first_name'] = $user[0]['first_name'];
$_SESSION['logged_in'] = true;
header('Location: success-homepage.php');
die();
}else{
$_SESSION['errors'][] = "cant find users";
header('Location: homepage.php');
die();
}
}
?>
Любая идея, что пошло не так ???
ПРИМЕЧАНИЕ: оно не будет вставлять запись + ее сообщение об ошибке на $ _SESSION, даже введенные данные верны.
Где 'run_mysql_query' определено? Это не стандартный PHP. – Glorfindel
Функция register_user() не знает, что такое $ first_name и т. Д., Если вы не сделаете их глобальными или не передадите их в качестве параметров. –
Вы не отправили код, который действительно выполняет запрос. Здесь нет никакой попытки проверить какие-либо ошибки в вызове MYSQL, поэтому я предполагаю, что код тот же. Без правильной проверки ошибок вы не сможете узнать, что случилось не так. –