2010-05-03 2 views
2

그래서 PUT, POST, 삭제, 생성, 업데이트, 삭제 경로를 에뮬레이트하는 RESTful 디자인을 가진 Limonade PHP를 사용하고 있습니다.상태간에 데이터 전달하기 PHP

나는 잘되어 가고있는 몇 가지 형식 유효성 검사를 개발하려고합니다. 필자가 직면 한 가장 큰 문제는 필터링 된 데이터 (유효성 검사에 실패한)를 다시 작성하여 양식을 다시 작성하거나 다시 작성하는 방법입니다.

어떻게 처리할까요? 나는 현재 페이지를 만들기위한 있습니다

/admin/page/new -> GET function 

/admin/page -> POST function 
+ validate 
    + pass, update db 
    + fail, add errors to flash, redirect to /admin/page/mew 

그것은 모두 내가/관리/유효하지 않은 새로운 페이지 /하지만, 필터링 된 데이터를 채우는 방법을 알고하지 않는 한 아래로 폭포.

+0

오류가 발생하면 리디렉션해야합니까? 리디렉션을 사용하지 않고 실패하면 다시 양식을 출력 할 수 있습니까? – outis

+0

@outis, 그 주된 것은 내가 GET 경로를 사용하여 이미 호출 된 양식 코드를 반복해야한다는 것입니다. 당신이 둥근 방법을 설명 할 수 있다면 나는 모든 귀입니다. –

+0

댓글에 게시하기가 다소 힘들 기 때문에 아래에서 내 대답을 살펴보십시오. – outis

답변

1

세션을 사용하여/admin/page/new로 데이터를 전송 했습니까? http://www.php.net/manual/en/session.examples.basic.php

편집 : http://www.recessframework.org/page/towards-restful-php-5-basic-tips $ _SESSION을 통해 쿠키를 사용하는 것이 좋습니다 : 난 그냥이 기사를 발견했다. 그것은 이유에 대해 상세히 설명하지는 않지만, 여러분이 원하는 결과를 얻을 수 있습니다.

+0

표준 방법은 그것을 할 수 있습니까? 나는 그것을 사용하는 것을 생각했다. –

+0

IDK에 대해서는 표준이지만 세션이나 쿠키는 주간에 데이터를 전달하기위한 첫 번째 해결책이었습니다. – cazlab

+1

방금 ​​내 대답을 찾은 기사를 추가했습니다. 팁 # 4는 실제로 쿠키를 대신 사용하도록 권장합니다. – cazlab

1

리디렉션 된 페이지로 데이터를 다시 가져 오려면 각 요소에 대해 get vars를 사용하여 세션을 사용하거나 요청을 처리해야합니다 (보기에는 좋지 않으며, 북마크에 좋지는 않습니다).

'플래시에 오류 추가'세션을 사용 중입니다. (리모컨에 익숙하지 않음).

또 다른 대안은 이며 AJAX 호출으로 양식을 제출하면 양식 데이터가 오류로 변경되지 않습니다.

물론 이전 버전과의 호환성을 위해 비 AJAX 메소드가 필요합니다.

업데이트 : Limonade Sourceflash()을 확인는 $_SESSION를 사용합니다. 따라서 이미 세션 바를 사용하고 있습니다.

+0

@tim, 지금 세션을 사용하고 있으며 모두 훌륭합니다. 아직 아약스를 해결할 표준이 아니지만 일단 앱을 완성하면 추가하고 싶은 기능입니다. 귀하의 의견에 감사드립니다. –

0

리디렉션없이 양식을 출력 할 수 있습니다. 다른 HTML 요소가없는 스크립트에 양식을 넣으십시오. 적절한 형식으로 htmlspecialchars을 호출 한 후 $_POST에 주어진 양식 입력 값을 설정 했습니까? 적절한 경우 다른 스크립트에 양식 스크립트를 포함하십시오. (당신이 그것을 호출 할 또는 무엇이든)

function passthruFormInput($name) { 
    if (isset($_POST[$name])) { 
     echo htmlspecialchars($_POST[$name], ENT_QUOTES); 
    } 
} 

newForm.php :

당신의 유틸리티 기능에

<form action="..." method="POST" onsubmit="...(client side validation function)..."> 
    ... 
    <input name="foo" value="<?php passthruFormInput('foo'); ?>"/> 
    ... 
</form> 

를 동적 양식을 생성하는 경우, 일치 위의 적응. 이 구현과 접근법에 대해 몇 가지 느낌이 들지만, 나는 그것에 대해 내 손가락을 대지 않을 수 있습니다.

양식 스크립트를 공개적으로 액세스 할 수있는 것은 보안 상 문제가되지 않을 수도 있지만 문서 루트 계층 또는 ORDER Allow,Deny 또는 mod_rewrite으로 보호 된 분기 외부에 있어야합니다. 아마 그 견해와 함께 가야합니다.

+0

무슨 뜻인지 알 겠어. 나는 이미이 건축물을 가지고있다. 불행히도 그 방법은 프레임 워크 (limonade - php.net)의 기능을 깨뜨릴 것이라고 생각합니다. 입력에 대한 환호. –

관련 문제