Hướng dẫn share code login php


Hướng dẫn share code login php

Hướng dẫn share code login php

#logout.php


#utility.php


 abc\\okok
	//abc\okok (user) -> abc\okok (server) -> sql (abc\okok) -> xuat hien ky tu \ -> ky tu dac biet -> error query
	//abc\okok (user) -> abc\okok (server) -> convert -> abc\\okok -> sql (abc\\okok) -> chinh xac
	$str = str_replace('\\', '\\\\', $str);
	//abc'okok -> abc\'okok
	//abc'okok (user) -> abc'okok (server) -> sql (abc'okok) -> xuat hien ky tu \ -> ky tu dac biet -> error query
	//abc'okok (user) -> abc'okok (server) -> convert -> abc\'okok -> sql (abc\'okok) -> chinh xac
	$str = str_replace('\'', '\\\'', $str);

	return $str;
}

function authenToken() {
	if (isset($_SESSION['user'])) {
		return $_SESSION['user'];
	}

	$token = getCOOKIE('token');
	if (empty($token)) {
		return null;
	}

	$sql    = "select users.* from users, login_tokens where users.id = login_tokens.id_user and login_tokens.token = '$token'";
	$result = executeResult($sql);

	if ($result != null && count($result) > 0) {
		$_SESSION['user'] = $result[0];

		return $result[0];
	}

	return null;
}

function getPOST($key) {
	$value = '';
	if (isset($_POST[$key])) {
		$value = $_POST[$key];
	}
	return fixSqlInjection($value);
}

function getCOOKIE($key) {
	$value = '';
	if (isset($_COOKIE[$key])) {
		$value = $_COOKIE[$key];
	}
	return fixSqlInjection($value);
}

function getGET($key) {
	$value = '';
	if (isset($_GET[$key])) {
		$value = $_GET[$key];
	}
	return fixSqlInjection($value);
}

function md5Security($pwd) {
	return md5(md5($pwd).MD5_PRIVATE_KEY);
}

#users.php






	User Management Page
	
	

	
	

	
	

	
	


	

Users Management ()

'; } ?>
No Full Name User Name Email Address
'.(++$count).' '.$item['fullname'].' '.$item['username'].' '.$item['email'].' '.$item['address'].'

#test.php


#register.php






	Register Page
	
	

	
	

	
	

	
	


	

Create New Account

Username or email existed!!!'; } ?>

I have a account

#readme.txt


Nội dung kiến thức
- login/register/users
- cookie

Giải pháp cũ:
login
	-> thành công: cookie (status = login) -> validate thông tin này để tự login.
	-> Ko xác thực được ai đã login vào hệ thông.
	-> Liên quan tới tính năng bảo mật => Ko có bảo mất => Ko sử dụng.

Giải pháp:
login -> thành công -> token:
							- Duy nhất
							- Khác nhau ở các thời điểm login
					-> save token xuống cookie
					-> save token vào database -> mapping tocken tương ứng với người dùng đã login
Gửi yêu cầu lên server -> đọc $_COOKIE: token -> query xác thực xem token là của người dùng nào.
					-> login multi platforms & multi devices.

create table login_tokens (
	id_user int references users (id),
	token varchar(32) not null unique,
	primary key (id_user, token)
)


Giải pháp single token:
https://www.youtube.com/watch?v=HkanPPB72Z4&list=PLMPBVRu4TjAw0uDNojnQkOFEocCulmngQ&index=30

users -> token -> moi 1 nguoi dung se co 1 token duy nhat

Chrome
	login -> thanh cong -> token A1 -> cookie (token: A1)
									-> update token A -> A1
	URL -> server -> token (cookie: A1) -> Tim dc id: 4 (TVD)
	TH sau khi Firefox login thanh cong
	URL -> server -> token (cookie: A2) -> Ko tim dc tk nao ung vs token A2 -> failed.

Firefox
	login -> thanh cong -> token A2 -> cookie (token: A2)
									-> update token A -> A2
	-> OK

#login.php






	Login Page
	
	

	
	

	
	

	
	


	

Login

Login failed'; } ?>

Create new account

#form-user.php


#form-register.php


#form-login.php


 0) {
		//login success
		$email = $result[0]['email'];
		$id    = $result[0]['id'];
		$token = md5Security($email.time().$id);

		// setcookie('status', 'login', time()+7*24*60*60, '/');
		setcookie('token', $token, time()+7*24*60*60, '/');

		// save database
		$sql = "insert into login_tokens (id_user, token) values ('$id', '$token')";
		execute($sql);

		header('Location: users.php');
		die();
	}
}

#dbhelper.php


 ko tra ve ket qua.
 */
function execute($sql) {
	//Mo ket noi toi database
	$conn = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
	mysqli_set_charset($conn, 'utf8');

	//Xu ly cau query
	mysqli_query($conn, $sql);

	//Dong ket noi database
	mysqli_close($conn);
}

/**
 * Su dung voi cau lenh query: select.
 */
function executeResult($sql) {
	//Mo ket noi toi database
	$conn = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
	mysqli_set_charset($conn, 'utf8');

	// echo $sql;
	//Xu ly cau query
	$resultset = mysqli_query($conn, $sql);
	// var_dump($resultset);
	// die();
	$data = [];
	while (($row = mysqli_fetch_array($resultset, 1)) != null) {
		$data[] = $row;
	}
	/**
	 * TH: param2 = 1
	 * $row = [
	 * 		'id' => 1,
	 * 		'title' => '1 - Android Tivi Sony 4K 55 inch KD-55X8000H',
	 * 		'thumbnail' => '12321',
	 * 		...
	 * ];
	 *
	 * TH: param2 = 2
	 * $row = [1, '1 - Android Tivi Sony 4K 55 inch KD-55X8000H', '12321', ...];
	 */

	//Dong ket noi database
	mysqli_close($conn);

	return $data;
}

#config.php