모든 웹 양식 또는 컨텐츠 유형 웹 양식마다 Drupal 7 Captcha


9

나는 D7에 있습니다.

웹 양식을 사용하는 콘텐츠 유형이 있습니다.

요구 사항 이 컨텐츠 유형의 노드에 대한 모든 웹 양식에 대해 보안 문자를 구현해야합니다.

문제 D7에서는 설정 페이지에서 form_id를 사용하여 양식을 작성해야하지만 다른 form_id가있는 양식이 많이 있습니다.

Captcha 모듈을 사용하고 있습니다.

요구 사항을 구현할 수있는 방법이 있습니까?

답변:


9

template.php에 다음 코드를 추가 할 수 있습니다

if (strstr($form_id, 'webform_client_form')) {
        $form['my_captcha_element'] = array(
            '#type' => 'captcha',
            '#captcha_type' => 'image_captcha/Image',
        );
    }

이것은 yourthemename_form_alter 안에 있어야합니다.


감사. 방금이 솔루션을 얻었고 작동 시켰으며 내 질문에 대답하기 위해 돌아 왔으며 이미 가지고있는 것을 보았습니다. 그럼에도 도움을 주셔서 감사합니다.
SGhosh

사용자 정의 코드가 보안 문자를 건너 뛸 수있는 사용자에 대해 설정된 권한을 존중하게하려면 논리에 다음을 추가하십시오. if (((strstr ($ form_id, 'webform_client_form')) & &! (user_access ( 'skip CAPTCHA'))) {$ form [ 'my_captcha_element'] = 배열 ​​( '#type'=> 'captcha', '#captcha_type'=> 'default',); }
kbrinner

1

또는이 코드를 사용자 정의 모듈에 넣을 수 있습니다.

/**
* Implementation of hook_form_alter().
*/
function mymodule_form_alter(&$form, $form_state, $form_id) {
  if (preg_match("/^webform_client_form_[0-9]+$/",$form_id) && user_is_logged_in() == FALSE) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
    );
  }
}

출처 : https://drupal.org/node/255795


0

보안 문자를 건너 뛸 수있는 사용자에 대해 관리자 / 사람 / 권한에 설정된 권한을 사용자 정의 코드가 존중하도록하려면 다음을 로직에 추가하십시오.

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.