묻고답하기
어렵네요.
2009.04.30 22:58
안녕하세요, 다음과 같은 프로그램이 있습니다.
이 코딩은 플래시의 액션 스크립트 입니다. 창에 어떤 내용을 입력하고 단추를 클릭하면 이 함수가 호출됩니다.
그럼 입력된 내용이 test.php에 전달되어 데이타 베이스에 기록되게 하려고 합니다.
test.php는 document.controller.php에서 따온 코딩입니다.
제가 알고 싶은 부분은 이 플래시 코딩에서 php로 어떤 변수를 어떻게 넘기는가? 하는 것입니다. 데이터 베이스의 어느 필더
에 기록될 것인지를 어떻게 코팅하나요?
코딩을 보니 $obj가 변수 인것 같은데 여기에 플래시 창에 쓴 내용을 실은 수 있을까요?
감사합니다.
// 액션 스크립트
on (release)
{
loadVariablesNum("http://e-writing.com/test.php",0,"post");
content="";
System.setClipboard("Chapter " + chapter + " Unit " + unit + " " + title + "\r\n" + allcontent);
getURL("javascript:window.self.close()");
}
// 액션 스크립트 끝
// test.php 시작
<?php
function insertDocument($obj, $manual_inserted = false) {
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
// 기본 변수들 정리
if($obj->is_secret!='Y') $obj->is_secret = 'N';
if($obj->allow_comment!='Y') $obj->allow_comment = 'N';
if($obj->lock_comment!='Y') $obj->lock_comment = 'N';
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
if($obj->homepage && !preg_match('/^[a-z]+:\/\//i'+
'+
',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage;
if($obj->notify_message != 'Y') $obj->notify_message = '+
'N';
// $extra_vars를 serialize
$obj->extra_vars = serialize($obj->extra_vars);
// 자동저장용 필드 제거
unset($obj->_saved_doc_srl);
unset($obj->_saved_doc_title);
unset($obj->_saved_doc_content);
unset($obj->_saved_doc_message);
// 주어진 문서 번호가 없으면 문서 번호 등록
if(!$obj->document_srl) $obj->document_srl = getNextSequence();
// trigger 호출 (before)
$output = ModuleHandler::triggerCall('document.insertDocument', 'before', $obj);
if(!$output->toBool()) return $output;
$oDocumentModel = &getModel('document');
// 카테고리가 있나 검사하여 없는 카테고리면 0으로 세팅
if($obj->category_srl) {
$category_list = $oDocumentModel->getCategoryList($obj->module_srl);
if(!$category_list[$obj->category_srl]) $obj->category_srl = 0;
}
// 조회수, 등록순서 설정
if(!$obj->readed_count) $obj->readed_count = 0;
$obj->update_order = $obj->list_order = getNextSequence() * -1;
// 수동입력을 대비해서 비밀번호의 hash상태를 점검, 수동입력이 아니면 무조건 md5 hash
if($obj->password && !$obj->password_is_hashed) $obj->password = md5($obj->password);
// 수동 등록이 아니고 로그인 된 회원일 경우 회원의 정보를 입력
if(Context::get('is_logged')&&!$manual_inserted) {
$logged_info = Context::get('logged_info');
$obj->member_srl = $logged_info->member_srl;
$obj->user_id = $logged_info->user_id;
$obj->user_name = $logged_info->user_name;
$obj->nick_name = $logged_info->nick_name;
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
}
// 제목이 없으면 내용에서 추출
settype($obj->title, "string");
if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'+
'...');
//그래도 없으면 Untitled
if($obj->title == '') $obj->title = 'Untitled';
// 내용에서 XE만의 태그를 삭제
$obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content);
// 세션에서 최고 관리자가 아니면 iframe, script 제거
if($logged_info->is_admin != 'Y') $obj->content = removeHackTag($obj->content);
// 로그인정보가 없고 사용자 이름이 없으면 오류 표시
if(!$logged_info->member_srl && !$obj->nick_name) return new Object(-1,'msg_invalid_request');
$obj->lang_code = Context::getLangType();
// DB에 입력
$output = executeQuery('document.insertDocument', $obj);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 등록 성공시 확장 변수 등록
$extra_keys = $oDocumentModel->getExtraKeys($obj->module_srl);
if(count($extra_keys)) {
foreach($extra_keys as $idx => $extra_item) {
$value = '';
if(isset($obj->{'extra_vars'.$idx})) $value = trim($obj->{'extra_vars'.$idx});
elseif(isset($obj->{$extra_item->name})) $value = trim($obj->{$extra_item->name});
if(!isset($value)) continue;
$this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid);
}
}
// 성공하였을 경우 category_srl이 있으면 카테고리 update
if($obj->category_srl) $this->updateCategoryCount($obj->module_srl, $obj->category_srl);
// 공지사항 글이면 공지사항 캐시 업데이트
if($obj->is_notice == 'Y') $this->updateDocumentNoticeCache($obj->module_srl);
// trigger 호출 (after)
if($output->toBool()) {
$trigger_output = ModuleHandler::triggerCall('document.insertDocument', 'after', $obj);
if(!$trigger_output->toBool()) {
$oDB->rollback();
return $trigger_output;
}
}
// commit
$oDB->commit();
// return
$this->addGrant($obj->document_srl);
$output->add('document_srl',$obj->document_srl);
$output->add('category_srl',$obj->category_srl);
return $output;
}
?>