いつもお世話になっております。
---------------------
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
と記録されています。
ドキュメントの通りにやっているはずですが、どこに問題があるかお分かりの方のご教授をお願いします。
cfFormDB のテーブル新規作成で Forbidden
Re: cfFormDB のテーブル新規作成で Forbidden
スレ主です。
念のため、スクリーンショットもこちらに添付しておきます。
気になる点は、cfFormDB の「テーブル新規作成」ボタンが表示される画面、この画面は frame のようですが、レイアウトがちょっと崩れているのが気になり、この部分のソースを表示してみました。
画像が2つ表示されないのはパスがちょっとおかしいためですが、それは処理に問題ないのでいいとして、form が2つあるのはやむなくという感じでしょうか。でも、これも処理には問題ないのかなと思います。
最初はパーミッションかFTPの所有者の違いかなと思ったのですが、cfFormMailer と全く同じにしたので、なんでこれだけ?という感じです。
念のため、スクリーンショットもこちらに添付しておきます。
気になる点は、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>
最初はパーミッションかFTPの所有者の違いかなと思ったのですが、cfFormMailer と全く同じにしたので、なんでこれだけ?という感じです。
Re: cfFormDB のテーブル新規作成で Forbidden
画像が表示されないのはスタイルシートで明示的にdisplay:noneとしているためで、formが2つあるのはそれぞれ役割が違うためなので(今ならjQueryを使えばスマートに実装できるのですが)、特に問題ないと思います。
Forbiddenエラーが出るのはサーバ側に何らかの原因があることが多いのですが、たとえばWAFを導入しているといったことはないでしょうか?
お使いのXbitではWAFを提供しているという情報は特にないみたいですが、Xbit側に確認を求めると何か分かるかもしれません。
Forbiddenエラーが出るのはサーバ側に何らかの原因があることが多いのですが、たとえばWAFを導入しているといったことはないでしょうか?
お使いのXbitではWAFを提供しているという情報は特にないみたいですが、Xbit側に確認を求めると何か分かるかもしれません。
Re: cfFormDB のテーブル新規作成で Forbidden
yama さんお返事ありがとうございます。
WAFの件、Xbit に聞いてみます。
問題の部分、cfformdb.class.php をちょっと覗いているのですが、「テーブル新規作成」ボタンの表示もこのプログラムが行っているようですので、その後の処理、おそらくデータベースのテーブル作成が拒否された?のでしょうか。
であれば、手動でテーブルを作成してみてどうなるか見てみたい気がします。
必要なテーブルを作成するための SQL 文が分かれば、あとはこちらで必要な「送信フォームの項目」部分を入れ替えて・・・などできるのですが。
WAFの件、Xbit に聞いてみます。
問題の部分、cfformdb.class.php をちょっと覗いているのですが、「テーブル新規作成」ボタンの表示もこのプログラムが行っているようですので、その後の処理、おそらくデータベースのテーブル作成が拒否された?のでしょうか。
であれば、手動でテーブルを作成してみてどうなるか見てみたい気がします。
必要なテーブルを作成するための SQL 文が分かれば、あとはこちらで必要な「送信フォームの項目」部分を入れ替えて・・・などできるのですが。