1. 다음은 실습 사이트의 메인 페이지에 게시판의 최근 게시판 목록을 불러오는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    $con =________________("localhost", "user1", "12345", "sample");
    $sql = "select * from board order by num desc ________________ 5";
    $result = mysqli_query($con, $sql);

    if (!$result)
        echo "게시판 DB 테이블(board)이 생성 전이거나 아직 게시글이 없습니다!";
    else
    {
        while( $row = ________________($result) )
        {
            $regist_day = _______________($row["regist_day"], 0, 10);
?>
                <li>
                    <span><?=$row["subject"]?></span>
                    <span><?=$row["name"]?></span>
                    <span><?=$regist_day?></span>
                </li>
<?php
        }
    }
?>
더보기

mysqli_connect
limit
mysqli_fetch_array
substr

<?php
    $con = mysqli_connect("localhost", "user1", "12345", "sample");
    $sql = "select * from board order by num desc limit 5";
    $result = mysqli_query($con, $sql);

    if (!$result)
        echo "게시판 DB 테이블(board)이 생성 전이거나 아직 게시글이 없습니다!";
    else
    {
        while( $row = mysqli_fetch_array($result) )
        {
            $regist_day = substr($row["regist_day"], 0, 10);
?>
                <li>
                    <span><?=$row["subject"]?></span>
                    <span><?=$row["name"]?></span>
                    <span><?=$regist_day?></span>
                </li>
<?php
        }
    }
?>

2. 다음은 관리자 모드에서 회원을 삭제하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    _________________;
    if (isset($_SESSION["userlevel"])) $userlevel = $_SESSION["userlevel"];
    else $userlevel = "";

    if ( _________________ != 1 )
    {
        echo("
            <script>
            alert('관리자가 아닙니다! 회원 삭제는 관리자만 가능합니다!');
            history.go(-1)
            </script>
        ");
                exit;
    }

    $num   = $_GET["num"];

    $con = _________________("localhost", "user1", "12345", "sample");
    $sql = "_________________ from members where num = $num";
    _________________($con, $sql);

    mysqli_close($con);

   /*생략*/
?>
더보기

session_start()
$userlevel
mysqli_connect
delete
mysqli_query

<?php
    session_start();
    if (isset($_SESSION["userlevel"])) $userlevel = $_SESSION["userlevel"];
    else $userlevel = "";

    if ( $userlevel != 1 )
    {
        echo("
            <script>
            alert('관리자가 아닙니다! 회원 삭제는 관리자만 가능합니다!');
            history.go(-1)
            </script>
        ");
                exit;
    }

    $num   = $_GET["num"];

    $con = mysqli_connect("localhost", "user1", "12345", "sample");
    $sql = "delete from members where num = $num";
    mysqli_query($con, $sql);

    mysqli_close($con);

   /*생략*/
?>

3. 문자열에서 특정 문자셋을 기준으로 문자열을 추출하는 데 사용하는 함수는 무엇인가?

더보기

mb_substr()

 

1. 다음은 게시판 폼 양식에 사용자가 입력한 정보를 DB에 저장하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  /*생략 */
    $subject = $_POST["subject"];
    $content = $_POST["content"];
    $regist_day = date("Y-m-d (H:i)");  // 현재의 '년-월-일-시-분'을 저장
    $upload_dir = './data/'; 

	$upfile_name	 = $_FILES["upfile"]["name"];
	$upfile_tmp_name = $_FILES["upfile"]["tmp_name"];
	$upfile_type     = $_FILES["upfile"]["type"];
	$upfile_size     = $_FILES["upfile"]["size"];
	$upfile_error    = $_FILES["upfile"]["error"];

	if ($upfile_name && !$upfile_error)
	{
		$file = ________(".", $upfile_name);
		$file_name = $file[0];
		$file_ext  = $file[1];

		$new_file_name = date("Y_m_d_H_i_s");
		$new_file_name = $new_file_name;
		$copied_file_name = $new_file_name.".".$file_ext;      
		$uploaded_file = $upload_dir.$copied_file_name;


		________($upfile_tmp_name, $uploaded_file);
		
	}
	else 
	{
		$upfile_name      = "";
		$upfile_type      = "";
		$copied_file_name = "";
	}
	
	$con = mysqli_connect("localhost", "user1", "12345", "sample");

	$sql = "________ board (id, name, subject, content, regist_day, hit,  file_name, file_type, file_copied) ";
	$sql .= "values('$userid', '$username', '$subject', '$content', '$regist_day', 0, ";
	$sql .= "'$upfile_name', '$upfile_type', '$copied_file_name')";
	________($con, $sql);  // $sql 에 저장된 명령 실행
	mysqli_close($con);                // DB 연결 끊기
/*생략*/
?>
더보기

explode
move_uploaded_file
insert into
mysqli_query

<?php
  /*생략 */
    $subject = $_POST["subject"];
    $content = $_POST["content"];
    $regist_day = date("Y-m-d (H:i)");  // 현재의 '년-월-일-시-분'을 저장
    $upload_dir = './data/'; 

	$upfile_name	 = $_FILES["upfile"]["name"];
	$upfile_tmp_name = $_FILES["upfile"]["tmp_name"];
	$upfile_type     = $_FILES["upfile"]["type"];
	$upfile_size     = $_FILES["upfile"]["size"];
	$upfile_error    = $_FILES["upfile"]["error"];

	if ($upfile_name && !$upfile_error)
	{
		$file = explode(".", $upfile_name);
		$file_name = $file[0];
		$file_ext  = $file[1];

		$new_file_name = date("Y_m_d_H_i_s");
		$new_file_name = $new_file_name;
		$copied_file_name = $new_file_name.".".$file_ext;      
		$uploaded_file = $upload_dir.$copied_file_name;


		move_uploaded_file($upfile_tmp_name, $uploaded_file);
		
	}
	else 
	{
		$upfile_name      = "";
		$upfile_type      = "";
		$copied_file_name = "";
	}
	
	$con = mysqli_connect("localhost", "user1", "12345", "sample");

	$sql = "insert into board (id, name, subject, content, regist_day, hit,  file_name, file_type, file_copied) ";
	$sql .= "values('$userid', '$username', '$subject', '$content', '$regist_day', 0, ";
	$sql .= "'$upfile_name', '$upfile_type', '$copied_file_name')";
	mysqli_query($con, $sql);  // $sql 에 저장된 명령 실행
	mysqli_close($con);                // DB 연결 끊기
/*생략*/
?>

2. 다음은 게시판의 글 목록을 보여주는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

   	<div id="board_box">
	    <h3>
	    	게시판 > 목록보기
		</h3>
	    <ul id="board_list">
				<li>
					<span class="col1">번호</span>
					<span class="col2">제목</span>
					<span class="col3">글쓴이</span>
					<span class="col4">첨부</span>
					<span class="col5">등록일</span>
					<span class="col6">조회</span>
				</li>
<?php
	$con = mysqli_connect("localhost", "user1", "12345", "sample");
	$sql = "select * from board order by num desc";
	$result = ____________($con, $sql);
	$total_record = ____________($result); // 전체 글 수

	$scale = 10;

	// 전체 페이지 수($total_page) 계산 
	if ($____________ % $scale == 0)     
		$total_page = floor($total_record/$scale);      
	else
		$total_page = floor($total_record/$scale) + 1; 
 
	// 표시할 페이지($page)에 따라 $start 계산
	//최 중요 코드 페이징 
	$start = ($page - 1) * $scale;      

	$number = $total_record - $start;

   for ($i=$start; $i<$start+$scale && $i < $total_record; $i++)
   {
      ____________($result, $i);
      // 가져올 레코드로 위치(포인터) 이동
     ____________ = mysqli_fetch_array($result);
      // 하나의 레코드 가져오기
	  $num         = $row["num"];
	  $id          = $row["id"];
	  $name        = $row["name"];
	  $subject     = $row["subject"];
      $regist_day  = $row["regist_day"];
      $hit         = $row["hit"];
      if ($row["file_name"])
      	$file_image = "<img src='./img/file.gif'>";
      else
      	$file_image = " ";
?>
				<li>
					<span class="col1"><?=$number?></span>
					<span class="col2"><a href="board_view.php?num=<?=$num?>&page=<?=$page?>"><?=____________?></a></span>
					<span class="col3"><?=$name?></span>
					<span class="col4"><?=$file_image?></span>
					<span class="col5"><?=$regist_day?></span>
					<span class="col6"><?=$hit?></span>
				</li>	
<?php
   	   $number--;
   }
   mysqli_close($con);

?>
	    	
	</div>
더보기

mysqli_query
mysqli_num_rows
total_record
mysqli_data_seek
$row
$subject

   	<div id="board_box">
	    <h3>
	    	게시판 > 목록보기
		</h3>
	    <ul id="board_list">
				<li>
					<span class="col1">번호</span>
					<span class="col2">제목</span>
					<span class="col3">글쓴이</span>
					<span class="col4">첨부</span>
					<span class="col5">등록일</span>
					<span class="col6">조회</span>
				</li>
<?php
	$con = mysqli_connect("localhost", "user1", "12345", "sample");
	$sql = "select * from board order by num desc";
	$result = mysqli_query($con, $sql);
	$total_record = mysqli_num_rows($result); // 전체 글 수

	$scale = 10;

	// 전체 페이지 수($total_page) 계산 
	if ($total_record % $scale == 0)     
		$total_page = floor($total_record/$scale);      
	else
		$total_page = floor($total_record/$scale) + 1; 
 
	// 표시할 페이지($page)에 따라 $start 계산
	//최 중요 코드 페이징 
	$start = ($page - 1) * $scale;      

	$number = $total_record - $start;

   for ($i=$start; $i<$start+$scale && $i < $total_record; $i++)
   {
      mysqli_data_seek($result, $i);
      // 가져올 레코드로 위치(포인터) 이동
      $row = mysqli_fetch_array($result);
      // 하나의 레코드 가져오기
	  $num         = $row["num"];
	  $id          = $row["id"];
	  $name        = $row["name"];
	  $subject     = $row["subject"];
      $regist_day  = $row["regist_day"];
      $hit         = $row["hit"];
      if ($row["file_name"])
      	$file_image = "<img src='./img/file.gif'>";
      else
      	$file_image = " ";
?>
				<li>
					<span class="col1"><?=$number?></span>
					<span class="col2"><a href="board_view.php?num=<?=$num?>&page=<?=$page?>"><?=$subject?></a></span>
					<span class="col3"><?=$name?></span>
					<span class="col4"><?=$file_image?></span>
					<span class="col5"><?=$regist_day?></span>
					<span class="col6"><?=$hit?></span>
				</li>	
<?php
   	   $number--;
   }
   mysqli_close($con);

?>
	    	
	</div>

3. 게시판 기능을 구현하는 데 사용되는 PHP 함수에 관한 물음에 답하시오.

① 문자열을 분리하여 배열로 반환하는 함수는 무엇인가?

② 업로드된 파일을 새로운 위치의 파일(경로 포함)로 이동하는 데 사용하는 함수는 무엇인가?

③ 파일을 열어서 그 파일이 지시하는 파일 포인터를 얻는 데 사용하는 함수는 무엇인가?

④ 현재 파일 포인터가 지시하는 위치부터 끝까지 파일을 읽어 출력 버퍼에 저장하는 함수는 무엇인가?

더보기

① explode()

② move_uploaded_file()

③ fopen()

④ fpassthru()

1. 다음은 쪽지를 DB에 저장하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    $send_id = $_GET["send_id"];

    $rv_id = $_POST['rv_id'];
    $subject = $_POST['subject'];
    $content = $_POST['content'];
	$content = ____________________($content, ENT_QUOTES);
	$regist_day = _______("Y-m-d (H:i)");  // 현재의 '년-월-일-시-분'을 저장

	$con =_______("localhost", "user1", "12345", "sample");
	$sql = "select * from members where id='$rv_id'";
	$result = mysqli_query($con, $sql);
	$num_record = _______($result);

	if($num_record)
	{
		$sql = "insert into message (send_id, rv_id, subject, content,  regist_day) ";
		$sql .= "values('$send_id', '$rv_id', '$subject', '$content', '$regist_day')";
		_______($con, $sql);  // $sql 에 저장된 명령 실행
	} else {
		echo("
			<script>
			alert('수신 아이디가 잘못 되었습니다!');
			history.go(-1)
			</script>
			");
		exit;
	}

	mysqli_close($con);                // DB 연결 끊기
?>
더보기

htmlspecialchars

date

mysqli_connect

mysqli_num_rows

mysqli_query

<?php
    $send_id = $_GET["send_id"];

    $rv_id = $_POST['rv_id'];
    $subject = $_POST['subject'];
    $content = $_POST['content'];
	$content = htmlspecialchars($content, ENT_QUOTES);
	$regist_day = date("Y-m-d (H:i)");  // 현재의 '년-월-일-시-분'을 저장

	$con = mysqli_connect("localhost", "user1", "12345", "sample");
	$sql = "select * from members where id='$rv_id'";
	$result = mysqli_query($con, $sql);
	$num_record = mysqli_num_rows($result);

	if($num_record)
	{
		$sql = "insert into message (send_id, rv_id, subject, content,  regist_day) ";
		$sql .= "values('$send_id', '$rv_id', '$subject', '$content', '$regist_day')";
		mysqli_query($con, $sql);  // $sql 에 저장된 명령 실행
	} else {
		echo("
			<script>
			alert('수신 아이디가 잘못 되었습니다!');
			history.go(-1)
			</script>
			");
		exit;
	}

	mysqli_close($con);                // DB 연결 끊기
?>

2. 다음은 수신/송신 쪽지함에서 DB에 저장된 쪽지의 목록을 보여주는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
	$con = mysqli_connect("localhost", "user1", "12345", "sample");
	$result = mysqli_query($con, $sql);
	$total_record = __________($result); // 전체 글 수
	$scale = 10;

	// 전체 페이지 수($total_page) 계산 
	if ($total_record % __________ == 0)     
		$total_page = floor($total_record/$scale);      
	else
		$total_page = floor($total_record/$scale) + 1; 
 
	// 표시할 페이지($page)에 따라 $start 계산  
	$start = ($page - 1) * $scale;      

	$number = $total_record - $start;

   for ($i=$start; $i<$start+$scale && $i < $total_record; $i++)
   {
     __________ ($result, $i);
      // 가져올 레코드로 위치(포인터) 이동
      __________ = mysqli_fetch_array($result);
      // 하나의 레코드 가져오기
	  $num    = $row["num"];
	  $subject     = $row["subject"];
      $regist_day  = $row["regist_day"];

	  if ($mode=="send")
	  	$msg_id = $row["rv_id"];
	  else
	  	$msg_id = $row["send_id"];
	  
	  $result2 = __________($con, "select name from members where id='$msg_id'");
	  $record = mysqli_fetch_array($result2);
	  $msg_name     = $record["name"];	  

/*생략 */

   	   $number--;
   }
   mysqli_close($con);
?>
더보기

mysqli_num_rows
$scale
mysqli_data_seek
$row
mysqli_query

<?php
	$con = mysqli_connect("localhost", "user1", "12345", "sample");
	$result = mysqli_query($con, $sql);
	$total_record = mysqli_num_rows($result); // 전체 글 수
	$scale = 10;

	// 전체 페이지 수($total_page) 계산 
	if ($total_record % $scale == 0)     
		$total_page = floor($total_record/$scale);      
	else
		$total_page = floor($total_record/$scale) + 1; 
 
	// 표시할 페이지($page)에 따라 $start 계산  
	$start = ($page - 1) * $scale;      

	$number = $total_record - $start;

   for ($i=$start; $i<$start+$scale && $i < $total_record; $i++)
   {
      mysqli_data_seek($result, $i);
      // 가져올 레코드로 위치(포인터) 이동
      $row = mysqli_fetch_array($result);
      // 하나의 레코드 가져오기
	  $num    = $row["num"];
	  $subject     = $row["subject"];
      $regist_day  = $row["regist_day"];

	  if ($mode=="send")
	  	$msg_id = $row["rv_id"];
	  else
	  	$msg_id = $row["send_id"];
	  
	  $result2 = mysqli_query($con, "select name from members where id='$msg_id'");
	  $record = mysqli_fetch_array($result2);
	  $msg_name     = $record["name"];	  

/*생략 */

   	   $number--;
   }
   mysqli_close($con);
?>

3. 다음은 쪽지의 내용을 보여주는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

   	<div id="message_box">
	    <h3 class="title">
<?php
	$mode = $_GET["mode"];
	$num  = $_GET["num"];

	$con = _________("localhost", "user1", "12345", "sample");
	$sql = "_________ * from message where num=$num";
	$result = _________($con, $sql);

	$row = _________($result);
	$rv_id      = $row["rv_id"];
	$regist_day = $row["regist_day"];
	$subject    = $row["subject"];
	$content    = $row["content"];

	$content = _________(" ", "&nbsp;", $content);
	$content = _________("\n", "<br>", $content);

	if ($mode=="send")
		$result2 = mysqli_query($con, "select name from members where id='$rv_id'");
	else
		$result2 = mysqli_query($con, "select name from members where id='$send_id'");

	$record = ________($result2);
	$msg_name = $record["name"];

	if ($mode=="send")	    	
	    echo "송신 쪽지함 > 내용보기";
	else
		echo "수신 쪽지함 > 내용보기";
?>
		</h3>
	    <ul id="view_content">
			<li>
				<span class="col1"><b>제목 :</b> <?=$subject?></span>
				<span class="col2"><?=$msg_name?> | <?=$regist_day?></span>
			</li>
			<li>
				<?=$content?>
			</li>		
	    </ul>
	</div>
더보기

mysqli_connect
select
mysqli_query
mysqli_fetch_array
str_replace
str_replace
mysqli_fetch_array

   	<div id="message_box">
	    <h3 class="title">
<?php
	$mode = $_GET["mode"];
	$num  = $_GET["num"];

	$con = mysqli_connect("localhost", "user1", "12345", "sample");
	$sql = "select * from message where num=$num";
	$result = mysqli_query($con, $sql);

	$row = mysqli_fetch_array($result);
	$rv_id      = $row["rv_id"];
	$regist_day = $row["regist_day"];
	$subject    = $row["subject"];
	$content    = $row["content"];

	$content = str_replace(" ", "&nbsp;", $content);
	$content = str_replace("\n", "<br>", $content);

	if ($mode=="send")
		$result2 = mysqli_query($con, "select name from members where id='$rv_id'");
	else
		$result2 = mysqli_query($con, "select name from members where id='$send_id'");

	$record = mysqli_fetch_array($result2);
	$msg_name = $record["name"];

	if ($mode=="send")	    	
	    echo "송신 쪽지함 > 내용보기";
	else
		echo "수신 쪽지함 > 내용보기";
?>
		</h3>
	    <ul id="view_content">
			<li>
				<span class="col1"><b>제목 :</b> <?=$subject?></span>
				<span class="col2"><?=$msg_name?> | <?=$regist_day?></span>
			</li>
			<li>
				<?=$content?>
			</li>		
	    </ul>
	</div>

4. 쪽지 기능을 구현하는 데 사용되는 PHP 함수에 관한 물음에 답하시오.

① 문자열에 포함된 특수 문자를 HTML 특수 기호로 변환하는 함수는 무엇인가?

② 소수점 이하를 내림한 정수를 반환하는 함수는 무엇인가?

③ 레코드 집합 내로 포인터를 이동하는 함수로, 이 함수를 수행한 후 mysqli_fetch_array() 함수가 호출되면 포인터가 지시하는 레코드를 가져오는 것은 무엇인가?

더보기

① htmlspecialchars() 

② floor()

③ mysqli_data_seek()

 

1. 다음은 세션을 이용하여 로그인을 처리하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    $id   = $_POST["id"];
    $pass = $_POST["pass"];

   $con = mysqli_connect("localhost", "user1", "12345", "sample");
 ______ = "select * from members where id='$id'";
 ______ = mysqli_query($con, $sql);
 ______ = mysqli_num_rows($result);

   if(!$num_match) 
   {
     echo("
           <script>
             window.alert('등록되지 않은 아이디입니다!')
             history.go(-1)
           </script>
         ");
    }
    else
    {
        $row = _________($result);
        $db_pass = $row["pass"];

        mysqli_close($con);

        if($pass != _________)
        {

           echo("
              <script>
                window.alert('비밀번호가 틀립니다!')
                history.go(-1)
              </script>
           ");
           exit;
        }
        else
        {
            session_start();
            $_SESSION["userid"] = $row["id"];
           
           /* 생략 */
        }
     }        
?>
더보기

$sql

$result

$num_match

$mysqli_fetch_array

$db_pass

<?php
    $id   = $_POST["id"];
    $pass = $_POST["pass"];

   $con = mysqli_connect("localhost", "user1", "12345", "sample");
   $sql = "select * from members where id='$id'";
   $result = mysqli_query($con, $sql);

   $num_match = mysqli_num_rows($result);

   if(!$num_match) 
   {
     echo("
           <script>
             window.alert('등록되지 않은 아이디입니다!')
             history.go(-1)
           </script>
         ");
    }
    else
    {
        $row = mysqli_fetch_array($result);
        $db_pass = $row["pass"];

        mysqli_close($con);

        if($pass != $db_pass)
        {

           echo("
              <script>
                window.alert('비밀번호가 틀립니다!')
                history.go(-1)
              </script>
           ");
           exit;
        }
        else
        {
            session_start();
            $_SESSION["userid"] = $row["id"];
           
           /* 생략 */
        }
     }        
?>

2. 다음은 웹 페이지 상단 헤더의 프로그램 중 일부로, 세션을 이용하여 로그인 상태를 파악하는 부분이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    ___________;
    if (___________($_SESSION["userid"])) $userid = $_SESSION["userid"];
    else $userid = "";
    if (___________($_SESSION["username"])) $username = $_SESSION["username"];
    else $username = "";
    if (___________($_SESSION["userlevel"])) $userlevel = $_SESSION["userlevel"];
    else $userlevel = "";
?>		
        <div id="top">
            <h3>
                <a href="index.php">PHP 프로그래밍 입문</a>
            </h3>
            <ul id="top_menu">  
<?php
    if(!___________) {
?>                
                <li><a href="member_form.php">회원 가입(11장)</a> </li>
                <li> | </li>
                <li><a href="login_form.php">로그인(12장)</a></li>
<?php
    } ___________ {
                $logged = $username."(".$userid.")님[Level:".$userlevel.", Point:".$userpoint."]";
?>
                <li><?=$logged?> </li>
                <li> | </li>
                <li><a href="logout.php">로그아웃</a> </li>
                <li> | </li>
                <li><a href="member_modify_form.php">정보 수정</a></li>
<?php
    }
?>

            </ul>
        </div>
더보기

session_start()

isset

isset

isset

$userid

else

<?php
    session_start();
    if (isset($_SESSION["userid"])) $userid = $_SESSION["userid"];
    else $userid = "";
    if (isset($_SESSION["username"])) $username = $_SESSION["username"];
    else $username = "";
    if (isset($_SESSION["userlevel"])) $userlevel = $_SESSION["userlevel"];
    else $userlevel = "";
?>		
        <div id="top">
            <h3>
                <a href="index.php">PHP 프로그래밍 입문</a>
            </h3>
            <ul id="top_menu">  
<?php
    if(!$userid) {
?>                
                <li><a href="member_form.php">회원 가입(11장)</a> </li>
                <li> | </li>
                <li><a href="login_form.php">로그인(12장)</a></li>
<?php
    } else {
                $logged = $username."(".$userid.")님[Level:".$userlevel.", Point:".$userpoint."]";
?>
                <li><?=$logged?> </li>
                <li> | </li>
                <li><a href="logout.php">로그아웃</a> </li>
                <li> | </li>
                <li><a href="member_modify_form.php">정보 수정</a></li>
<?php
    }
?>

            </ul>
        </div>

3. 다음은 사용자가 회원 정보 수정 폼 양식에서 정보를 수정한 후 완료 버튼을 클릭하면 수정된 데이터로 DB를 업데이트하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    $id = $_GET["id"];

   ________= $_POST["pass"];
    $name = $_POST["name"];
    $email1  = $_POST["email1"];
    $email2  = $_POST["email2"];

   ________ = $email1."@".$email2;
          
    $con = mysqli_connect("localhost", "user1", "12345", "sample");
    $sql = "________ members set pass='$pass', name='$name' , email='$email'";
    $sql .= " where id='$id'";
   ________($con, $sql);

    mysqli_close($con);     

/*생략 */
?>
더보기

$pass

$email

$update

mysqli_query

<?php
    $id = $_GET["id"];

    $pass = $_POST["pass"];
    $name = $_POST["name"];
    $email1  = $_POST["email1"];
    $email2  = $_POST["email2"];

    $email = $email1."@".$email2;
          
    $con = mysqli_connect("localhost", "user1", "12345", "sample");
    $sql = "update members set pass='$pass', name='$name' , email='$email'";
    $sql .= " where id='$id'";
    mysqli_query($con, $sql);

    mysqli_close($con);     

/*생략 */
?>

4. 로그인과 회원 정보 수정에 사용되는 PHP 함수에 관한 물음에 답하시오.

① 변수 값을 검사하여 true 또는 false를 반환하는 함수는 무엇인가?

② 문자열을 분리하여 배열에 저장하는 함수는 무엇인가?

더보기

① isset()

② explode()

 

1. 다음은 회원 가입 양식에 사용자가 입력한 데이터를 members 테이블에 저장하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
    $id   = $_POST["id"];
    $pass = $_POST["pass"];
    $name = $_POST["name"];
    $email1  = $_POST["email1"];
    $email2  = $_POST["email2"];

    $email = $email1."@".$email2;
    $regist_day = __________("Y-m-d (H:i)");  // 현재의 '년-월-일-시-분'을 저장

              
    $con = __________("localhost", "user1", "12345", "sample");

	$sql = "__________ members(id, pass, name, email, regist_day, level, point) ";
	$sql .= "values('$id', '$pass', '$name', '$email', '$regist_day', 9, 0)";

	__________($con, $sql);  // $sql 에 저장된 명령 실행
    mysqli_close($con);     
/*생략*/
?>
더보기

date

mysqli_connect

insert into

mysqli_query

<?php
    $id   = $_POST["id"];
    $pass = $_POST["pass"];
    $name = $_POST["name"];
    $email1  = $_POST["email1"];
    $email2  = $_POST["email2"];

    $email = $email1."@".$email2;
    $regist_day = date("Y-m-d (H:i)");  // 현재의 '년-월-일-시-분'을 저장

              
    $con = mysqli_connect("localhost", "user1", "12345", "sample");

	$sql = "insert into members(id, pass, name, email, regist_day, level, point) ";
	$sql .= "values('$id', '$pass', '$name', '$email', '$regist_day', 9, 0)";

	mysqli_query($con, $sql);  // $sql 에 저장된 명령 실행
    mysqli_close($con);     
 
/*생략*/
?>

2. 다음은 회원 가입 시 아이디의 중복을 확인하는 프로그램의 일부이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
   $id = $_GET["id"];

   if(!$id) 
   {
      echo("<li>아이디를 입력해 주세요!</li>");
   }
   else
   {
      $con = _________("localhost", "user1", "12345", "sample");
      $sql = "_________ * from members where id='$id'";
      $result = mysqli_query($con, $sql);
     _________ = mysqli_num_rows($result);

      if ($num_record)
      {
         echo "<li>".$id." 아이디는 중복됩니다.</li>";
         echo "<li>다른 아이디를 사용해 주세요!</li>";
      }
      else
      {
         echo "<li>".$id." 아이디는 사용 가능합니다.</li>";
      }
    
      mysqli_close($con);
   }
?>
더보기

mysqli_connect

select

$num_record

<?php
   $id = $_GET["id"];

   if(!$id) 
   {
      echo("<li>아이디를 입력해 주세요!</li>");
   }
   else
   {
      $con = mysqli_connect("localhost", "user1", "12345", "sample");
      $sql = "select * from members where id='$id'";
      $result = mysqli_query($con, $sql);
      $num_record = mysqli_num_rows($result);

      if ($num_record)
      {
         echo "<li>".$id." 아이디는 중복됩니다.</li>";
         echo "<li>다른 아이디를 사용해 주세요!</li>";
      }
      else
      {
         echo "<li>".$id." 아이디는 사용 가능합니다.</li>";
      }
    
      mysqli_close($con);
   }
?>

3. MySQL 관련 PHP 함수에 관한 물음에 답하시오.

① PHP 프로그램 내에서 MySQL 서버에 연결하는 함수는 무엇인가?

② 설정된 MySQL 연결에서 MySQL 명령을 실행하는 함수는 무엇인가?

③ 설정된 MySQL 연결을 해제하는 함수는 무엇인가?

더보기

① mysqli_connect

② mysqli_query

③ mysqli_close

1. 다음은 MySQL을 이용하여 회사 사원의 인적 사항을 관리하기 위한 DB 테이블(테이블명 : worker)의 구조이다.

필드명 데이터형 null 추가 사항 설명
num int not null primary key, auto_increment 일련번호
id char(20) not null   아이디
name char(10) not null   이름
gender char(1) not null   성별(남성: M, 여성 : F)
age int not null   나이
department char(20) not null   근무 부서
phone char(20) not null   휴대전화 번호
address char(100)     집 주소

 

① worker 테이블을 일괄 생성하기 위한 worker.sql 파일의 빈칸을 채우시오.

create (가) worker (
     num int not null (나),
     id char(20) not null,
     name char(10) not null,
     (다) char(1) not null,
     age int,
     department char(20) not null,
     phone char(20) not null,
     (라) char(100),
     primary key ( 마 )  );

② worker 테이블에 다음 데이터를 삽입하는 명령을 쓰시오.

chkim, 김창훈, M, 28, 총무부, 010-3838-8577, 경기도 용인시

③ worker 테이블의 구조를 보는 데 사용하는 명령을 쓰시오.

④ worker  테이블에 존재하는 모든 레코드의 모든 필드를 보여주는 명령을 쓰시오.

더보기

(가) : table

(나) : auto_increment

(다) : gender

(라) : address

(마) : num

 

② insert into worker (id, name, gender, age, department, phone, address) values ('chkim', '김창훈', 'M', 28, '총무부', '010-3838-8577', '경기도 용인시');

③ desc worker;

④ select*from worker;


2. 1번 문제에서 생성한 worker 테이블에 다음 표의 사원 데이터 필드를 일괄 실행하기 위한 파일을 작성하여 insert.sql로 저장하고 이를 phpMyAdmin에서 실행하시오.

id name gender age department phone address
jhjang 장종훈 M 38 총무부 010-3347-7474 서울시 강동구
jek98 안달훈 M 25 인사부 010-3744-4747 강원도 정선군
Ims2 이세영 F 48 경리부 010-3736-4784 전라북도 전주시
apple3 김소영 F 52 총무부 010-2845-8978 전라남도 순천시
sub093 김수정 M 53 홍보부 010-3834-1248 경상북도 상주시
chulsu 김철수 M 23 홍보부 010-1235-3788 경기도 오산시
yckim 김영철 M 32 인사부 010-2222-3334 경기도 용인시
yerin99 김예린 F 25 총무부 010-7777-9999 서울시 강서구
sjjung 정수정 F 35 경리부 010-3636-3563 충청남도 아산시
tuttle7 이예린 F 21 연구소 010-3756-9823 경기도 성남시
더보기

insert into worker (id, name, gender, age, department, phone, address) values ('jhjang', '장종훈', 'M', 38, '총무부', '010-3347-7474', '서울시 강동구');

insert into worker (id, name, gender, age, department, phone, address) values ('jek98', '안달훈', 'M', 25, '인사부', '010-3744-4747', '강원도 정선군');

insert into worker (id, name, gender, age, department, phone, address) values ('Ims2', '이세영', 'F', 48, '경리부', '010-3736-4784', '전라북도 전주시');

insert into worker (id, name, gender, age, department, phone, address) values ('apple3', '김소영', 'F', 52, '총무부', '010-2845-8978', '전라남도 순천시') ;

insert into worker (id, name, gender, age, department, phone, address) values ('sub093', '김수정', 'M', 53, '홍보부', '010-3834-1248', '경상북도 상주시');

insert into worker (id, name, gender, age, department, phone, address) values ('chulsu', '김철수', 'M', 23, '홍보부', '010-1235-3788', '경기도 오산시');

insert into worker (id, name, gender, age, department, phone, address) values ('yckim', '김영철', 'M', 32, '인사부', '010-2222-3334', '경기도 용인시');

insert into worker (id, name, gender, age, department, phone, address) values ('yerin99', '김예린', 'F', 25, '총무부', '010-7777-9999', '서울시 강서구');

insert into worker (id, name, gender, age, department, phone, address) values ('sjjung', '정수정', 'F', 35, '경리부', '010-3636-3563', '충청남도 아산시');

insert into worker (id, name, gender, age, department, phone, address) values ('tuttle7', '이예린', 'F', 21, '연구소', '010-3756-9823', '경기도 성남시');


3. 2번 문제에서 입력한 사원 데이터를 검색하는 SQL 명령에 관한 물음에 답하시오.

① 홍보부에서 근무하는 사원의 모든 필드를 검색하는 명령을 쓰시오.

② 20대(20~29세)인 사원의 아이디, 이름, 집 주소를 검색하는 명령을 쓰시오.

③ 경리부에 근무하는 이름에 '정'이 들어간 사원의 이름, 성별, 근무 부서, 휴대전화 번호를 검색하는 명령을 쓰시오.

④ 경기도에 사는 사원을 나이순으로 오름차순 정렬한 뒤 이름, 집 주소, 성별, 휴대전화 번호를 검색하는 명령을 쓰시오.

⑤ 여성 사원을 나이순으로 내림차순 정렬한 뒤 이름, 성별, 아이디, 휴대전화 번호, 집 주소를 검색하는 명령을 쓰시오.

⑥ 홍보부에서 근무하는 남성 사원의 이름과 휴대전화 번호를 검색하는 명령을 쓰시오.

⑦ 용인시에 사는 사원의 이름과 휴대전화 번호를 검색하는 명령을 쓰시오.

⑧ '김영철'의 휴대전화 번호를 '010-2222-3333'으로 수정하는 명령을 쓰시오.

⑨ 아이디가 'chulsu'인 사원의 나이를 '33'으로 수정하는 명령을 쓰시오.

⑩ 아이디가 'jhjang'인 레코드를 삭제하는 명령을 쓰시오.

⑪ 경리부에서 근무하는 '이세영'의 레코드를 삭제하는 명령을 쓰시오.

더보기

① SELECT num, id, name, gender, age, department, phone, address FROM worker WHERE department='홍보부';

② SELECT id, name, address FROM worker WHERE age>=20 and age<=29;

③ SELECT name, gender, department, phone FROM worker WHERE department='경리부' AND name LIKE '%정%';

④ SELECT name,address, gender, phone FROM worker WHERE address LIKE '경기도%' ORDER BY age;

⑤ SELECT name, gender, id, phone, address FROM worker WHERE gender='F' ORDER BY age DESC;

⑥ SELECT name, phone FROM worker WHERE department='홍보부' AND gender='M';

⑦ SELECT name, phone FROM worker WHERE address LIKE '%용인시';

⑧ UPDATE worker set phone='010-2222-3333' WHERE name='김영철';

⑨ UPDATE worker set age=33 WHERE id='chulsu';

⑩ DELETE from worker WHERE id='jhjang';

⑪ DELETE from worker WHERE name='이세영';


4. 명령 프롬포트에서 mydb 데이터베이스에 저장된 모든 데이터를 mydb.sql 파일에 백업하는 명령을 쓰시오. 계정은 'user', 비밀번호는 '12345'라고 가정한다.

더보기

mysqldump-uuser -p12345 mydb > mydb.sql


5. 4번 문제에서 백업한 mydb.sql 파일을 명령 프롬프트에서 복원하는 명령을 쓰시오.

더보기

mysql -uuser -p12345 mydb < mydb.sql

1. 다음은 MySQL에 관한 설명이다. 맞으면 O, 틀리면 X 표시를 하시오.

①MySQL 데이터베이스 관리 시스템의 하나이다. (   )

②주로 대형 서버 컴퓨터에 사용하고 중소 시스템이나 PC에는 잘 사용하지 않는다. (   )

③MySQL은 테이블을 기본 구조로 하는 관계형 데이터베이스 관리 시스템에 속한다. (   )

④PHP로 웹 프로그래밍을 할 때 데이터베이스로 MySQL을 많이 사용한다. (   )

⑤SQL은 데이터베이스를 조회하거나 데이터를 갱신할 수 있는 데이터베이스 표준 언어이다. (   )

⑥phpMyAdmin의 문자셋은 세계 표준인 euc-kr로 설정하는 것이 바람직하다. (   )

⑦MySQL은 처리 속도가 빠르고 성능이 우수한 편이지만 초보자가 익히기 어렵다. (   )

더보기

① O

② X(예전에는 주로 대형 메인 프레임에 DBMS를 적용했지만 요즘은 중소형 시스템과 PC에서도 많이 사용)

O

O

O

X(UTP-8)

X(초보자도 익히기 쉽다)


2. MySQL 데이터베이스에서 DB 테이블을 관리하는 SQL 명령에 관한 물음에 답하시오.

①데이터베이스를 생성하는 명령을 쓰시오.

②DB 테이블명이 member일 때 이 테이블의 구조를 보는 데 사용하는 명령을 쓰시오.

③member 테이블에 age 필드를 int 데이터형으로 추가하는 명령을 쓰시오.

④member 테이블에서 age 필드를 삭제하는 명령을 쓰시오.

⑤member 테이블의 이름을 members로 변경하는 명령을 쓰시오.

⑥member 테이블의 name 필드를 char(20)으로 변경하는 명령을 쓰시오.

더보기

① create table

② desc member

③ alter table member add age int

④ alter table member drop age

⑤ alter table member rename members

⑥ alter talbe member modify name char(20)


3. 다음은 회사 사원의 인적 사항을 관리하기 위한 DB 테이블(테이블명: employee)의 구조이다.

필드명 데이터형 설명
num int 일련번호
id char(20) 아이디
name char(10) 이름
gender char(1) 성별(남성: M, 여성: F)
age int 나이
department char(20) 근무 부서
hp char(20) 휴대전화 번호
address char(100) 집 주소

① employee 테이블을 생성하는 명령의 빈칸을 채우시오.

create table employee(
      num int,
      (가) char(20),
      name char(10),
      gender (나),
      age int
      department char(20),
      (다) char(20),
      address char(100),
      primary key(  (라)  )  );

② employee 테이블의 구조를 보는 데 사용하는 명령을 쓰시오.

③ employee 테이블에 email 필드를 char(30) 데이터형으로 추가하는 명령을 쓰시오.

④ employee 테이블의 이름을 member로 변경하는 명령을 쓰시오.

⑤ age 필드를 삭제하는 명령을 쓰시오.

⑥ employee 테이블을 삭제하는 명령을 쓰시오.

더보기

(가) : id

(나) : char(1)

(다) : hp

(라) : num(웹 사이트에서 회원 가입 양식을 작성할 때 주로 아이디나 일련번호를 사용하여 레코드를 식별한다)

 

② desc employee;

③ alter table employee add email char(30);

④ alter table employee rename member;

⑤ alter table employee drop age;

⑥ drop table employee;

1. 다음은 쿠키와 세션에 관한 설명이다. 맞으면 o, 틀리면 x 표시를 하시오. 

① 쿠키는 웹 페이지에 접속할 때 웹 서버가 사용자의 컴퓨터에 저장하는 데이터이다. (   )

② 쿠키를 사용하면 사용자의 컴퓨터에서 아이디와 비밀번호를 기억할 수 있다. (   )

③ 세션은 쿠키보다 사용법이 간단하지만 보안성이 더 취약하다. (   )

④ 세션은 쿠키와 달리 사용자의 컴퓨터와 웹 서버에 세션 정보를 저장한다. (   )

⑤ 세션은 쿠키보다 보안성이 더 강하다 (   )

더보기

① o

② o

③ x

④ o

⑤ o


2. 쿠키와 세션에 관한 물음에 답하시오.

① 쿠키를 생성할 때 사용하는 함수는 무엇인가?

② 세션을 초기화하는 데 사용하는 함수는 무엇인가?

③ 세션을 삭제하는 데 사용하는 함수는 무엇인가?

더보기

① setcookie()

② session_start()

③ unset()


3. 생성된 쿠키인 userid를 불러오는 데 사용하는 변수는 무엇인가?

① $_COOKIE["userid"]

$_POST["userid"]

$_GET["userid"]

$_SERVER["userid"]

더보기

① $_COOKIE["userid"]


4. 등록된 세션인 userid를 불러오는 데 사용하는 변수는 무엇인가?

① $_COOKIE["userid"]

② $_POST["userid"]

③ $_SESSION["userid"]

④ $_SERVER["userid"]


5. 다음은 setcookie()에 의해 등록된 userid, username 쿠키를 사용하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  if(isset($_COOKIE["userid"]) && isset($_COOKIE["username"]) )
  {
    $userid=(가)["userid"];
    $username=(나)["username"];

    echo "userid 쿠키 : " . (다)."<br>";
    echo "username 쿠키 : " . (라)."<br>";
  }
  else
  {
    echo "쿠키가 생성되지 않았다!";
  }

?>
더보기

(가) $_COOKIE
(나) $_COOKIE
(다) $userid
(라) $username

<?php
  if(isset($_COOKIE["userid"]) && isset($_COOKIE["username"]) )
  {
    $userid=$_COOKIE["userid"];
    $username=$_COOKIE["username"];

    echo "userid 쿠키 : " . $userid."<br>";
    echo "username 쿠키 : " . $username."<br>";
  }
  else
  {
    echo "쿠키가 생성되지 않았다!";
  }

?>

6. 다음은 세션을 시작하여 세션 변수를 등록하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
   session_start();
   echo "세션 시작!!!<br>";

   (가)['userid']="ocella";
   (나)['username']="박영준";
   echo '세션 등록 완료!!!<br>';

   echo $_SESSION['userid']."<br>";
   echo $_SESSION['usename']."<br>";
?>
더보기

(가) $_SESSION
(나) $_SESSION

<?php
   session_start();
   echo "세션 시작!!!<br>";

   $_SESSION['userid']="ocella";
   $_SESSION['username']="박영준";
   echo '세션 등록 완료!!!<br>';

   echo $_SESSION['userid']."<br>";
   echo $_SESSION['usename']."<br>";
?>

7. 다음은 등록된 세션을 웹 페이지에서 사용하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  (가);
   $userid=(나)["userid"];
   $username=(다)["username"];
?>

<html>
  <head>
    <meta charset="utf-8"
  </head>
    <body>
      <h3>등록된 세션의 사용</h3>
      <ul>
        <li>등록된 세션(userid) : <?= (라)?></li>
        <li>등록된 세션(username) : <?=(마)?></li>
      </ul>
    </body>
</html>
더보기

(가)  session_start()
(나) $_SESSION
(다) $_SESSION
(라) $userId
(마) $username

<?php
  session_start();
   $userid=$_SESSION["userid"];
   $username=$_SESSION["username"];
?>

<html>
  <head>
    <meta charset="utf-8"
  </head>
    <body>
      <h3>등록된 세션의 사용</h3>
      <ul>
        <li>등록된 세션(userid) : <?= $userId?></li>
        <li>등록된 세션(username) : <?= $username?></li>
      </ul>
    </body>
</html>

+ Recent posts