cURL을 사용하여 양식을 제출하면 작동할 때도 있고 작동하지 않을 때도 있습니다.

cURL을 사용하여 양식을 제출하면 작동할 때도 있고 작동하지 않을 때도 있습니다.

Drupal 6에서 양식을 작성(노드 생성)하기 위해 이 명령을 사용합니다.

curl -b cookies.txt -d "title=thetitle&menu%5Blink_title%5D=&menu%5Bparent%5D=primary-links%3A0&menu%5Bweight%5D=0&teaser_include=1&body=content+here&format=1&changed=&form_build_id=form-01fbf44be3dab1ea177d17544bce415c&form_token=f1af1b01946065a34e49fdbde8fcc64b&form_id=story_node_form&log=&comment=2&pathauto_perform_alias=1&field_pidio%5B0%5D%5Bembed%5D=&name=admin&date=&status=1&promote=1&op=Save" http://localhost/subdo/node/add/story

문제 없이 작동합니다. 터미널에 메시지가 없으며 예상대로 노드가 Drupal에 생성됩니다.

얼마 후 코드를 수정하지 않고 다시 사용했습니다. 그러나 터미널은 새 노드를 표시하는 대신 양식의 HTML 코드를 표시합니다. cURL이 "저장" 버튼을 누르지 못하는 것 같습니다.

답변1

드루팔양식은 일반적으로 미리보기/승인 단계가 필요한 2단계 프로세스입니다. 표시되는 양식은 동일하며 첫 번째 양식에서 제출한 값으로 미리 채워져 있습니다. 그러나 페이지에 작업 미리보기와 다음 양식 제출을 나타내는 숨겨진 양식 필드도 있습니다. 미리보기에서 나오므로 데이터가 실제로 저장되어야 합니다.

차이점은 일반적으로이름제출 버튼. 미리보기가 필요한 양식에서 제출 버튼을 누르면 op=Preview미리보기 페이지의 양식으로 전송되므로 작업이 전달됩니다 op=Save. 좋은 소식은 서버 측에서 이 미리 보기 단계를 실제로 추적하지 않고 단지 양식의 단서를 사용하여 현재 단계를 알 수 있다는 것입니다. like에서 하려는 것처럼 자동화된 방식으로 제출할 경우 curl초기 양식의 값을 사용하는 대신 보내기를 포함하여 실제 저장으로 바로 이동할 수 있습니다.op=Save

또한,드루팔양식은 일반적으로 고유 식별자 또는 토큰을 사용하여 추적됩니다. 이러한 양식을 자동으로 제출하려면 다운로드 페이지를 사용하고 curl이를 구문 분석하여 고유 토큰이 포함된 양식 필드를 가져와야 합니다 form_token(DP7) POST에 해당 키/값 쌍을 포함합니다.

적어도 안으로드루팔7이러한 기술을 결합하는 데에는 문제가 없습니다. 양식 토큰은 미리보기에서 최종 버전으로 변경되지 않으므로 토큰을 받으면 바로 최종 저장 POST로 이동할 수 있습니다.

관련 정보