ajax 로 컨텐츠 로딩시 댓글 작성 권한이 없습니다 ㅠ_ㅠ

안녕하세요.

지난번에 KBoard를 이용하여 SNS 스타일 폼을 만들고 있다고 했었던 개발자 입니다.

그런데, ajax를 통해 컨텐츠를 받아오면

 

/pathname?parameter 대신에

/wp-admin/admin-ajax.php?parameter 로 변경되는 문제가 있습니다.

 

그래서 jQuery에서 텍스트를 강제로 /pathname?parameter 로 변경하였습니다.

 

그렇게 하니, 정상적으로 게시물 수정, 삭제, 코멘트 수정, 삭제는 가능한데, 코멘트 작성 시 권한이 없다고 합니다. 디버깅 해 보니,

KBCommentController.class.php 파일, insert() 함수 안에 첫째줄 

if(isset($_POST['kboard-comments-execute-nonce']) && wp_verify_nonce($_POST['kboard-comments-execute-nonce'], 'kboard-comments-execute'))

에서 false가 발생하더라구요...

 

 

 

 

아마... ajax로 리스트를 받아올 때, 객체 정보 없이 html태그만 가져왔기 때문에

댓글 폼의 kboard_comment_insert  action 부분에서 정확한 정보가 전달이 안된 것 같은데....

 

 

어떤 해결방안이 있을까요..ㅠ_ㅠ

 

https://firstmake.co/star

테스트용 아이디 패스워드는 test/test 입니다.

 

 

 

추가적으로 제가 ajax로 데이터를 가져온 방법은

 

기존에 KBoard 플러그인의 index.php 의 kboard_ajax_builder() 를 이용하지 않고, ( $board_builder->getListArray() 가 array만 전달해 줘서... html로 변환 과정이 어려워서)

새로 함수를 정의하여, KBoardBuilder 클래스의 buliderList 를 커스터마이징한 함수를 호출하여 다음 리스트 페이지를 호출하여 해당 html만 가져와서 아래에 append 시켰습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    올려주신 페이지 주소 확인해보니 직접 추가하신 코드에 문제가 있는 듯합니다.

    어디 쪽 태그에 문제가 있는지는 저희 쪽에서 알 수 없지만

    아래의 코드처럼 <form> 태그 밖에 content_uid, member_uid 등이 표시되고 있습니다.

    <form id="kboard-comments-form-666" method="post" action="https://firstmake.co/?action=kboard_comment_insert" onsubmit="return kboard_comments_execute(this);"></form>
    <input type="hidden" name="content_uid" value="666">
    <input type="hidden" name="member_uid" value="1196">
    ...

    직접 커스터마이징하신 코드를 좀 더 자세히 살펴보셔야 할 듯합니다.

    고맙습니다.

  • 올려주신 코드에서 아래의 코드 중 "uid" 부분을 "data-uid"로 수정해주셔야 할 듯합니다.

    <textarea class="kboard-comments-textarea" uid="<?php echo $content_uid?>" name="comment_content" placeholder="<?php echo __('Add a comment', 'kboard-comments')?>..." required><?php echo $temporary->content?></textarea>

    스킨 파일을 직접 수정하신 부분이 많다면

    저희 쪽에서 도움을 드리기 어려울 수도 있습니다.

    추가, 수정하신 코드에 오타나 빠진 부분이 있는지 하나 씩 확인해보셔야 할 듯합니다.

  • 어랏....... 그러네요!!! 한번 해 보겠습니다!! 감사합니다~

  • 그런데 이상하네요 ㅠ_ㅠ list.php에는 아래쪽 <!-- 댓글 입력 폼 끝 --> 부분에 </form> 이 있는데....

    어쨌든 한번 확인 해 보겠습니다 ㅠ_ㅠ

  • <form id="kboard-comments-form-<?php echo $content_uid?>" method="post"  onsubmit="return kboard_comments_execute(this);" action="<?php echo $commentURL->getInsertURL()?>">
    	<input type="hidden" name="content_uid" value="<?php echo $content_uid?>">
    	<input type="hidden" name="member_uid" value="<?php echo $member_uid?>">
    	<div class="kboard-comments-form">
    		<?php wp_nonce_field('kboard-comments-execute', 'kboard-comments-execute-nonce')?>
    		<div class="comments-field">
    			<textarea class="kboard-comments-textarea" uid="<?php echo $content_uid?>" name="comment_content" placeholder="<?php echo __('Add a comment', 'kboard-comments')?>..." required><?php echo $temporary->content?></textarea>
    		</div>
    	</div>
    </form>

     

    이상하네요 ㅠ_ㅠ....

     

    처음부터 위와 같이 정상적으로 </form>이 아래쪽에 있었는데......

    아무리 바꿔도 잘 되지 않네요... 스킨을 다시 만들어야하나...

  • 이상하네요... 크롬에서 소스보기(마우스 우클릭 - 페이지소스보기) 에서는 </form>이 정상적으로 아래에 표시가 되네요 ㅠ_ㅠ......... 무슨문제 일까요..ㅠㅠ

     

    <추가>

    ajax 결과도 동일하게 </form>이 아래쪽에 오네요.....

    페이지 렌더링 과정에서 </form>이 움직일 수도 있나요..

  • 안녕하세요 위의 문제를 해결하였습니다.

    <form></form> 내부에는 이상이 없었고, 제가 스킨(리스트 부분)을 수정하면서, 겉에 table tr이 있었는데, 이것을 그대로 놓고 tr에 form을 작성했었나 봅니다.

     

    tr에 form을 넣는것은 illegal이라고 알려주네요

    아래 링크 참조 하세요^^;;

    https://stackoverflow.com/questions/5967564/form-inside-a-table

  • KBoard를 활용하여 멋진 프로젝트 꼭 성공시켜보도록 하겠습니다~!

    스레드봇님 감사합니다^^

  • 안녕하세요~^^

    페이지 완성되면 구경 가겠습니다.

    KBoard와 코스모스팜 홍보 부탁드려요. ㅎㅎ

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기