Web Object & PHP to Generate a Custom Certificate of Completion

Written by Gabe Anderson — Posted in Articulate Presenter

Inspired by Articulate community member Jerry in this forum thread (and others I’ve seen like it in the past), as well as conversations I had with Tom last week at the ASTD show, I’ve created a simple example of how you can leverage the underused Web Object feature of Articulate Presenter, combined with a little PHP and Web design, to create an embedded certificate of completion directly in your training courses.

Web Object & PHP Certificate of Completion

The demo will go a long way in helping you understand when you see it in action, but here’s how I did it:

  1. Create some PHP forms leveraging session variables (download my example source files).
  2. Upload the PHP files to your Web server (most Web servers support PHP, which can run on both Linux and Windows servers; consult your IT department if you’re not sure).
  3. In PowerPoint, open the course to which you’d like to add the certificate Web Object.
  4. Add a new slide, then go to Articulate -> Insert Web Object and follow the steps to display your Web Object in the Articulate Player (here’s the link to my example form).
  5. Publish your course & upload it to your Web server or your Articulate Online account.
  6. Distribute to your users.

With PHP and some creative Web development, the sky’s the limit — you could probably even use a Web Object at the beginning of the course to have the student register, then use that data to generate your certificate at the end.

Throw in a MySQL or other database on the back end and you could even keep records of who’s viewed your course (in my example it’s just PHP session variables, so no data are stored anywhere but in your browser session).

The other cool thing about this approach is that you can manage your Web Object content separately from your published course content; Web Objects pull directly from live Web content (though you can also insert local Web content from your computer, if you prefer).

Articulate Knowledge Portal customers: You can learn about another way to create a certificate in the documentation.

40 responses to “Web Object & PHP to Generate a Custom Certificate of Completion”


Hi Gabe,

Is there any way that we can print the certificate? I’d appreciate your response.


Rowena // Posted at 10:42 pm on January 22nd, 2008

Add a javascript print button to the webpage something like this.

var strButtonText= “Print Certificate”;

function printpage() {


Jerry // Posted at 3:28 pm on February 23rd, 2008

Hi Gabe,
I used your certificate coding and it worked quite well. (We use Artulate Presenter and Quizmaker to develop online courses in several languages.)

However, the certificate will generate onscreen whether a student passes or fails the course. Do you know of a line of code I can put into the certificate to force the certificate generation to print only upon receiving a passing score (or a score above some determined number)?

I tried using a { void } code, but I am doing something wrong because it voids the generation of a certificate completely.

Thanks for your help,

BeckyL // Posted at 1:05 pm on March 31st, 2008

Is it possible to generate a random number at the start of a presentation then have the viewer enter that number to prove they watched it?

Using PHP or Flash?

Derek Nugent // Posted at 4:12 pm on May 21st, 2008

Derek- You could embed another Web Object at the start of your presentation that contains a code or script to generate a random number. Would that do it?

gabe // Posted at 5:33 pm on May 21st, 2008

Many thanks for you last response

Can you record the score on the certificate?

Derek Nugent // Posted at 3:26 pm on August 6th, 2008

It would be FAR better having an option for Articulate provide variables like Score, time, taken etc to another page. An interesting work around but you really shouldn’t need workarounds!

All the best

Derek Nugent // Posted at 3:30 pm on August 6th, 2008

Derek- You could probably combine this PHP certificate approach with the Quizmaker email results via PHP method that many of our customers use.

gabe // Posted at 9:31 am on August 8th, 2008

Again many thanks Gabe I’ll have a look at that. Sorry for late response. I’ve been away with health problems 🙂

Derek Nugent // Posted at 2:48 pm on August 12th, 2008


I’m having trouble getting your web object and PHP certificate approach to work. The demo also is looking for files on an Articulate Server, and doesn’t fill in the certificate anymore. I can get your certificate to publish, but can’t get the page that asks for user info to link to the certificate info. I am publishing to AO. Any ideas? THanks Ed

Ed Cunningham // Posted at 7:12 am on October 23rd, 2008

Hi Ed- You’ll need to host the Web object with the certificate / user input form on your own server that supports PHP. You won’t be able to manage the PHP code on AO.

gabe // Posted at 11:36 am on October 23rd, 2008

Hi Gabe,
I’m having a problem when we encounter names with a ‘ (ie. O’Connor). The certificate will output it as O///’Connor. I’m sure this is something to do with the coding. Any ideas on how to fix this?

Umar // Posted at 10:56 am on February 27th, 2009

Hi Umar- That has to do with the way PHP handles apostrophes. So you need to have your code escape the characters so that the output is correct when it displays.

I think the PHP stripslashes function is what you need to strip the slashes on output.

You could also try doing some Web searches on the topic, and I think you should be able to find a solution.

gabe // Posted at 11:05 am on February 27th, 2009

Hello Gabe- I would like to know whether your certificate will work for my agency should I be saving my courses onto our State server and not using Articulate Online to house my courses?

Additionally, when I publish our course, I want only individuals who have successfully completed the course to have access to the certificate into which they can put their name. How do I structure the the course in Articulate presenter to prevent certificate access by those failing the course?

Thanks for your input.

Barbara Gibson // Posted at 1:22 pm on May 1st, 2009

Hi Barbara- If you want to manage private user accounts and have tracking/reporting on your content, then it’s a good idea to continue using Articulate Online. However, you can set up a certificate on a separate server and use as a Web Object in conjunction with Articulate Online and your content hosted there, as described in this blog entry.

Do you have a quiz at the end of your course? You could add a slide containing the Web Object certificate after the quiz, and set up the quiz so that only users who pass it can proceed to the final slide. You can learn more about that in Quizzes -> Setting Properties

gabe // Posted at 8:29 am on May 5th, 2009


I am currently in a situation in which I may need to use a couple of different systems for course hosting. This is why I am trying to create a course that is prepared in such a way that regardless of the system I choose, the SCORM compliant course will run from whereever it is launched. Our state bought into the PeopleSoft ELM system years ago and I am needing to justify going to any other system. For now, my focus is creating self contained courses that can include the tests and allow an individual to print out a certificate of completion for their own records. Documentation within any LMS system is currently not available to me.


Barbara Gibson // Posted at 9:29 am on May 5th, 2009

My apologies Gabe. Thank you for your assistance and recommendations. By the way, I did not understand how to include a “Web Object” for the certificate. As you can probably tell, I am a health educator and NOT a technical person so this puts me at a disadvantage. Soory.


Barbara Gibson // Posted at 9:32 am on May 5th, 2009

Hi Barbara- In Step 4 of this blog entry you’ll see the part where I explain inserting the certificate as a Web Object. Note that to use this example you need to have access to a web server that supports PHP, which is likely one different than your LMS.

RE: “the SCORM compliant course will run from whereever it is launched.” So long as the LMS you’re using is also SCORM compliant, then courses you create with Articulate products should work just fine in the LMS. SCORM Test Track is a good way to get confirmation.

gabe // Posted at 4:07 pm on May 5th, 2009


can the PHP also pass a variable? I want the course to end when a wrong answer is given.


Roel // Posted at 11:54 am on June 8th, 2009

Hi Roel- Unfortunately, I don’t know of any way to pass variables between Articulate-generated output and a PHP Web Object. That’s not to say it can’t be done – just that I haven’t come across anything like that.

One idea would be to create a link in your PowerPoint or quiz results finish button that would contain a variable to pass to a new PHP site.

gabe // Posted at 6:03 pm on June 8th, 2009

Hi, when adding a web oject it looks for an index.html file. How does an index.html file call you PhP files.

Jameka // Posted at 10:19 pm on June 3rd, 2010

Hi Jameka- you can point directly to the PHP page when the PHP files are hosted on your web server, which they’ll need to be anyway since PHP needs a server running PHP to work properly. When pointing to a Web Object online, you can use any URL you’d like; it doesn’t have to be an index.html file.

gabe // Posted at 1:36 pm on June 4th, 2010

I am wondering if anyone figured out a way to grab the students name from the LMS via SCORM so they don’t have to enter it?

Spencer Hyde // Posted at 2:23 pm on August 4th, 2010

We are building a presentation with a quiz. My question is this: Can the quiz answer and score variables be captured and stored in a database? We are using ColdFusion, which is very robust. However, we need to be able to capture the answers to the questions as well as the final score in order to store in a database and either present the user with a certificate or not.

John Eubanks // Posted at 9:46 pm on December 8th, 2010

Or, do I need I need to pass those values through a url string?

John Eubanks // Posted at 9:47 pm on December 8th, 2010

Hi John- Quizmaker is designed to work with either Articulate Online or a third-party LMS.

However, you might want to check out these two unsupported work-arounds from our forums:

Quiz to database, instructions and code
Articulate ’09 – Email Results Tutorial – PHP

gabe // Posted at 11:04 am on December 9th, 2010

HI Gabe – followed the steps but when I post it I am getting Directory Listing Denied
This Virtual Directory does not allow contents to be listed.

DOes this mean our servers do not support PHP?

Diane // Posted at 12:27 pm on April 25th, 2011

Hi Diane- that’s just a setting on your web server. Take a look. Or you can name the index.php file something like certificate.php and point directly to that file instead of its containing directory.

gabe // Posted at 11:00 am on April 26th, 2011

Hi Gabe – I’ve followed all the steps, but when the module launches it tries to download or save the .php file instead of displaying and collecting the input fields. I also didn’t upload the now.fn file, because I really don’t care about displaying the date/time on the form. Please advice.


gloria // Posted at 12:34 pm on May 23rd, 2011

Hi Gloria- it sounds like your server may not be configured to support PHP. Have you checked with your server admin?

gabe // Posted at 4:44 pm on May 23rd, 2011

I want to be able to create a completion certificate without hosting it on a web server. My client requires the ability to create the certificate from any where in the world without access to the internet, a centralized server or any connectivity. They want to be able to pop in the CD into a lap top and hook up a small portable printer, take the course, print the certificate and move on. How can I make this happen using Articulate?

Douglas // Posted at 7:13 am on June 16th, 2011

Hi Douglas- take a look at this forum thread, which may get you going in the right direction.

gabe // Posted at 12:16 pm on June 16th, 2011

This does not solve the issue of not having the certificate info hosted on a web server. I need it fully encompased when published to CD.

Douglas // Posted at 12:24 pm on June 16th, 2011

The custom SWF solution noted in the thread could work locally. And here’s a solution that may be even easier: Create a custom certificate using the report.html file.

gabe // Posted at 3:24 pm on June 16th, 2011


I wish to know whether there is the possibility for you to share the source code of this demo.


youshra // Posted at 2:27 am on June 23rd, 2011

Hi Youshra- yes, the source files are linked to via #1 in the post. Here’s the link.

gabe // Posted at 11:56 am on June 23rd, 2011

is there any chance to save the certificate as .jpg or .pdf?

mystica // Posted at 10:56 am on November 21st, 2011

@Mystica: The method described here does not allow for saving of the certificate to one of those formats, so you’d want to explore other options.

gabe // Posted at 11:11 am on November 21st, 2011

Is there a way to generate the certificate, give the user the ability to print the certificate if needed, then have it saved with the users course history as an icon somewhere underneath the pass/fail status on their articulate-online account?

Michael Kaufmann // Posted at 4:30 pm on November 29th, 2011

@Michael: Note that this certificate method is not specific to Articulate Online, and if you do use it in conjunction with Articulate Online would require a separate web server that supports PHP (where you’d host and call in the certificate via a Web Object). That said, users should be able to print the certificate, but it cannot be saved in Articulate Online.

If you’d like to see a certificate feature in Articulate Online, let us know here.

gabe // Posted at 11:39 am on November 30th, 2011

Comments are closed on this post. Need more help? Post your question in the E-Learning Heroes Discussions.

Recent Comments