Member 13966350 Ответов: 3

Я уже построил систему входа в систему и хочу отображать имя пользователя и имя пользователя при входе в систему


этот код не показывает никаких ошибок, но я не получаю имя пользователя

function display_username() {
  //Start the Session


//3. If the form is submitted or not.
//3.1 If the form is submitted
if (isset($_POST['username']) and isset($_POST['password'])){
//3.1.1 Assigning posted values to variables.

//3.1.2 Checking the values are existing in the database or not
$query = "SELECT * FROM `users` WHERE username='$username' and password='$password'";
 
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
//3.1.2 If the posted values are equal to the database values, then session will be created for the user.
//if ($count == 1){
$_SESSION['username'] = $username;
//}else{
//3.1.3 If the login credentials doesn't match, he will be shown with an error message.
//$fmsg = "Invalid Login Credentials.";
//}
//}
//3.1.4 if the user is logged in Greets the user with message
if (isset($_SESSION['username'])){
$username = $_SESSION['username'];
echo "Hayyyyyy" . $username . "
";}

}

}




/****************Регистрация пользовательских функций ********************/

function register_user($first_name, $last_name, $username, $email, $password) {


	$first_name = escape($first_name);
	$last_name  = escape($last_name);
	$username   = escape($username);
	$email      = escape($email);
	$password   = escape($password);



	if(email_exists($email)) {


		return false;


	} else if (username_exists($username)) {

		return false;

	} else {

		$password   = md5($password);

		$validation_code = md5($username . microtime());

		$sql = "INSERT INTO users(first_name, last_name, username, email, password, validation_code, active)";
		$sql.= " VALUES('$first_name','$last_name','$username','$email','$password','$validation_code', 0)";
		$result = query($sql);
		confirm($result);


		$subject = "Activate Account";
		$msg = " Please click the link below to activate your Account
		http://omilearn.com/activate.php?email=$email&code=$validation_code
		";

		$headers = "From: noreply@omilearn.com";



		send_email($email, $subject, $msg, $headers);


		return true;

	}



}


<pre lang="PHP">
/****************Функции валидации ********************/



функция validate_user_registration(){

$ошибки = [];

$min = 3;
$max = 20;



// if($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_POST['register-submit'])) {

$first_name = clean($_POST['first_name']);
$last_name = clean($_POST['last_name']);
$имя пользователя = чистые($_POST, где['имя пользователя']);
$написать = чистые($_POST, где['электронной почты']);
$password = clean($_POST['пароль']);
$confirm_password = clean($_POST['confirm_password']);



if(strlen($first_name) < $min) {

$errors[] = "ваше имя не может быть меньше {$min} символов";

}

if(strlen($first_name) > $max) {

$errors[] = "ваше имя не может содержать более {$max} символов";

}




if(strlen($last_name) < $min) {

$errors[] = "ваша фамилия не может быть меньше {$min} символов";

}


if(strlen($last_name) > $max) {

$errors[] = "ваша фамилия не может содержать более {$max} символов";

}

if(strlen($username) < $min) {

$errors[] = "ваше имя пользователя не может быть меньше {$min} символов";

}

if(strlen($username) > $max) {

$errors[] = "ваше имя пользователя не может содержать более {$max} символов";

}


если(username_exists($имя пользователя)){

$errors[] = "Извините, что имя пользователя уже занято";

}



если(email_exists($электронной почты)){

$errors[] = "Извините, что электронная почта уже зарегистрирована";

}




if(strlen($email) < $min) {

$errors[] = "ваша электронная почта не может содержать более {$max} символов";

}

если($пароль !== $confirm_password) {

$errors[] = "Ваши поля пароля не совпадают";

}



if(!empty($errors)) {

по каждому элементу ($ошибок в $ошибка) {

Эхо validation_errors($ошибка);


}


} еще {


если(register_user($имя, $фамилия, $имя пользователя, $электронной почты, $пароль)) {



set_message("

Пожалуйста, проверьте свою электронную почту или папку со спамом для получения ссылки активации

");

перенаправление("index.php");


} еще {


set_message("

К сожалению мы не смогли зарегистрировать пользователя

");

перенаправление("index.php");

}



}



} // post-запрос



} // функция

Что я уже пробовал:

я перепробовал много кодов, но ничего не вышло
<?php display_username('$username'); ?>
<?php $_SESSION['username'] ?>
<?php
session_start();
echo $_SESSION['username']; ?>;

функция display_username() {

запрос $query=mysqli_query($Con, то ‘выберите имя пользователя из пользователей, где пользователи=”$_SESSION[‘логин’]”’);

$выборка=mysqli_fetch_assoc($кон $запрос);

$userNameToShow = $fetch[‘username’];


}

&ЛТ;?РНР display_username() ?&ГТ;


if(isset($_SESSION['email'])

3 Ответов

Рейтинг:
4

Member 13966350

Эти коды не дали никакой ошибки, но я не получаю имя пользователя

function display_username() {
	if (isset($_POST['username']) and isset($_POST['password'])){
//3.1.1 Assigning posted values to variables.

//3.1.2 Checking the values are existing in the database or not
$query = "SELECT * FROM `users` WHERE username='$username' and password='$password'";
$result = mysqli_query($con, $query) or die(mysqli_error($con));
        
        $count = mysqli_num_rows($result);

} else {
	echo "sorry";
}

}


Richard Deeming

Если вы хотите обновить свой вопрос, нажмите на зеленую ссылку "улучшить вопрос" и обновите свой вопрос.

НЕ опубликуйте свое обновление как "решение".

И НЕ затем отметьте ваше ложное "решение" как принятый ответ!

Рейтинг:
0

Patrice T

$query = "SELECT * FROM `users` WHERE username='$username' and password='$password'";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
0

Richard Deeming

$password   = md5($password);
$validation_code = md5($username . microtime());

$sql = "INSERT INTO users(first_name, last_name, username, email, password, validation_code, active)";
$sql.= " VALUES('$first_name','$last_name','$username','$email','$password','$validation_code', 0)";

Вы храните несоленый MD5-хэш пароля пользователя. Это очень небезопасный вариант.

if (isset($_POST['username']) and isset($_POST['password'])){
//3.1.1 Assigning posted values to variables.

//3.1.2 Checking the values are existing in the database or not
$query = "SELECT * FROM `users` WHERE username='$username' and password='$password'";

В этом блоке кода, по-видимому, отсутствует часть "присвоение разнесенных значений". Без него ваш код вообще не будет работать. А если вы просто делаете $password = $_POST['password'], то вы ожидаете, что пользователь войдет несоленые MD5-хэш их пароля, а не их фактического пароля. Это сведет на нет любые преимущества хэширования паролей и будет означать, что вы эффективно храните пароли в обычном тексте.


PHP имеет встроенные функции, которые помогут вам делать правильные вещи, используя безопасный соленый хэш. Вы должны изучить примеры и обновить свой код, чтобы использовать их:
PHP: password_hash[^]
РНР: функцию password_verify[^]