아직 로그인하지 않았습니다. 로그인 또는 회원 등록을 해 주시기 바랍니다.

안내

글을 찾기 위한 검색 메뉴는 바로 위 메뉴의 '회원 명단' 옆에 있습니다~
TNF는 회사가 아니라 오픈소스 커뮤니티입니다. textcube.org 는 회사에서 운영하는 서비스가 아니라, 커뮤니티에서 개발하는 소프트웨어입니다.
(2007.1.10) TNF는 해당 포럼 및 위키, trac 저장소상에서 이메일 수집을 금지합니다. 해당 공지 를 포럼 하단에 명기하였습니다.
(2007.2.9) TNF와 태터툴즈/텍스트큐브 코드 수정에 관한 workflow를 정리하였습니다. 안내
(2007.4.5) 공식 소스 버그 리포터 그룹의 일원이 되어주실 분들을 찾습니다. :) 관련 공지

최근소식

(2016.1.18) 텍스트큐브 1.10.9 의 첫 베타 버전을 배포합니다. 내려받기
(2015.11.19) 텍스트큐브 1.10.8 : Tempo primo를 배포합니다. 내려받기
(2015.7.9) 텍스트큐브 1.10.8의 첫번째 발표 후보를 배포합니다. 내려받기
(2015.6.4) 텍스트큐브 1.10.7 : Tempo primo를 배포합니다. 내려받기

포럼 내용 넘어가기

TNF : Tatter Network Foundation forum

태터 네트워크 재단 - 태터앤프렌즈 포럼입니다 :)


새 댓글 쓰기

새 댓글 쓰기

새 댓글 쓰기

사용할 수 있는 기능: BBCode 이미지 웃음그림

입력을 마치기 전에 (필수) 로 명기된 부분은 모두 적어 주셔야 합니다.

방문자의 경우 필요한 정보



Captcha image. Turn pictures on to see it.
필요한 정보
선택사항설정

주제 보기 (새 글 순)

4

관리자 모듈에서 하고자 하는 일은, 사용자 입력을 받는 연속적인 폼페이지의 출력입니다.
즉, 폼1 -> 폼2 -> 폼3 -> 실행 과 같은 단순한 패턴입니다.
각 폼에서 처리하는 입력이 논리적으로 서로 분리 되어 있어 하나의 폼 페이지에 처리하는 것은 자연스럽지 않고, 플러그인 설정에서 처리하는 것 또한 부적절한 것 같아서 삽질(ㅠㅠ) 중입니다.

3

감사합니다. 역시 그런 이유였었군요.

2번은 이해가 되었습니다.

1번의 경우는정의되지 않은 값이라는 의미는, 정의하면 사용할 수도 있다..라고 해석해도 되는 것이겠죠?
어디서, 어떻게 정의하는 것인지... 궁금합니다. (적당한 소스를 분석해야 할 것 같군요)

(플러그인과의 연동이라는건 별도 프로그램으로 수행하는 것이 아니고, 플러그인 내에서 실행하는 것을 의미하는 것이였습니다)

해결방법을 찾을 수 있을 것 같아서 기쁘긴 합니다.....만
작성한 프로그램 오류라고 생각하고 보낸 하루가...ㅠㅠ

smile

2

1. plugin 핸들러 내부의 $_POST 변수값 문제
아마도 텍스트큐브 자체의 Input Validation(IV) 루틴에서 걸러진 것 같습니다. (텍스트큐브의 IV는 미리 정의되지 않은 $_GET, $_POST 값을 모조리 초기화시켜서 혹시나 있을지 모르는 보안 공격을 방지합니다.) "연동했다"라는 것이 구체적으로 어떻게 하셨다는 것인지 설명해주시면 좀더 살펴보기 좋을 것 같네요.

2. do_work.php에 대해서
텍스트큐브에서 플러그인이 제공하는 index.php가 아닌 다른 php 파일을 접근·실행하는 것은 불가능하고, 대신 기본이벤트 확장이 아닌 별도의 고유 주소를 가지고 싶다면 plugin URL handler를 사용하여야 합니다. 직접 해당 php 파일의 경로를 써주는 건 .htacess의 rewrite 때문에 불가능하구요.
plugin URL handler는 {블로그주소}/plugin/XXXX라고 접근하면 XXXX에 대해 미리 등록된 플러그인 함수를 실행시켜주는 기능입니다. 그 함수 내에서 echo로 무언가 출력하면 그것이 그대로 그 주소의 웹페이지가 됩니다. (<html>...</html>을 직접 다 출력해주셔야 합니다)

사용은 index.xml의 binding 섹션에 <listener event="/plugin/XXXX/">HandlerFunction_for_XXXXX</listener> 와 같은 형식으로 하면 됩니다. index.php가 너무 비대해지는 것을 원치 않으실 경우 파일 분리 후 include 문을 이용하실 수 있으나 항상 핸들러 함수는 index.php에 있어야 합니다. 이 경우 해당 URL에 대한 처리는 온전히 플러그인에게 맡겨지므로 $_GET, $_POST는 텍스트큐브의 기본 IV의 영향을 받지 않습니다. 보안을 위해 직접 IV 루틴을 작성하실 수도 있고 그냥 놔둘 수도 있지요.

1

허접한 플러그인을 하나 만들어 보려고 하고 있습니다.
물론 html, php 다 초보 수준입니다.

질문:
관리자 메뉴에 Plugin P 항목을 추가해서 a.php 에 있는 function A()를 호출하는 것까지는 잘 됩니다.

A()를 수행하기 위해 필요한 사용자 입력이 있는데, 이것은 플러그인 환경설정에 가져오기가 곤란한 자료들이라서 별도의 폼을 만들었습니다.
폼은 form.php 에 저장되어 있습니다.

index.xml에다 handler form_handler를 집어넣고, index.php에 다음과 같이 정의를 했습니다.
사용자가 OK 버튼을 누르면, ValidationInput() 함수에서 폼내의 값들을 확인해서 올바른 값이면 function A()를 부르고 아니면 에러메시지를 출력하고 다시 폼을 뿌려주는 함수입니다.

plug_in과 연동 시키지 않았을때 ValidationInput()이 잘 작동하는 것을 확인한 뒤 plug-in에 붙였는데, 화면에 출력은 동일하게 잘 됩니다(약간의 우여곡절이..).

근데 문제는 버튼을 클릭했을때, 연동시키지 않았을때는 check를 잘하던 isset($_POST[..]) 함수가 plug-in과 연동했을때는 항상 false가 넘어 옵니다.

즉, $_POST['OK']값이 undefined 되어 있는 것 같습니다.

Javascript로 짜서 확인 해 보면 document.myform.OK.value 가 onclick시 'OK'로 잘 세팅되어 있더군요.

플러그인에서 일반적인 폼을 작성한 후, $_POST로 값을 받을 수 없는 것인가요...?

<?
function form_handler()
{
?>

<form method="POST" name="myform">
....
<input type='submit' name='OK' value='OK'>
</form>

<?
}

if ( isset($_POST['OK'] ) {
  ValidationInput();
}
else {
form_handler();
}
?>

두번째 질문은 form의 action 부분에 do_work.php를 연동시켰습니다.

<form  method="POST" action="do_work.php"...>

<input type="submit">
</form>

버튼을 클릭하면 do_work.php를 수행하고 do_work.php는 화면에 "hello"를 출력하는 초간단 파일입니다.

<?
echo "Hello<br>";
?>

do_work.php는 index.php와 동일한 디렉토리에 존재하는데, 버튼을 클릭해도 수행이 안되는 것 같습니다.
브라우저의 주소창에는 do_work.php가 보이긴 하지만 화면에는 공백만 나타납니다.

plug-in에서는 form에서 외부 스크립터 화일을 직접 수행하지 못하는 것인가요??


* 너무 질문이 횡설수설...합니다. *



Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.