cfFormDB のテーブル新規作成で Forbidden

質問全般・改善要望
baudog
メンバー
メンバー
記事: 18
登録日時: 2013年8月12日(月) 13:34

cfFormDB のテーブル新規作成で Forbidden

投稿記事by baudog » 2015年4月16日(木) 18:41

いつもお世話になっております。

---------------------
MODX 1.0.14J-r9
PHP 5.3.3
MySQL 5.1.73-log
サーバ Xbit
---------------------

メールをDBに保存できるということで cfFormMailer + cfFormDB の組み合わせで送信フォームを作成しております。
先に cfFormMailer が動くことを確認し、次は cfFormDB の適用を試みているのですが、モジュール作成の次の操作「cfFormDB用のテーブルが作成されていません」時の「テーブル新規作成」ボタンクリックで、以下のエラーメッセージが表示されます。

Forbidden
You do not have permission to access this document.

管理操作ログには
 アクション:[112] Execute module
 操作対象のID:[2] cfFormDB
と記録されています。

ドキュメントの通りにやっているはずですが、どこに問題があるかお分かりの方のご教授をお願いします。
baudog
メンバー
メンバー
記事: 18
登録日時: 2013年8月12日(月) 13:34

Re: cfFormDB のテーブル新規作成で Forbidden

投稿記事by baudog » 2015年4月17日(金) 10:30

スレ主です。

念のため、スクリーンショットもこちらに添付しておきます。

気になる点は、cfFormDB の「テーブル新規作成」ボタンが表示される画面、この画面は frame のようですが、レイアウトがちょっと崩れているのが気になり、この部分のソースを表示してみました。

コード: 全て選択


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="media/style/RevoStyle/style.css" />
<title>cfFormDB v1.0</title>
<style type="text/css">
table.grid td {vertical-align:top;}
</style>
<script type="text/javascript">
function submitAction(mode, id) {
  if (mode == 'delete') {
    if (!confirm('ID:'+id+'の投稿を削除してもよろしいですか?\n※この操作は取り消しができません。')) { return false; }
  }
  document.actionform.tid.value = id;
  document.actionform.mode.value = mode;
  document.actionform.submit();
}
</script>
</head>

<body>
  <h1>cfFormDB v1.0</h1>
    <div id="actions">
      <ul class="actionButtons">
       
      </ul>
    </div>
    <div class="section">
        <h3><img src="media/style/MODxCarbon/images/icons/error.png">cfFormDB用のテーブルが作成されていません。</h3>
    <p>「テーブル新規作成」ボタンをクリックしてください。</p>
    <ul class="actionButtons">
      <li><a href="#" onclick="document.cfform1.submit();"><img src="media/style//RevoStyle/images/icons/save.png" />テーブル新規作成</a></li>
    </ul>
    <form method="post" action="index.php?a=112&id=2" name="cfform1">
      <input type="hidden" name="mode" value="create_table" />
    </form>

    </div>
  <form action="index.php?a=112&id=2" method="post" name="actionform">
    <input type="hidden" name="tid" value="" />
    <input type="hidden" name="mode" value="" />
    <input type="hidden" name="cfp" value="" />
    <input type="hidden" name="ct" value="" />
  </form>
</body>
</html>



画像が2つ表示されないのはパスがちょっとおかしいためですが、それは処理に問題ないのでいいとして、form が2つあるのはやむなくという感じでしょうか。でも、これも処理には問題ないのかなと思います。

最初はパーミッションかFTPの所有者の違いかなと思ったのですが、cfFormMailer と全く同じにしたので、なんでこれだけ?という感じです。
添付ファイル
all.gif
アバター
yama
管理人
記事: 3077
登録日時: 2009年7月29日(水) 02:50

Re: cfFormDB のテーブル新規作成で Forbidden

投稿記事by yama » 2015年4月17日(金) 11:11

画像が表示されないのはスタイルシートで明示的にdisplay:noneとしているためで、formが2つあるのはそれぞれ役割が違うためなので(今ならjQueryを使えばスマートに実装できるのですが)、特に問題ないと思います。
Forbiddenエラーが出るのはサーバ側に何らかの原因があることが多いのですが、たとえばWAFを導入しているといったことはないでしょうか?
お使いのXbitではWAFを提供しているという情報は特にないみたいですが、Xbit側に確認を求めると何か分かるかもしれません。
baudog
メンバー
メンバー
記事: 18
登録日時: 2013年8月12日(月) 13:34

Re: cfFormDB のテーブル新規作成で Forbidden

投稿記事by baudog » 2015年4月17日(金) 11:29

yama さんお返事ありがとうございます。

WAFの件、Xbit に聞いてみます。

問題の部分、cfformdb.class.php をちょっと覗いているのですが、「テーブル新規作成」ボタンの表示もこのプログラムが行っているようですので、その後の処理、おそらくデータベースのテーブル作成が拒否された?のでしょうか。
であれば、手動でテーブルを作成してみてどうなるか見てみたい気がします。

必要なテーブルを作成するための SQL 文が分かれば、あとはこちらで必要な「送信フォームの項目」部分を入れ替えて・・・などできるのですが。