2010-11-30 6 views
1

사이트가 있습니다 (많은 사이트). 을 표시하고으로 지정하고 로그인 여부에 따라 특정 양식을 사용하지 않도록 설정합니다. 사용자가 로그인 한 경우 PHP가 설정 한 쿠키를 통해 표시됩니다. 사용자가 로그인하지 않았을 때 양식의 모든 요소를 ​​비활성화하는 가장 좋은 방법은 궁금합니다.PHP 폼에서 전체 양식을 비활성화하는 가장 좋은 방법은 무엇입니까?

내가 현재 가지고있는 해결책은 echo 일부 JavaScript (jQuery가 정확함)로 PHP를 가져 오는 것입니다. 페이지로 이동 :

 
$("#form_name").children("input, textarea").attr("disabled", "disabled"); 

올바른 방법인가요? 더 좋은 방법이 있습니까?

+0

나에게 잘 어울립니다. 추가 요소 (선택/등)가있는 경우에는 하위 함수에 추가 할 수 있습니다. jquery에서 전체 양식을 비활성화하는 방법이있을 수 있지만 – wajiw

+0

.children (..) 대신 .find (..)를 사용해야합니다. 후자는 즉각적인 하위를 검색하기 때문에 – mikewasmike

답변

3

PHP가 페이지를 생성 할 때 쿠키가 설정되어 있으면 Javascript가없는 HTML 요소에서 disabled 속성 만 설정하면됩니다. 그런 다음 ajaxy 로그인 양식이있는 경우 로그인 응답을 구문 분석하고이를 기반으로 양식을 사용할 수 있습니다. 로그인이 ajaxy가 아닌 경우, PHP는 쿠키를 설정하고 페이지를 적절하게 빌드해야합니다. 사용자가 자바 스크립트가없는 경우 :enabled selector

$("#form_id").find("input:enabled, select:enabled, textarea:enabled").attr("disabled", "disabled"); 
+0

- 감사합니다! 나는 그 일을 올바르게하고 뭔가를 놓치지 않고 잘 작동 할 것이라고 확신하고 싶었다. +1 당신을 위해 좋은 사람; 빠른 답변 주셔서 감사합니다 :-) – Bojangles

+0

감사! 분명한 것은 독자적인 접근 방식은 JS에 의존하지만 HTML 인라인에 넣을 것입니다. > 좀 더 자세한 정보가 표시되지만 js가 비활성화 된 경우에도 여전히 작동합니다. – jxpx777

+0

흠, 자바 스크립트가 부족한 점. 제가 개발하고있는 사이트는 주로 웹 개발자 용이며, 2009 년에는 사용자의 2.4 %만이 JS를 사용할 수 없게되어 허용되었습니다. (http://smorgasbork.com/component/content/article/84-a-study-of-internet-users-cookie-and-javascript-settings) – Bojangles

2

은, 다음의 과정이 대답은 사용 가능 이것은 좋은 생각이 아닙니다.

비활성화 된 입력을 사용하는 것 역시 나쁜 아이디어입니다. 악의있는 ​​사용자가 귀하의 페이지를 조정하여 쉽게 다시 사용할 수 있습니다.

사용하지 않으려는 필드가 서버 측 게시물에서 허용되지 않는 한 모두 괜찮습니다.

+0

아 나는'select' 태그를 놓 쳤어 - 고마워! 또한 페이지의 모든 요소가 비활성화되었거나 활성화 되었기 때문에': enabled' 행은 실제로 중요하지 않습니다. 그러나 적용 해 주셔서 감사합니다 :-) – Bojangles

1

을 사용하여 현재 해제되지 않은 모든 입력을 선택하고 텍스트 영역 요소를 찾아이를 해제 할 수 jQuery를 사용

+0

JS가 비활성화 된 좋은 점 ... as 페이지를 조정하기 위해 양식 제출시 실행되는 코드가 사용자가 로그인되어 있는지 확인하여 충분히 안전하다고 생각합니다. – Bojangles

관련 문제