개발 Q&A

제목 안녕하십니까,,SMS 라이브러리 에러 관련해서 문의 드려봅니다
카테고리 PHP
글쓴이 신일 작성시각 2019/08/19 22:39:09
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 9616   RSS

어제 문의 글 올렸었는데 에러 코드를 말씀 안 드린거 같아서 죄송합니다;;

다시 문의 드려봅니다. 컨트롤러에서 SMS 라이브러리 호출시 발생하는 에러 같은데.... 뭐가 문제인지 실력이 딸려서;; 잘 모르겠습니다.

에러 코드는 아래와 같고, 문자는 정상적으로 들어오고는 있습니다.

[ SMS 라이브러리 코드 ]

class SMS 
{
    private $user_id    = "kdke2578";                                            //카페24 sms호스팅 신청id
    private $secure_key    = "96005b9e91141d111425878";                          //카페24에서 발급받은 key
    private $sms_url    = "https://sslsms.cafe24.com/sms_sender.php";            //전송요청 URL
    private $send_num    = array("02", "1232", "0258");                          //보내는번호

    public function sendSMS($telnum, $message, $smstype = null, $subject = null) 
    {    
        $sms_url             = $this->sms_url;
        $sms["user_id"]      = base64_encode($this->user_id);
        $sms["secure"]       = base64_encode($this->secure_key);
        $sms["msg"]          = base64_encode(stripslashes($message));
        if( $smstype == "L"){
            $sms["subject"] = base64_encode($subject);
        }
        $sms["rphone"]       = base64_encode($telnum);                //받는번호
        $sms["sphone1"]      = base64_encode($this->send_num[0]);     //보내는번호 앞자리
        $sms["sphone2"]      = base64_encode($this->send_num[1]);     //보내는번호 중간자리
        $sms["sphone3"]      = base64_encode($this->send_num[2]);     //보내는번호 뒷자리
        $sms["rdate"]        = base64_encode("");
        $sms["rtime"]        = base64_encode("");
        $sms["mode"]         = base64_encode("1");
        $sms["returnurl"]    = base64_encode("");
        $sms["testflag"]     = base64_encode("");
        $sms["destination"]  = strtr(base64_encode(""), "+/=", "-,");
        $returnurl           = "";
        $sms["repeatFlag"]   = base64_encode("");
        $sms["repeatNum"]    = base64_encode("");
        $sms["repeatTime"]   = base64_encode("");
        $sms["smsType"]      = base64_encode($smstype);
        $nointeractive       = "1";
        $host_info           = explode("/", $sms_url);
        $host                = $host_info[2];
        $path                = $host_info[3];
        srand((double)microtime()*1000000);
        $boundary            = "---------------------".substr(md5(rand(0,32000)),0,10);
        
        $header              = "POST /".$path ." HTTP/1.0\r\n";
        $header             .= "Host: ".$host."\r\n";
        $header             .= "Content-type: multipart/form-data, boundary=".$boundary."\r\n";
        
        foreach($sms AS $index => $value){
            $data     .= "--$boundary\r\n"; ////////////////이부분이 70번 줄입니다.
            $data     .= "Content-Disposition: form-data; name=\"".$index."\"\r\n";
            $data     .= "\r\n".$value."\r\n";
            $data     .= "--$boundary\r\n";
        }

 

 

[컨트롤러 코드]

if ( $this->form_validation->run() == TRUE )                                    //폼 벨리데이션이 정상 통과 했다면
{     
      //[1] 요청
      $data = array(
        'db_table_name' => 'interview' ,                                        //업데이트할 DB 테이블명
        'give_mem_id' => $this->input->post('give_mem_id', TRUE) ,              //인터뷰요청 회원id
      );
      $result = $this->interview_m->interview_invite_insert($data);             //json으로 변환해서 뷰로 값 넘김
      echo json_encode($result);
 
 
      //[2] 접수 일림 SMS 발송
      if( $result == 'true' ) { $this->sms->sendSMS("01012345869", "sms발송테스트", "", ""); }
}  

 

 다음글 explode() expects parameter 2 ... (3)
 이전글 안녕하십니까,, 궁금한게 있어 문의 글 남겨 봅니다 (4)

댓글

변종원(웅파) / 2019/08/20 08:29:33 / 추천 0

에러 메세지에 잘 나타나있네요. 

70번째 라인에 $data 변수가 사용됐는데 미리 선언하지 않아서 생기는 경고입니다. 에러가 아니기에 경고메세지가 나타나지 않도록 하면 사용할 수 있지만 제일 좋은 것은 해당 라인 찾아서 윗쪽에 $data 변수를 미리 선언해주는 겁니다.

 

개발자라면 에러와 경고를 구분할 줄 알고 대처해야 합니다. 문제 발생시 나오는 화면의 메세지로 구글에서 검색하시면 거의 99% 해결 가능합니다.

신일 / 2019/08/20 19:22:28 / 추천 0

웅파님, 감사합니다^^ 덕분에 잘 해결되었습니다~

실력이 부족해서 머릿속이 복잡하다보니 쉬운 문제도 제대로 못보는 것 같습니다. 넓은 아량 부탁 드립니다^^