apache, PHP, mysql을 이용한 간단한 웹 서버 만들기

  • by

apache Web 서버, php, mysql을 활용해 회원등록, 로그인하면 회원정보만 출력하는 간단한 페이지를 만들어 보았다.

사용한 운영 체제는 kali Linux입니다.

운영체제는 VMware에 깔려있는 것이 kali이기 때문에 그냥 kali를 썼다.

보안 관련 부분이나 회원 등록 시 중복 검사를 하는 쿼리 등 추가해야 할 부분은 나중에 시간이 지나면 더욱 수정한다.


html, php 코딩

index.html

<html>
	<head>
		<title>Index Page</title>
		<meta charset="UTF-8">
	</head>
	<body>
		<div>
			<a href = "http://goblebin./m/login.html">login</a>
		</div>
		<div>
			<a href = "http://goblebin./m/sign_up.html">sign up</a>
		</div>
		<div>
			<a href = "http://goblebin./m/board.html">board</a>
		</div>
	</body>
</html>

login.html

<html>
	<head>
		<title>Login Page</title>
		<meta charset = "UTF-8">
	</head>
	<body>
		<form method = "POST" action = "PHP/login.php">
			<strong>
				<div>
					<strong>ID</strong>
					<input type = "text" name = "id" value = "id">
				</div>
				<div>
					<strong>PW</strong>
					<input type = "text" name = "pw" value = "pw">
				</div>
				<div>
					<input type = "submit" name = "login" value = "login">
				</div>
			</strong>
		</form>
	</body>
</html>
더 보기

로그인 페이지

ID
PW


sign_up.html

<html>
	<head>
		<title>Sign Up Page</title>
		<meta charset = "UTF-8">
	</head>
	<body>
		<h2>Sign Up</h2>
		<form method = "POST" action = "PHP/sign_up.php">
			<div>
				<strong>NAME</strong>
				<input type = "text" name = "name">
			</div>
			<div>
				<strong>AGE</strong>
				<input type = "text" name = "age">
			</div>
			<div>
				<strong>ID</strong>
				<input type = "text" name = "id">
			<div>
				<strong>PW</strong>
				<input type = "text" name = "pw">
			</div>
			<div>
				<input type = "submit" name = "signup" value = "signup">
			</div>
		</form>
	</body>
</html>
더 보기

가입 페이지

가입

NAME
AGE
ID

PW

login.php

<?php
	$host="localhost";
	$user="root";
	$password = '1234';
	$database="members";
	
	$conn = mysqli_connect($host, $user, $password, $database);
	
	if(isset($_POST('login'))) {
		$id = $_POST('id');
		$pw = $_POST('pw');
	}
	$sql = "SELECT * FROM information WHERE id = '$id' and pw = '$pw'";
	$result = mysqli_query($conn, $sql);

	if(mysqli_num_rows($result) == 0) {
		die("No Exist Account");
	}

	while($row = mysqli_fetch_array($result)) {
		echo "ID : ".$row('ID')."<br>"."NAME : ".$row('NAME')."<br>"."AGE : ".$row('AGE');
	}

	mysqli_close($conn);
?>

sign_up.php

<?php
	$host="localhost";
	$user="root";
	$password = '1234';
	$database="members";
	
	$conn = mysqli_connect($host, $user, $password, $database);
	if(!
$conn) { die("Failed to connect" . mysqli_connect_error()); } if(isset($_POST('signup'))) { $name = $_POST('name'); $age = $_POST('age'); $id = $_POST('id'); $pw = $_POST('pw'); } $sql = "INSERT INTO information(name, age, id, pw) VALUES('$name', '$age', '$id', '$pw')"; if(mysqli_query($conn, $sql)) { echo "\nSuccessed to sign up!
"; } else { echo "\nFailed to sign up!
"; } mysqli_close($conn); ?>

apache2.conf에서 추가한 설정

ServerRoot "/etc/apache2"
DocumentRoot "/var/www/html"
AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

<IfModule dir_module>
	DirectoryIndex index.html
</IfModule>

/var/www/html 경로에 html 파일을 넣습니다.

/var/www/html/PHP 경로에 php 파일을 넣었습니다.

php 파일에서 mysqli_connect($host, $user, $password, $database); 함수에서 제대로 작동하지 않는 문제가 발생하여 이틀 동안 오류를 찾을 수 없습니다.

확인하면 오류를 찾기 쉽다는 것도 알았다.

문제는 $user 및 $password 부분에서 발생했습니다.

mysql -u root -p 명령을 통해 루트 계정에 연결할 때 초기 비밀번호(‘root’)를 1234로 변경하여 코드도 적절히 수정해 주므로 문제가 해결되었다.

mysql 사용자 비밀번호를 변경하는 방법은

ALTER User 'root'@'localhost' IDENTIFIED BY '1234'

mysql 사용자를 생성하는 방법은

CREATE User 'kali'@'localhost' IDENTIFIED BY 'kali';

mysql 사용자를 확인하는 방법은

SELECT User FROM mysql.user;

mysqli_connect 함수가 동작하지 않기 때문에 사랑한 시간을 제외하고 코딩하는데 걸린 시간은 5시간 정도..?

오류를 해결하는 데 5시간 이상 지출했습니다.

시간을 많이 소비했지만 오류를 해결하면서 배운 것이 많다.


더 공부해야합니다.

php_mysqli 모듈 함수.

apache2.conf(httpd.conf) 설정값.

.htaccess 파일 설정.

SQL 문법

이 외에도 html, php 코딩 공부를 더 해야 하는 것 같다.