スパイラルのWeb機能でのPHP利用

スパイラルのWeb機能でPHPをご利用いただけます。FacebookなどSNSへの書込み、外部データの取込み、演算結果の表示など動的なウェブページを作成できます。

PHPが利用できるWeb機能一覧

以下の機能において、HTMLソースを記述する箇所にPHPを記載することができます。なお、エラーページはPHP実行エラー時にも表示するため、ループ発生の可能性からPHP使用不可となっています。

機能 PHPを記述できる場所
フォーム管理 入力ページ デザイン設定(カスタム)
確認ページ デザイン設定(カスタム)
サンキューページ デザイン設定(カスタム)
締め切りページ デザイン設定(カスタム)
システムエラーページ 使用できません
旧機能(登録フォーム設定ver.2)でも設定が可能です。 なお、登録フォーム設定ver.1では設定できません。
一覧表 一覧表 ソース編集画面
単票 ソース編集画面
掲示板 トピック トピック一覧ページ(TOPページ)
トピック作成フォーム 各ページ
トピック変更フォーム 各ページ
トピック削除フォーム 各ページ
コメント コメント一覧ページ(トピック詳細ページ)
コメント投稿フォーム 各ページ
コメント削除フォーム 各ページ
集計表 ページ編集画面
マイエリア カスタムマイページ ソース編集画面
会員情報ページ 「会員情報」ページ ソース編集画面
「会員情報」変更後ページ ソース編集画面
パスワード変更ページ 「パスワード変更」ページ ソース編集画面
「パスワード変更」後ページ ソース編集画面
パスワード登録・再登録 1:「パスワード登録」完了ページソース
4:「パスワード再登録手続き」完了ページソース
5:「パスワード再登録」ページソース
6:「パスワード再登録」完了ページソース
自動発行キー ソース編集画面
エラーページ 使用できません

また、各機能の操作画面プレビューでもPHPは動作しますので、動作確認の際にはプレビューをご活用下さい。

SMP_DYNAMIC_PAGEについて

PHPを使用するページには、ソース中に専用のタグをHTMLコメントとして記述してください。スパイラルでは、タグの記述されたページに限りPHPが実行されます。なお、1つのページにつき1回のみの記述で動作するようになっています。 使用したいページのソース編集画面で、HTMLソース内に専用タグSMP_DYNAMIC_PAGEとPHPプログラムコードを記述してください。タグの位置はHTMLソース内のどこでも構いません。タグの設定は以下のとおりです。

  • DISPLAY_ERRORS:PHPのエラーメッセージを画面に表示するかどうかを指定します。(設定値 ON : エラーを表示する、OFF : エラーを表示しない。)
  • NAME:動的ページの名前を指定します。エラー通知メール内で動的ページを識別するために使用します。(設定値 スペース以外の英数記号)
<html>
・・・
<!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE -->
<?php 
  echo "Hello World"; 
?>
・・・
</html>
SMP_DYNAMIC_PAGEタグはPHPプログラムを含む場合のみ記述してください。このタグを付けた場合には必ずPHPサーバを経由することになるため、つけない場合と比較してオーバーヘッドがあります。そのため、PHP処理が不要な場合は、SMP_DYNAMIC_PAGEタグをつけないようにしてください。

PHPと差替えキーワードの実行順序

Web機能においてPHPを利用した場合の動作順序は以下の通りになります。

  1. ページリクエスト
  2. PHP実行
  3. 差替えキーワードの差替え処理
  4. ページ出力

すなわち、スパイラルの差替えキーワード(%タグ、$タグ)はPHP実行後に値の差替えが行われるということです。 この動作順序に従うとどうなるかを簡単な例で説明します。PHP実行前のコンテンツを以下のものだとすると、

<html>
・・・・・・
<!--SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE -->
<?php
echo "%val:usr:name%の在庫を%val:usr:currentstock%個増やしました。\n";
?>
・・・・・・

まず、PHPの処理が行われることで以下のようになります。(差替えキーワード部分は通常の文字列として扱われています。)

<html>
・・・・・・
%val:usr:name%の在庫を%val:usr:currentstock%個増やしました。
・・・・・・

そして、その後にスパイラル側で差替えキーワードの処理が行われるため、最終的には以下の様な形で表示されることになります。

<html>
・・・・・・
商品Aの在庫を3個増やしました。
・・・・・・

この例ではうまく動作しましたが、PHPプログラム実行前に先に差し替わることを期待して$タグなどをPHPコード内に配置してしまうと当然ながら期待通りには動作しません。プログラム内で差替えキーワードを取得するには $SPIRAL->getContextByFieldTitle() または getContextByFieldCode() を使います。(登録・更新フォームのサンキューページ、マイエリアのページ)

・・・・・・
<!--SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE -->
<?php
  echo "%val:usr:name%の在庫を" . %val:usr:currentstock% * 10 . "個増やしました。\n";
?>

PHP処理前に差替えが行われないため、これはSyntax errorとなってしまいます。よって、この場合は以下のようにして下さい。

・・・・・・
<!--SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE -->
<?php
  echo $SPIRAL->getContextByFieldTitle("name") . "の在庫を" .  $SPIRAL->getContextByFieldTitle("currentstock") * 10 . "個増やしました。\n";
?>

ここまで説明してきたPHPの動作に関して、システム構成をまとめると以下のようになります。

PHPシステム構成

PHP実行エラー時の画面表示

Web機能においてPHP実行時にエラーが起こった場合の画面表示は以下のとおりです。

DISPLAY_ERRORS=ONの場合:

エラー表示ON

PHPのエラーを表示し、実行が途中で止まります。

DISPLAY_ERRORS=OFFの場合:

エラー表示OFF

各Web機能で用意しているエラーページを表示します。

PHPの実行エラー時の通知メール

PHPでエラーが発生した際に、通知メールで管理者にお知らせする機能です。 運用開始後のエラー検知メールとしてご利用ください。 「管理グループ」→「通知メール受信設定」→「PHPエラー通知メール」で「受け取る」に設定すると、PHPの実行時にエラーが発生したことを通知します。

PHPエラー通知メール

なお、ページを表示した時に通知しますので、アクセス数の多いページは大量に通知メールが届く場合があります。