<?php
$_POST['regName'] = "xxxDEMONxxx";
$_POST['regPassword'] = "qwer123"; //ну тип это как бы юзер ввел в форму и все это прилетело в скрипт
$config['salt'] = "mamu_ebal_:^)"; //у тебя где то в коде есть файлик с конфигом, и подобные вещи в нем
//но я его тут всуну для наглядности, что бы все работало типа.


//тут тип та часть начинается, коорая выполняется после кнопки 'зарехестрироваться'

if (isset($_POST)){
	
	$registrationName = $_POST['regName'];
	//тут ты тип делаешь запрос в базу, проверяя что такое имя не занято
	//...
	//будь добр сам допиши sql-код который тебе будет высылать в ответ на имя пользователя всю инфу о нем в базе, ну или пустой ответ если юзера в базе нету
	//...
	if (empty($sqlAnswer)) {
		$error = 0; //ну тип не занято
	} else {
		$error = "Имя пользователья уже занято";
	}
	
	if (!$error) {
		$registrationPassword = $_POST['regPassword']; //ну взяли из формы пароль
		$saltyRegistrationPassword = $registrationPassword . $config['salt']; //посолили
		$passHash = md5($saltyRegistrationPassword); //захешировали
		
		//ну и тут отправляешь в базу свежеиспеченного юзверя
		//тут опять код с запросами к базе, я его пропущу, прост у тебя там лежит такое в итоге что-то:
		//...
		
		$db_user = ["id" => 1, "name" => $registrationName, "pass" => $passHash];
		//...
		
	} else {
		//выведешь ему опять форму регистрации, но теперь выведешь под ней еще красненьким цветом ошибку
	}
	
}

var_dump($db_user); //он на самом деле в базе, а не у нас в скрипте, ну надеюсь понятно.


//а тут попер код который запускается когда юзер пытается залогиниться.

$_POST['loginName'] = "xxxDEMONxxx"; //юзер ввел поле имени
$_POST['loginPassword'] = "qwer123"; //... и пароля

if (isset($_POST)){
	$loginName = $_POST['loginName'];
	
	//тут делаем запрос в базу, тип есть ли вообще такой пользователь там, и если есть то его данные соберем.
	//ну тип база вернула нам юзера какого-нибудь, пусть это будет уже тот что у нас есть
	$sqlLoginAnswer = $db_user;
	
	if (!empty($sqlLoginAnswer)) { //если в базе есть такой юзер, то ща проверим, он ли это на самом деле
		
		$loginPassword = $_POST['loginPassword']; //взяли из формы пароль
		$saltyLoginPassword = $loginPassword . $config['salt']; //посолили пароль под которым юзер пытается залогиниться
		$loginPassHash = md5($saltyLoginPassword); //ну и тоже захешировали его
		
		if ($sqlLoginAnswer['pass'] == $loginPassHash) { //ну и надо сверить, что зашифрованный пароль в базе теперь равен зашифрованному по такому же алгоритму паролю под которым чел пытается залогиниться
			//если пароли совпали, то логиним юзера тип, всё хорошо
			$loginedUserId = $sqlLoginAnswer['id']; //запомнили то юзер успешно залогинился
			//ну например в сессию
			//session_start();
			
			$_SESSION['loginedUserId'] = $sqlLoginAnswer['id'];
			$_SESSION['loginedUserName'] = $sqlLoginAnswer['name'];
		} else {
			$error = "пароль неверен";
		}
	
	} else {
		$error = "нет юзера с таким именем";
	}
	
}

//ну и в начале твоих страниц идет проверка, что действительно на них щемится только авторизованный юзер

if ($_SESSION['loginedUserId']) {
	echo "hello, " . $_SESSION['loginedUserName'] . "!";
} else {
	//редирект на страницу логина если нет сессии :3
}


