Letting users subscribe to receive surveys

Before we can send surveys, we want to have a way for users to subscribe to them.

This form will let users enter their phone numbers and add them to the survey system.

You can put this page on a section of your website and allow people to sign up to receive your surveys.

Getting ready

The complete source code for this recipe can be found in the Chapter3/ folder of the code bundle available at http://www.packtpub.com/support.

How to do it...

Let's build a handy system to let users subscribe to receive our surveys. Perform the following steps:

  1. Load the sql.sql file into your database.
  2. Upload config.php to your website and make sure the following variables are set:
    <?php
    $accountsid = '';  //  YOUR TWILIO ACCOUNT SID
    $authtoken = '';   //  YOUR TWILIO AUTH TOKEN
    $fromNumber = '';  //  PHONE NUMBER CALLS WILL COME FROM
    
    $dbhost = '';  //  YOUR DATABASE HOST
    $dbname = '';  //  YOUR DATABASE NAME
    $dbuser = '';  //  YOUR DATABASE USER
    $dbpass = '';  //  YOUR DATABASE PASS
    ?>
  3. Upload pdo.class.php to your website.
  4. Upload a file on your web server called subscribe.php, with the following content:
    <?php
    include("config.php");
    include("pdo.class.php");
    include 'Services/Twilio.php';
    
    $action = isset($_GET['action']) ? $_GET['action'] : null;
    switch($action){
      case 'save':
        $fields = array('phone_number','status');
        $pfields = array();
        $_POST['status'] = 1;
        foreach( $fields as $k){
          $v = $_POST[$k];
          $pfields[] = "{$k} = '{$v}'";
        }
        $sql = "INSERT INTO subscribers SET ".implode(",",$pfields);
        $pdo = Db::singleton();
        $pdo->exec($sql);
        $qid = $pdo->lastInsertId();
        if( isset($qid) && !empty($qid) ){
    ?>
          <p>Thank you, you have been subscribed to receive surveys</p>
    <?php
        }
      default:
    ?>
        <h2>Subscribe to receive surveys</h2>
        <form method="POST" action="subscribe.php?action=save">
        <table>
        <tr>
          <td>Please enter your phone number</td>
          <td><input type="text" name="phone_number" /></td>
        </tr>
        </table>
        <button type="submit">Save</button>
        </form>
    <?php
        break;
    }
    ?>

How it works...

In step 1, we set up our database; in step 2, we configured the settings.

In step 4, we uploaded subscribe.php. The subscribe.php file gives users a form where they enter their phone number and get added to the survey. This can work inside a Sales page on your website, where you want people to subscribe to your surveys.

I prefer letting users subscribe for surveys themselves rather than manually adding users to surveys, as it lets us get a better grasp on the system. When we give a subscriber some sort of incentive to sign up for a survey, they are more likely to reply to the surveys we send them. For example, we could use this as a contest, where each subscriber is entered into a draw for a prize, but only if they reply to our surveys.