Filemaker Server Custom Web Publishing With PHP File Maker 13 Fms13 Cwp En
User Manual: filemaker FileMaker Server 13 - Custom Web Publishing with PHP Free User Guide for FileMaker Software, Manual
Open the PDF directly: View PDF .
Page Count: 62
FileMaker Server 13
®
Custom Web Publishing with PHP
© 2007–2013 FileMaker, Inc. All Rights Reserved.
FileMaker, Inc.
5201 Patrick Henry Drive
Santa Clara, California 95054
FileMaker and Bento are trademarks of FileMaker, Inc. registered in the U.S. and other countries. The file folder logo,
FileMaker WebDirect, and the Bento logo are trademarks of FileMaker, Inc. All other trademarks are the property of their
respective owners.
FileMaker documentation is copyrighted. You are not authorized to make additional copies or distribute this
documentation without written permission from FileMaker. You may use this documentation solely with a valid licensed
copy of FileMaker software.
All persons, companies, email addresses, and URLs listed in the examples are purely fictitious and any resemblance to
existing persons, companies, email addresses, or URLs is purely coincidental. Credits are listed in the
Acknowledgements documents provided with this software. Mention of third-party products and URLs is for
informational purposes only and constitutes neither an endorsement nor a recommendation. FileMaker, Inc. assumes
no responsibility with regard to the performance of these products.
For more information, visit our website at http://www.filemaker.com.
Edition: 01
Contents
Preface
About this guide
Chapter 1
Introducing Custom Web Publishing
About the Web Publishing Engine
How a Web Publishing Engine request is processed
Custom Web Publishing with PHP
Custom Web Publishing with XML
Comparing PHP to XML
Reasons to choose PHP
Reasons to choose XML
Chapter 2
About Custom Web Publishing with PHP
Key features in Custom Web Publishing with PHP
Custom Web Publishing requirements
What is required to publish a database using Custom Web Publishing
What web users need to access a Custom Web Publishing solution
Connecting to the Internet or an intranet
Manually installing the FileMaker API for PHP
Where to go from here
Chapter 3
Preparing databases for Custom Web Publishing
Enabling Custom Web Publishing with PHP for databases
Creating layouts for Custom Web Publishing with PHP
Protecting your published databases
Accessing a protected database
Publishing the contents of container fields on the web
Container fields embedded in a database
Container fields with referenced files
Container fields with externally stored data
How web users view container field objects
FileMaker scripts and Custom Web Publishing
Script tips and considerations
Script behavior in Custom Web Publishing solutions
Script triggers and Custom Web Publishing solutions
Chapter 4
Overview of Custom Web Publishing with PHP
How the Web Publishing Engine works with PHP solutions
General steps for Custom Web Publishing with PHP
6
6
7
8
8
9
9
9
9
9
10
10
10
10
11
11
12
13
14
14
14
15
16
17
17
18
18
21
21
21
23
23
24
24
24
4
Chapter 5
Using the FileMaker API for PHP
Where to get additional information
FileMaker API for PHP Reference
FileMaker API for PHP Tutorial
FileMaker API for PHP Examples
Using the FileMaker class
FileMaker class objects
FileMaker command objects
Connecting to a FileMaker database
Working with records
Creating a record
Duplicating a record
Editing a record
Deleting a record
Running FileMaker scripts
Obtaining the list of available scripts
Running a FileMaker script
Running a script before executing a command
Running a script before sorting a result set
Running a script after the result set is generated
Script execution order
Working with FileMaker layouts
Using portals
Listing the portals defined on a specific layout
Obtaining portal names for a specific result object
Obtaining information about portals for a specific layout
Obtaining information for a specific portal
Obtaining the table name for a portal
Obtaining the portal records for a specific record
Creating a new record in a portal
Deleting a record from a portal
Using value lists
Obtaining the names of all value lists for a specific layout
Obtaining an array of all value lists for a specific layout
Obtaining the values for a named value list
Performing find requests
Using the Find All command
Using the Find Any command
Using the Find command
Using a Compound Find command
Processing the records in a result set
Filtering portal rows returned by find requests
Pre-validating commands, records, and fields
Pre-validating records in a command
Pre-validating records
Pre-validating fields
Processing the validation errors
Handling errors
26
26
26
27
27
27
27
28
28
29
29
29
29
30
30
30
30
31
31
31
31
32
32
32
33
33
33
33
33
34
34
34
34
35
35
36
36
37
37
37
39
40
40
41
42
42
42
44
5
Chapter 6
Staging, testing, and monitoring a site
Staging a Custom Web Publishing site
Testing a Custom Web Publishing site
Monitoring your site
Using the web server access and error logs
Using the Web Publishing Engine log
Using the Web Server Module error log
Using the Tomcat logs
Troubleshooting your site
Appendix A
Error codes for Custom Web Publishing with PHP
Error code numbers for FileMaker databases
Error code numbers for PHP components
Index
45
45
46
47
47
47
49
49
50
51
51
58
59
Preface
About this guide
This guide assumes you are experienced with PHP, developing websites, and using
FileMaker® Pro to create databases. You should understand the basics of FileMaker Pro database
design, and should understand the concepts of fields, relationships, layouts, portals, and
containers. For information about FileMaker Pro, see FileMaker Pro Help.
This guide provides the following information about Custom Web Publishing with PHP on
FileMaker Server:
1 what is required to develop a Custom Web Publishing solution using PHP
1 how to publish your databases using PHP
1 what web users need in order to access a Custom Web Publishing solution
1 how to use the FileMaker API for PHP to obtain data from databases hosted by
FileMaker Server
Important You can download PDFs of FileMaker documentation from
http://www.filemaker.com/documentation. Any updates to this document are also available from
the website.
The documentation for FileMaker Server includes the following information:
For information about
See
Installing and configuring FileMaker Server
FileMaker Server Getting Started Guide
FileMaker Server Help
Making layouts from FileMaker Pro and
FileMaker Pro Advanced databases accessible
to web browser users over an intranet or the
internet
FileMaker WebDirect™ Guide
Custom Web Publishing with PHP
FileMaker Server Custom Web Publishing with PHP (this book)
Custom Web Publishing with XML
FileMaker Server Custom Web Publishing with XML
Installing and configuring ODBC and JDBC
drivers, and using ODBC and JDBC
FileMaker ODBC and JDBC Guide
SQL statements and standards supported by
FileMaker software
FileMaker SQL Reference
Chapter 1
Introducing Custom Web Publishing
With FileMaker Server, you can publish your FileMaker database on the Internet or an intranet in
these ways.
FileMaker WebDirect: With FileMaker WebDirect, you can quickly and easily publish layouts from
a database on the web. You don’t need to install additional software—with compatible web
browser software and access to the internet or an intranet, web users can connect to your
FileMaker WebDirect solution to view, edit, sort, or search records, if you give them access
privileges.
With FileMaker WebDirect, the host computer must be running FileMaker Server. The user
interface resembles the desktop FileMaker Pro application. The web pages and forms that the
web user interacts with are dependent on the layouts and views defined in the FileMaker Pro
database. For more information, see FileMaker WebDirect Guide.
Static publishing: If your data rarely changes, or if you don’t want users to have a live connection
to your database, you can use static publishing. With static publishing, you export data from a
FileMaker Pro database to create a web page that you can further customize with HTML. The web
page doesn’t change when information in your database changes, and users don’t connect to your
database. (With FileMaker WebDirect, the data is updated in the web browser whenever the data
is updated in the database.) For more information, see FileMaker Pro Help.
Custom Web Publishing: To integrate your FileMaker database with a custom website, use the
Custom Web Publishing technologies available with FileMaker Server. FileMaker Server, which
hosts the published databases, does not require FileMaker Pro to be installed or running for
Custom Web Publishing to be available.
With Custom Web Publishing, you can:
1 Integrate your database with another website
1 Determine how users interact with data
1 Control how data displays in web browsers
FileMaker Server provides two Custom Web Publishing technologies:
1 Custom Web Publishing with PHP: Use the FileMaker API for PHP, which provides an object-
oriented PHP interface to FileMaker Pro databases, to integrate your FileMaker data into a PHP
web application. Because you code the PHP web pages yourself, you have complete control
over the user interface and how the user interacts with the data.
1 Custom Web Publishing with XML: Use XML data publishing to exchange FileMaker data with
other websites and applications. By using HTTP URL requests with FileMaker query
commands and parameters, you can query a database hosted by FileMaker Server, download
the resulting data in XML format, and use the resulting XML data in whatever way you want.
Chapter 1 | Introducing Custom Web Publishing
8
About the Web Publishing Engine
To support FileMaker WebDirect and Custom Web Publishing, FileMaker Server uses a set of
software components called the FileMaker Server Web Publishing Engine. The Web Publishing
Engine handles interactions between a web user’s browser, your web server, and
FileMaker Server.
Custom Web Publishing with XML: Web users access your Custom Web Publishing solution by
clicking an HREF link or by entering a Uniform Resource Locator (URL) that specifies the web
server address and a FileMaker query string request. The Web Publishing Engine returns the XML
data specified in the query string request.
Custom Web Publishing with PHP: When a web user accesses your Custom Web Publishing
solution, PHP on FileMaker Server connects with the Web Publishing Engine and responds
through the FileMaker API for PHP.
Using the FileMaker Server Web Publishing Engine for Custom Web Publishing
1
2
Web Server
Web
Browser
3
Products.fmp12
Web Publishing Engine
Web Server Module
Database
Server
FM API and PHP code
6
Customers.fmp12
Web Publishing Core
5
4
How a Web Publishing Engine request is processed
1. A request is sent from a web browser or application to the web server.
2. The web server routes the request through FileMaker’s Web Server Module to the Web
Publishing Engine.
3. The Web Publishing Engine requests data from the database hosted by the Database Server.
4. The FileMaker Server sends the requested FileMaker data to the Web Publishing Engine.
5. The Web Publishing Engine converts the FileMaker data to respond to the request.
1 For PHP requests, the Web Publishing Engine responds to the API request.
1 For XML requests, the Web Publishing Engine sends XML data directly to the web server.
6. The web server sends the output to the requesting web browser or program.
Important Security is important when you publish data on the web. Review the security
guidelines in FileMaker Pro User’s Guide, available as a PDF file from
http://www.filemaker.com/documentation.
Chapter 1 | Introducing Custom Web Publishing
9
Custom Web Publishing with PHP
The FileMaker API for PHP provides an object-oriented PHP interface to FileMaker databases. The
FileMaker API for PHP enables both data and logic stored in a FileMaker Pro database to be accessed
and published on the web, or exported to other applications. The API also supports complex and
compound find commands for extracting and filtering data stored in FileMaker Pro databases.
Originally designed as a procedural programming language, PHP has been enhanced as an objectoriented web development language. PHP provides programming language functionality for constructing
virtually any type of logic within a site page. For example, you can use conditional logic constructs to
control page generation, data routing, or workflow. PHP also provides for site administration and security.
Custom Web Publishing with XML
FileMaker Custom Web Publishing with XML enables you to send query requests to a FileMaker Pro
database hosted by FileMaker Server, and display, modify, or manipulate the resulting data. Using
an HTTP request with the appropriate query commands and parameters, you can retrieve FileMaker
data as an XML document. You can then export the XML data to other applications.
Comparing PHP to XML
The following sections provide some guidelines for determining the best solution for your site.
Reasons to choose PHP
1 PHP is a more powerful, object-oriented procedural scripting language, but is relatively easy to
learn. There are many resources available for training, development, and support.
1 The FileMaker API for PHP enables data and logic stored in a FileMaker Pro database to be
accessed and published on the web, or exported to other applications.
1 PHP lets you use conditional logic to control page construction or flow.
1 PHP provides programming language functionality for constructing many types of logic on a site
page.
1 PHP is one of the most popular web scripting languages.
1 PHP is an open source language, available at http://php.net.
1 PHP enables access to a wide variety of third-party components that you can integrate into your
solutions.
Reasons to choose XML
1 FileMaker XML request parameter syntax is designed for database interaction, simplifying
solution development.
1 XML is a W3C standard.
1 XML is a machine and human readable format that supports Unicode, enabling data to be
communicated in any written language.
1 XML is well-suited for presenting records, lists and tree-structured data.
1 You can use FMPXMLRESULT for accessing XML data using Custom Web Publishing and for
XML export from FileMaker Pro databases.
Note For more information about Custom Web Publishing with XML, see FileMaker Server
Custom Web Publishing with XML.
Chapter 2
About Custom Web Publishing with PHP
Custom Web Publishing with PHP lets you use the PHP scripting language to integrate data from
FileMaker databases with your customized web page layouts. Custom Web Publishing with PHP
provides the FileMaker API for PHP, which is a PHP class created by FileMaker that accesses
databases hosted by FileMaker Server. This PHP class connects to the FileMaker Server Web
Publishing Engine and makes data available to your web server’s PHP engine.
Key features in Custom Web Publishing with PHP
1 Create web applications that use the Open Source PHP scripting language. Use the FileMaker
Server supported version of PHP 5, or use your own version of PHP 5. (If you select to use your
own version of PHP, see “Manually installing the FileMaker API for PHP” on page 12.)
1 Host databases on FileMaker Server. FileMaker Pro is not required for Custom Web Publishing
because FileMaker Server hosts the databases.
1 Write PHP code that can create, delete, edit, and duplicate records in a hosted FileMaker
database. Your code can perform field and record validation before committing changes back
to the hosted database.
1 Write PHP code that accesses layouts, portals, value lists, and related fields. Like
FileMaker Pro, access to data, layouts, and fields is based on the user account settings defined
in the database’s access privileges. The Web Publishing Engine also supports several other
security enhancements. See “Protecting your published databases” on page 15.
1 Write PHP code that executes complex, multi-step scripts. FileMaker supports over 65 script
steps in Custom Web Publishing. See “FileMaker scripts and Custom Web Publishing” on
page 21.
1 Write PHP code that performs complex find requests.
Custom Web Publishing requirements
This section explains what is required to develop a Custom Web Publishing solution using PHP,
what web users need in order to access a Custom Web Publishing solution, and what impact
hosting a web publishing solution may have on your server.
What is required to publish a database using Custom Web Publishing
To publish databases using Custom Web Publishing with PHP, you need:
1 a FileMaker Server deployment, which includes three components.
1 a web server, either Microsoft IIS (Windows) or Apache (OS X). The FileMaker Web Server
Module is installed on the web server.
1 the FileMaker Web Publishing Engine
1 the FileMaker Database Server
Chapter 2 | About Custom Web Publishing with PHP
11
1 PHP installed on the web server. FileMaker Server can install the supported version of PHP 5,
or you can use your own version. The minimum required version of PHP on OS X is
PHP 5.3.15. The minimum required version of PHP on Windows is PHP 5.3.27. For information
about PHP, see http://php.net. The version of PHP installed on the web server must support
cURL (client URL library) functions. For information about cURL, see http://php.net/curl.
Important When you install the FileMaker Server supported version of PHP 5, it does not
show up in the OS X Server Admin tool; it is not supposed to be listed. If you use the OS X
Server Admin tool to turn on PHP, you disable the FileMaker Server supported version of PHP
5, and enable your own version of PHP.
1 one or more FileMaker Pro databases hosted by FileMaker Server.
1 the IP address or domain name of the host running the web server
1 a web browser and access to the web server to develop and test your Custom Web Publishing
solution
For more information, see FileMaker Server Getting Started Guide.
What web users need to access a Custom Web Publishing solution
To access a Custom Web Publishing solution that uses PHP, web users need:
1 a web browser
1 access to the Internet or an intranet and the web server
1 the IP address or domain name of the host running the web server
If the database is password-protected, web users must also enter a user name and password for
a database account.
Connecting to the Internet or an intranet
When you publish databases on the Internet or an intranet, the host computer must be running
FileMaker Server, and the databases you want to share must be hosted and available. In addition:
1 Publish your database on a computer with a full-time Internet or intranet connection. You can
publish databases without a full-time connection, but they are only available to web users when
your computer is connected to the Internet or an intranet.
1 The host computer for the web server that is part of the FileMaker Server deployment must
have a dedicated static (permanent) IP address or a domain name. If you connect to the
Internet with an Internet service provider (ISP), your IP address might be dynamically allocated
(it is different each time you connect). A dynamic IP address makes it more difficult for web
users to locate your databases. If you are not sure of the type of access available to you, consult
your ISP or network administrator.
Chapter 2 | About Custom Web Publishing with PHP
12
Manually installing the FileMaker API for PHP
When you install FileMaker Server, you are given the option to install the FileMaker supported
version of PHP (PHP 5). If you already have a PHP engine installed and configured and you want
to add only the FileMaker API for PHP, then manually install the FileMaker API for PHP class to
make it available to your PHP scripts.
If you did not install the FileMaker supported version of PHP, be sure to do the following
configuration tasks on your version of the PHP engine:
1 Enable the cURL module in php.ini.
1 Specify the location of the FileMaker API for PHP in the include_path variable in php.ini.
1 If you are accessing databases that contain dates and times, install the pear date package. For
more information, see: http://pear.php.net/package/date/
Note FileMaker Server has been tested with PHP version 5.3.15 for OS X 10.8, with PHP version
5.4.17 for OS X 10.9, and with PHP version 5.3.27 for Windows. For best results, use the
appropriate version of PHP.
To make the FileMaker API for PHP accessible to your PHP scripts
When you installed FileMaker Server, the FileMaker API for PHP package was included as a .zip
file in the following location:
1 For IIS (Windows):
[drive]:\Program Files\FileMaker\FileMaker Server\Web
Publishing\FM_API_for_PHP_Standalone.zip
where [drive] is the drive on which the web server component of your FileMaker server
deployment resides.
1 For Apache (OS X):
/Library/FileMaker Server/Web Publishing/FM_API_for_PHP_Standalone.zip
The FM_API_for_PHP_Standalone.zip file contains a file called FileMaker.php and a folder called
FileMaker. Unzip the file and copy the FileMaker.php file and the FileMaker folder to either of these
locations:
1 the folder where your PHP scripts reside.
1 For IIS (Windows) through HTTP or HTTPS:
[drive]:\Program Files\FileMaker\FileMaker Server\HTTPServer\Conf
where [drive] is the drive on which the Web Publishing Engine component of your
FileMaker server deployment resides.
1 For Apache (OS X) through HTTP:
/Library/FileMaker Server/HTTPServer/htdocs
1 For Apache (OS X) through HTTPS:
/Library/FileMaker Server/HTTPServer/htdocs/httpsRoot
1 one of the include_path directories in your PHP installation. The default location for OS X is
/usr/lib/php.
Chapter 2 | About Custom Web Publishing with PHP
13
Where to go from here
Here are some suggestions to get started developing Custom Web Publishing solutions:
1 Use FileMaker Server Admin Console to enable Custom Web Publishing. See FileMaker
Server Help and FileMaker Server Getting Started Guide.
1 In FileMaker Pro, open each FileMaker database that you want to publish and make sure the
database has the appropriate extended privilege(s) enabled for Custom Web Publishing. See
“Enabling Custom Web Publishing with PHP for databases” on page 14.
1 To learn how to access data in FileMaker databases using the FileMaker API for PHP, see
chapter 5, “Using the FileMaker API for PHP.”
Chapter 3
Preparing databases for Custom Web Publishing
Before you can use Custom Web Publishing with a database, you must prepare the database and
protect it from unauthorized access.
Enabling Custom Web Publishing with PHP for databases
You must enable Custom Web Publishing with PHP in each database you want to publish.
Otherwise, web users cannot use Custom Web Publishing to access the database, even if it is
hosted by a FileMaker Server that is configured to support a Web Publishing Engine.
To enable Custom Web Publishing for a database:
1. In FileMaker Pro, open the database you want to publish using an account with a Full Access
or Manage Extended Privileges privilege set.
2. Assign the fmphp extended privilege to one or more privilege sets to allow Custom Web
Publishing with PHP.
3. Assign the privilege set(s) with the Custom Web Publishing extended privilege to the
appropriate accounts (for example, the Admin and Guest accounts).
Important When defining account names and passwords for Custom Web Publishing
solutions, use printable ASCII characters; for example, a-z, A-Z, and 0-9. For more secure
account names and passwords, include certain non-alphanumeric characters such as an
exclamation point (!) or percent sign (%). Colons (:) are not allowed. For details on setting up
accounts, see FileMaker Pro Help.
4. Using the FileMaker Server Admin Console, verify that hosting is properly configured for the
database, and that it is accessible to the FileMaker Server. See FileMaker Server Help for
instructions.
Note Because Custom Web Publishing with PHP does not use persistent database sessions,
references to an external ODBC data source in the FileMaker Pro relationships graph may limit
the functionality available to your PHP solution. If your database accesses data from an external
SQL data source, you may not be able to update the external table’s record data.
Creating layouts for Custom Web Publishing with PHP
Custom Web Publishing with PHP does not provide direct table access to data in a FileMaker Pro
database, but uses the layouts defined in the databases. While there is no requirement to create
a unique layout for Custom Web Publishing with PHP, creating a layout specifically for a PHP
solution may be beneficial for several reasons:
1 Improve performance by creating a layout that is limited to the fields, labels, calculations, and
portals that you need to include in the PHP solution.
1 Simplify your PHP code by doing less data processing because the records have fewer fields.
1 Separate the interface design work from the data so that you can tailor the interface for the web user.
Chapter 3 | Preparing databases for Custom Web Publishing
15
Protecting your published databases
Custom Web Publishing with PHP enables you to restrict access to your published databases. You
can use these methods:
1 Require passwords for database accounts used for Custom Web Publishing with PHP.
1 Enable the Custom Web Publishing with PHP extended privilege only in those privilege sets for
which you want to allow access.
1 Disable Custom Web Publishing with PHP for a specific database by deselecting the fmphp
extended privilege for all privilege sets in that database. See FileMaker Pro Help.
1 Enable or disable Custom Web Publishing for all Custom Web Publishing solutions in the Web
Publishing Engine using FileMaker Server Admin Console. See FileMaker Server Getting
Started Guide and FileMaker Server Help.
1 Configure your web server to restrict the IP addresses that can access your databases via the
Web Publishing Engine. For example, specify that only web users from the IP address
192.168.100.101 can access your databases. For information on restricting IP addresses, see
the documentation for your web server.
FileMaker Server supports encryption for data written to disk and for data transmitted to clients.
1 Encrypt your database by using the Database Encryption feature of FileMaker Pro Advanced.
Encryption protects the FileMaker database file and any temporary files written to disk. For
more information on encrypting a database, see FileMaker Pro User’s Guide, FileMaker Server
Getting Started Guide, and FileMaker Pro Help.
1 An encrypted database that is hosted by FileMaker Server is opened by using the Admin
Console or the command line interface (CLI). As the FileMaker Server administrator, you
open the file with its database encryption password, so that FileMaker clients can use the
encrypted database.
1 Once the FileMaker encrypted database is opened with the encryption password by the
FileMaker Server administrator, FileMaker clients don’t need the encryption password to
access the encrypted database. For more information about opening an encrypted
database, see FileMaker Server Help.
1 Use Secure Sockets Layer (SSL) encryption for communication between your web server and
web browsers. SSL encryption converts information exchanged between servers and clients
into unintelligible information using mathematical formulas known as ciphers. These ciphers are
used to transform the information back into understandable data through encryption keys. SSL
connections are accessed through an HTTPS connection. No action is required by the client
once they are set up and operational. For information on enabling, configuring, and maintaining
your SSL connections, see the documentation for your web server.
For more information on securing your database, see FileMaker Pro User’s Guide, available as a
PDF file from http://www.filemaker.com/documentation.
Chapter 3 | Preparing databases for Custom Web Publishing
16
Accessing a protected database
Custom Web Publishing with PHP enables you to restrict access to your published databases
through database password protection, database encryption, and secure connections. When a
web user accesses a database using a PHP solution, the PHP code must provide the credentials
to the database using the FileMaker API for PHP. If the Guest account for the database is disabled,
or does not have the fmphp extended privilege enabled, the FileMaker API for PHP returns an
error and your PHP code must provide login information for the user.
The FileMaker API for PHP tutorial includes an example showing how to use the setProperty()
method to set the username and password for a protected database. See “FileMaker API for PHP
Tutorial” on page 27.
The following list summarizes the process that occurs when using Custom Web Publishing to
access a password protected database:
1 If no password has been assigned for a Custom Web Publishing enabled account, the PHP
solution needs to provide the account name only.
1 If the Guest account is disabled, then the PHP solution needs to provide an account name and
password. The PHP solution can either prompt the web user for the account name and
password, or it can store the account name and password in the PHP code. The account must
have the extended privilege fmphp enabled.
1 If the Guest account is enabled and has the fmphp extended privilege enabled:
1 The PHP solution does not need to prompt web users for an account name and password
when opening a file. All web users are automatically logged in with the Guest account and
assume the Guest account privileges.
1 The default privilege set for Guest accounts provides “read-only” access. You can change
the default privileges, including extended privileges, for this account. See FileMaker Pro
Help.
1 The PHP solution can use the Re-Login script step to allow users to log in using a different
account (for example, to switch from the Guest account to an account with more privileges).
See FileMaker Pro Help. However, because PHP connections do not use persistent database
sessions, the PHP solution must store the account name and password to use them for each
subsequent request.
Note By default, web users cannot change their account passwords from a web browser. You
can enable this feature for a database using the Change Password script step, which allows
web users to change their passwords from browser. See FileMaker Pro Help.
Chapter 3 | Preparing databases for Custom Web Publishing
17
Publishing the contents of container fields on the web
The contents of a container field can be embedded in the database, linked by reference using a
relative path, or stored externally.
Container fields embedded in a database
If a container field stores the actual files in the FileMaker database, follow these steps to use the
container field objects in a PHP solution:
1 Use FileMaker API for PHP to define the database object ($fm) with the appropriate credentials
(account name and password).
$fm = new FileMaker();
$fm->setProperty('database', $databaseName);
$fm->setProperty('username', $userName);
$fm->setProperty('password', $passWord);
1 Use the correct HTML tags to indicate the type of web-compatible object that is contained in the
container field, and create a URL string that represents the file path for the HTML tag’s source
attribute.
1 Then use the getContainerData() method to retrieve the container field object.
echo $fm->getContainerData($_GET['-url']);
The FileMaker API for PHP tutorial includes additional examples showing how to use container
fields. See “FileMaker API for PHP Tutorial” on page 27.
Notes
1 The Web Publishing Engine supports progressive download of audio files (.mp3), video files
(.mov, .mp4, and .avi recommended), and PDF files for interactive containers. For example, a
web user may start viewing a movie even if the entire movie file has not yet downloaded. To
allow for progressive download, you may need to create the files using options that support
streaming or that optimize for display on the web. For example, create PDF files using the
“Optimize for Web Viewing” option.
1 When the FileMaker Server setting Enable secure connections is not selected, the
connections that FileMaker Server uses to transmit data are not encrypted during transmission.
1 FileMaker clients see the interactive container data with little delay.
1 FileMaker Server decrypts the container field data to a cache folder on the server when a
FileMaker Pro, FileMaker Go, or web client requests the data. The data may remain
decrypted in the cache folder on the server for two hours, until FileMaker Server periodically
empties the cache folder. The data is not cached locally on the client.
1 When the FileMaker Server setting Enable secure connections is selected, FileMaker Server
uses secure connections to transmit data. FileMaker clients completely download the container
data before the user can interact with it. The data is as secure as if the solution were a local
database, since no temporary cache files are created and the data is encrypted during
transmission.
The Database Server must be stopped and restarted when the Enable secure connections
setting is changed in order for the new setting to take effect.
Chapter 3 | Preparing databases for Custom Web Publishing
18
Container fields with referenced files
If a container field stores a file reference, you can use the getContainerData() method to
retrieve the container field objects from the database in your PHP code, or you can use the
getContainerDataURL() method to retrieve a fully qualified URL for the container field object.
You must also follow these steps to publish the referenced files using the Web Publishing Engine:
1. Store the container object files in the Web folder inside the FileMaker Pro folder.
2. In FileMaker Pro, insert the objects into the container field and select the Store only a
reference to the file option.
3. Copy or move the referenced object files in the Web folder to the same relative path location in
the following folder of the web server.
1 For IIS (Windows) through HTTP or HTTPS:
[drive]:\Program Files\FileMaker\FileMaker Server\HTTPServer\Conf
where [drive] is the drive on which the Web Publishing Engine component of your
FileMaker server deployment resides.
1 For Apache (OS X) through HTTP:
/Library/FileMaker Server/HTTPServer/htdocs
1 For Apache (OS X) through HTTP:
/Library/FileMaker Server/HTTPServer/htdocs/httpsRoot
Notes
1 For container objects stored as file references, your web server must be configured to support
the MIME (Multipurpose Internet Mail Extensions) types for the kinds of files you want to serve,
such as movies. Your web server determines the support for the current MIME types registered
for the Internet. The Web Publishing Engine does not change a web server’s support for MIME.
For more information, see the documentation for your web server.
1 All QuickTime movies stored in a container field are stored by reference.
Container fields with externally stored data
If a container field stores objects externally — that is, if you selected Store container data
externally in the Field Options dialog box— your PHP code needs to use the
getContainerDataURL() method to retrieve a fully qualified URL for the container field object.
Use FileMaker API for PHP to define the database object with the appropriate credentials (account
name and password), and then use the getContainerDataURL() method.
Chapter 3 | Preparing databases for Custom Web Publishing
19
Example showing images using HTML img tag
$fm=new FileMaker($database, $hostspec, $user, $password);
$findCommand = $fm->newFindCommand($layout);
$findCommand->addFindCriterion('type', 'png');
$result = $findCommand->execute();
$records = $result->getRecords();
foreach ($records as $record) {
echo $record->getField('container').'
';
// For images, use the HTML img tag
echo '';
break;
}
Example showing embedded data using HTML embed tag
$fm=new FileMaker($database, $hostspec, $user, $password);
$findCommand = $fm->newFindCommand($layout);
$findCommand->addFindCriterion('type', 'pdf');
$result = $findCommand->execute();
$records = $result->getRecords();
foreach ($records as $record) {
echo $record->getField('container').'
';
// For movies and PDF files, use the HTML embed tag
//echo '
Source Exif Data:
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.4
Linearized : Yes
Tagged PDF : Yes
Page Mode : UseOutlines
XMP Toolkit : Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39
Creator Tool : FrameMaker 9.0
Modify Date : 2013:09:16 14:28:10Z
Create Date : 2013:09:16 14:28:10Z
Format : application/pdf
Title : FileMaker Server Custom Web Publishing with PHP
Creator : FileMaker, Inc.
Producer : Acrobat Distiller 8.1.0 (Windows)
Document ID : uuid:50b1e6f0-d280-4e46-9bdc-66b83f459a25
Instance ID : uuid:98f5cab9-b367-4876-9ab0-962e3ca6eaa1
Page Count : 62
Author : FileMaker, Inc.
EXIF Metadata provided by EXIF.tools