개발 Q&A

제목 Form-post으로 값을 보내서 파일 삭제를 하는데요. 취소를 눌러도 삭제가 됩니다.
글쓴이 룰루쭈쭈 작성시각 2015/10/17 11:19:31
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 12501   RSS
//View 파일
<!-- begin panel -->
                  <div class="panel panel-inverse">
                      <div class="panel-heading">
                          
                          <h4 class="panel-title"><?php echo lang('fileshow')?></h4>
                           
                      </div>
                      <div class="panel-body">
                       <?php 
                       
                       $default_dir = "./uploads/";
                      
                        if (!$dh = @opendir($default_dir)) {
                          return false;
                        }

                        echo "<table class=\"table\">";
                        echo "<thead>";
                          echo "<tr>";
                            echo "<th>";
                            echo "Number";
                            echo "</th>";

                            echo "<th>";
                            echo "File name";
                            echo "</th>";

                            echo "<th>";
                            echo "Time";
                            echo "</th>";

                            echo "<th>";
                            echo "Size";
                            echo "</th>";

                            echo "<th>";
                            echo "Update";
                            echo "</th>";

                            echo "<th>";
                            echo "Delete";
                            echo "</th>";
                          echo "</tr>";
                        echo "</thead>";

                        echo ("<tbody>");


                        $count = -2;
                        while (($file = readdir($dh)) !== false) {
                          $count++;
                          
                          if ($file == "." || $file == "..") continue; // . 과 .. 디렉토리는 무시
                          
                          


                          echo ("<tr>");
                          echo ("<td>");
                          echo ("$count");
                          echo ("</td>");
                         
                          echo ("<td>");
                          echo ("$file");
                          // echo nl2br("$file\n");
                          echo ("</td>");         

                          echo ("<td>");
                          echo date('Y-m-d H:i:s', filemtime("./uploads/$file"));
                          echo ("</td>");

                          // $filename = '$file';
                          echo ("<td>");
                          
                          // echo sizeof($file);
                          echo filesize("./uploads/$file").' byte';

                          // echo $filename . ': ' . filesize($filename) . ' bytes';
                          
                          echo ("</td>");

                          echo ("<td>");
                          echo "<button class=\"btn btn-warning m-r-5 m-b-5\">Update</button>";
                          echo ("</td>");

                          echo ("<td>");
                         
                          echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"do_delete\" >");
                          //echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"do_delete\" onsubmit=\"return false\">");
                          //echo ("<form method=\"post\" action=\"\">");
                          // 모달을 켜고 끄는 버튼
                          //echo "<button class=\"btn btn-danger delete\" data-target=\"#layerpop\" data-toggle=\"modal\" value=\"./uploads/$file\" name=\"filelocation\" onclick=\"button_event();\">Delete</button>";
                          //echo "<input type=\"button\" value=\"삭제하기\" value=\"./uploads/$file\" name=\"filelocation\" onclick=\"button_event();\" >";
                          echo "<button class=\"btn btn-danger m-r-5 m-b-5\" id=\"filelocation\" value=\"./uploads/$file\" name=\"filelocation\" onclick=\"button_event();\" >Delete</button>";
                          //echo "<button class=\"btn btn-danger delete\" value=\"./uploads/$file\" name=\"filelocation\" onclick=\"button_event();\" >Delete</button>";
                          echo "</form>";
                          echo ("</td>");
                          echo ("</tr>");
                          // echo "<INPUT type="checkbox" name="chk[]" value="">"; 
                              
                        }
                        echo ("</tbody>"); 
                        echo "</table>";

                        
                       

                        closedir($dh);
                       ?>
                      </div>

                      

                      
                  </div>
                  <!-- end row -->

                <!-- end panel -->
                </div>

<script type="text/javascript">

 $(document).ready(function() {
            // UI init
            App.init();
  });
  function button_event(){
    if (confirm("정말 삭제하시겠습니까??") == true){    //확인
        //document.form.submit();
    }else{   //취소
      document.form1.filelocation.value="none";
      // document.form1.filelocation.value="none";
      //document.form1.filelocation.innerHTML="none";
      return;
    }
  }
  </script>

//Controller 파일

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Update extends CI_Controller {

	function __construct() {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
       $currentSession = $this -> session;
        if (!$currentSession->userdata['user']) {
        	// 세션에 사용자 정보 없을시 로그인 페이지로 이동
            header("Location: " . '/login');
        } else {
        	
        	// 세션에 권한 없을시 이전페이지로 이동
        	$user = $currentSession->userdata['user'];
        	if ($user['role_system_update'] != 'Y') {
        		redirect_back();
        	}
        }
    }
	
	public function index()
	{
		header("Location: " . '/update/upload');
	}
	
	public function upload()
	{
		// 세션에서 사용자 정보 가져오기
		$data['user'] = $this->session->userdata('user');

      	$this->load->view('update/upload_form', $data);
	}


	public function do_upload()
	{
		$config['upload_path'] = './uploads/';
		//$config['allowed_types'] = 'gif|jpg|png|gz|tar|tgz';
		$config['allowed_types'] = '*';

		$this->load->library('upload', $config);
	
		if ( ! $this->upload->do_upload())
		{
			$data['error'] = array('error' => $this->upload->display_errors());
			$data['user'] = $this->session->userdata('user');

			$this->load->view('update/upload_form', $data);
		}	
		else
		{
			$data = array('upload_data' => $this->upload->data());
			$data['user'] = $this->session->userdata('user');
			$this->load->view('update/upload_success', $data);
		}	
	
	}

	public function do_delete()
	{
		$file_loc = $this -> input -> post('filelocation');
		
		$data['user'] = $this->session->userdata('user');
		if($file_loc=="none"){
			$this->load->view('update/upload_form', $data);
		}
		else
		{
			unlink($file_loc); 
			$this->load->view('update/upload_form', $data);
		}
	}
	
}


1. 알림 확인/ 취소 에서 취소를 선택해서 submit이 안되고, value 값을 none으로 주었는데도 파일이 삭제가 실행이 되어서 삭제가 됩니다. 어떤 문제일가요?

그리고 

echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"do_delete\" >");
                                                  // 모달을 켜고 끄는 버튼
                          //echo "<button class=\"btn btn-danger delete\" data-target=\"#layerpop\" data-toggle=\"modal\" value=\"./uploads/$file\" name=\"filelocation\" onclick=\"button_event();\">Delete</button>";
                        
                          echo "<button class=\"btn btn-danger m-r-5 m-b-5\" id=\"filelocation\" value=\"./uploads/$file\" name=\"filelocation\" onclick=\"button_event();\" >Delete</button>";
                           echo "</form>";

2. 원래 여기서 모달창을 오픈 할려고했는데 form 안에 modal창 키는 버튼을 넣으니 모달창이 켜지자마자 리로드 되어버립니다. form 문안에서 뺴니깐 또 되더라구요 이건 무슨 문제일까요?


 다음글 mysql 한글 인서트 시 한글만 빼고 들어갑니다 (2)
 이전글 정규식 질문입니다. (1)

댓글

/ 2015/10/19 10:41:54 / 추천 0
1. 
onclick=\"button_event();return false;\" 
요렇게 바꿔보시면 될거같아요. 버튼은 클릭하면 기본적으로 폼 서브밋이 되는데 리턴펄스를 넣어서 서브밋 되는걸 막아주시면 될거 같습니다.
룰루쭈쭈 / 2015/10/22 09:14:15 / 추천 0
감사합니다 ! 


바꾸고 확인누르니 안되고 취소 누르니 삭제되길래 밑에 이벤트함수에서  확인쪽에 서브밋 집어넣고, else에는 없게끔했더니 정상적으로 됩니다.ㅎ 고맙습니다.