本件について、私が運用しているサイトでも同様な問題が発生し、一応の解決をしましたので、コメント致します。
「eform.inc.php」のバグであると考えられます。
assets/snippets/eform/eform.inc.php
コード: 全て選択
//required
if(empty($tpl)) $tpl = get_default_tpl();
elseif( $tmp=efLoadTemplate($tpl) ) $tpl = $tmp; else return $_lang['ef_no_doc'] . " '$tpl'";
# check for valid form key
if ($formid=='') $formid = 'eform';
// try to get formid from <form> tag id
preg_match('/<form[^>]*?id=[\'"]([^\'"]*?)[\'"]/i',$tpl,$matches);
$formid = isset($matches[1])?$matches[1]:'';
//check for <input type='hidden name='formid'...>
if( !preg_match('/<input[^>]*?name=[\'"]formid[\'"]/i',$tpl) ){
//insert hidden formid field
$tpl = str_replace('</form>',"<input type=\"hidden\" name=\"formid\" value=\"$formid\" /></form>",$tpl);
}
上記コードにて、スニペットオプションの「&formid」と、追加する『<input name='formid' ~>』のvalueの値の食い違いが発生する事があるとわかりました。
現状、常軌コードの部分を下記コードで置き換えれば正常動作すると考えられます。
コード: 全て選択
//required
if(empty($tpl)){
$formid = "eform";
$tpl = get_default_tpl();
}
elseif( $tmp=efLoadTemplate($tpl) ) $tpl = $tmp; else return $_lang['ef_no_doc'] . " '$tpl'";
# check for valid form key
if ($formid=='') $formid = 'eform';
// try to get formid from <form> tag id
preg_match('/<form[^>]*?id=[\'"]([^\'"]*?)[\'"]/i',$tpl,$matches);
$formid = isset($matches[1])?$matches[1]:$formid;
//check for <input type='hidden name='formid'...>
$matches = array();
if( !preg_match('/<input[^>]*?name=[\'"]formid[\'"]\s*value=[\'"](.*)[\'"]/i',$tpl, $matches) ){
//insert hidden formid field
$tpl = str_replace('</form>',"<input type=\"hidden\" name=\"formid\" value=\"$formid\" /></form>",$tpl);
}
else{
$formid = $matches[1];
}
ファイルを添付いたしますので、上書きアップロードを行なってみてください。
また、まだ十分な検証が行えておりませんので、検証が完了し次第新しいバージョンへ適用いたします。