ver.1サポートサイト


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

最終更新日:2024年02月29日

概要

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

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

以下の機能において、HTMLソースを記述する箇所にPHPを記載することができます。
なお、エラーページはPHP実行エラー時にも表示するため、ループ発生の可能性からPHP使用不可となっています。
また、各機能の操作画面プレビューでもPHPは動作しますので、動作確認の際にはプレビューをご活用下さい。

※該当のページではスパイラルPHPの関数「method getContextByFieldTitle」「method getContextByFieldCode」が使えません。

2. SMP_DYNAMIC_PAGEについて

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

デフォルトバージョン(※1)を使用する場合
<html>
・・・
<?php // <!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE --> ?>
<?php
echo "Hello World";
?>
・・・
</html>

※1:「デフォルトバージョン」に関する詳細は、こちらをご覧ください。

PHP7.2を使用する場合
<html>
・・・
<?php // <!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE VERSION=7.2 --> ?>
<?php
echo "Hello World";
?>
・・・
</html>
PHP7.4を使用する場合
<html>
・・・
<?php // <!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=SAMPLE VERSION=7.4 --> ?>
<?php
echo "Hello World";
?>
・・・
</html>

VERSIONを省略した場合、実行されるPHPのバージョンは「アカウントデフォルト実行バージョン」で設定されているバージョンになります。
SMP_DYNAMIC_PAGEタグはPHPプログラムを含む場合のみ記述してください。
このタグを付けた場合には必ずPHPサーバを経由することになるため、つけない場合と比較してオーバーヘッドがあります。
そのため、PHP処理が不要な場合は、SMP_DYNAMIC_PAGEタグをつけないようにしてください。

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

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

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

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

<html>
・・・・・・
<?php // <!-- 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() を使います。(登録・更新フォームのサンキューページ、マイエリアのページ)

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

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

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

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

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

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

PHPのエラーを表示し、実行が途中で止まります。
DISPLAY_ERRORS=OFFの場合:

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

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

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

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

6. サンプルプログラムのご案内

PHPのサンプルをご用意しています。以下のページをご覧ください。
サンプルプログラム(PHP)

7. PHPエラーに関する通知

PHP実行時、エラーになった場合にはメールで通知いたします。

文面につきましては下記をご参照ください。

 

件名 :[SPIRAL:アカウント名]PHPページエラー通知

送信先:担当者ID、アカウントのご利用管理者様、連絡先1、連絡先2に登録されているメールアドレス

文面 :

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
          スパイラル PHPページエラー通知          
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

スパイラルでご利用のPHPページでエラーが発生しました。
エラー内容をご確認ください。

■アカウント
==================================================
XXXXX

■スパイラルの設定名称
==================================================
XXXXX

■PHPページ名称
==================================================
XXXXX

■エラーメッセージ
==================================================
XXXXX