Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Verify PHP Laravel Quickstart


With just a few lines of code, your PHP Laravel application can verify phone numbers and add an additional layer of security with Twilio Verify.

This PHP Verify Quickstart will teach you how to do this using our Verify REST API, the Twilio PHP helper library, and Laravel PHP Framework(link takes you to an external page) to ease development.

In this Quickstart, you will learn how to:

  1. Sign up for Twilio
  2. Set up your development environment
  3. Send your first SMS phone verification
  4. Check verification codes
(information)

Info

Short on time? Spin up a low-code, fully editable verification demo in less than 2 minutes using Twilio's Code Exchange and Quick Deploy here(link takes you to an external page).


Sign up for Twilio

sign-up-for-twilio page anchor

If you already have a Twilio account, you're all set here! Feel free to jump to the next step.

Before you can send an SMS from PHP, you'll need to sign up for a Twilio account(link takes you to an external page) or sign into your existing account.

You can sign up for a free Twilio trial account here(link takes you to an external page).

  • When you sign up, you'll be asked to verify your personal phone number. This helps Twilio verify your identity and also allows you to send test verification messages to your phone from your Twilio account while in trial mode. This phone verification step is exactly what you'll learn how to build in this tutorial!
  • Once you verify your number, you'll be asked to create a project. For the sake of this tutorial, you can click on the "Learn and Explore" template. Give your project a name, or just click "skip remaining steps" to continue with the default.
  • Once you get through the project creation flow, you'll arrive at your project dashboard in the Twilio Console(link takes you to an external page) . This is where you'll be able to access your Account SID, authentication token, create a verification service, and more.

Do I need a phone number?

do-i-need-a-phone-number page anchor

If you've sent SMS with Twilio in the past, you might remember needing to buy a phone number. With Twilio Verify, we take care of that for you! The Verify API selects the best routes for quickly and reliably delivering verification codes globally.

Verify uses Services for configuration. To send a Verify API request you will need both your Twilio Credentials and a Service SID. You can create and update a Service in two ways:

  1. In the Verify Console(link takes you to an external page)
  2. With the Verify API

Services can be used to edit the name (which shows up in the message template), set the code length (4-10 characters), enable settings like the "do not share warning" and more.

Now that you have a Twilio account and a verification service, you can start writing some code! To make things even easier we will use Twilio's official helper for PHP applications(link takes you to an external page).


If you've gone through one of our other PHP Quickstarts already and have PHP and Composer installed, you can skip this step and get straight to sending your first verification.

To start a phone verification and send your first SMS, you'll need to have PHP 7 installed - if you don't know if you have PHP installed, run the following command to see what version you have:

php --version

The Twilio SDK requires PHP version 5.3 or higher, but we'll use PHP >= 7.1 in this tutorial as older versions are no longer supported(link takes you to an external page).

If you have a not supported version of PHP you'll need to install it before going any further. Follow the directions for installing PHP for your platform (Windows, Mac, Linux)(link takes you to an external page).

The project dependencies are managed using composer(link takes you to an external page). If you don't have it installed follow the instructions to download and install it(link takes you to an external page).

Send an SMS verification code

send-an-sms-verification-code page anchor

Sends a one-time passcode to a user's phone number

PHP

_19
<?php
_19
_19
// Update the path below to your autoload.php,
_19
// see https://getcomposer.org/doc/01-basic-usage.md
_19
require_once '/path/to/vendor/autoload.php';
_19
_19
use Twilio\Rest\Client;
_19
_19
// Find your Account SID and Auth Token at twilio.com/console
_19
// and set the environment variables. See http://twil.io/secure
_19
$sid = getenv("TWILIO_ACCOUNT_SID");
_19
$token = getenv("TWILIO_AUTH_TOKEN");
_19
$twilio = new Client($sid, $token);
_19
_19
$verification = $twilio->verify->v2->services("VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
_19
->verifications
_19
->create("+15017122661", "sms");
_19
_19
print($verification->status);

Output

_23
{
_23
"sid": "VEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23
"service_sid": "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23
"to": "+15017122661",
_23
"channel": "sms",
_23
"status": "pending",
_23
"valid": false,
_23
"date_created": "2015-07-30T20:00:00Z",
_23
"date_updated": "2015-07-30T20:00:00Z",
_23
"lookup": {},
_23
"amount": null,
_23
"payee": null,
_23
"send_code_attempts": [
_23
{
_23
"time": "2015-07-30T20:00:00Z",
_23
"channel": "SMS",
_23
"attempt_sid": "VLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
_23
}
_23
],
_23
"sna": null,
_23
"url": "https://verify.twilio.com/v2/Services/VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Verifications/VEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
_23
}

Check a verification code

check-a-verification-code page anchor

Checks the one-time passcode sent to the user. The provided code is correct if the response 'status' parameter is 'approved'.

PHP

_23
<?php
_23
_23
// Update the path below to your autoload.php,
_23
// see https://getcomposer.org/doc/01-basic-usage.md
_23
require_once '/path/to/vendor/autoload.php';
_23
_23
use Twilio\Rest\Client;
_23
_23
// Find your Account SID and Auth Token at twilio.com/console
_23
// and set the environment variables. See http://twil.io/secure
_23
$sid = getenv("TWILIO_ACCOUNT_SID");
_23
$token = getenv("TWILIO_AUTH_TOKEN");
_23
$twilio = new Client($sid, $token);
_23
_23
$verification_check = $twilio->verify->v2->services("VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
_23
->verificationChecks
_23
->create([
_23
"to" => "+15017122661",
_23
"code" => "123456"
_23
]
_23
);
_23
_23
print($verification_check->status);

Output

_14
{
_14
"sid": "VEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_14
"service_sid": "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_14
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_14
"to": "+15017122661",
_14
"channel": "sms",
_14
"status": "approved",
_14
"valid": true,
_14
"amount": null,
_14
"payee": null,
_14
"sna_attempts_error_codes": [],
_14
"date_created": "2015-07-30T20:00:00Z",
_14
"date_updated": "2015-07-30T20:00:00Z"
_14
}


Clone and Setup the Verification Application

clone-and-setup-the-verification-application page anchor

Start by cloning our Verify Quickstart PHP repository.(link takes you to an external page)


_10
git clone git@github.com:TwilioDevEd/verify-v2-quickstart-php.git

If you don't have git installed or prefer to download the source code you can grab a zip file of the project here(link takes you to an external page).

Install project dependencies

install-project-dependencies page anchor

Enter your new project directory with


_10
cd verify-v2-quickstart-php/

Follow the steps to install Composer(link takes you to an external page) and run it


_10
php composer.phar require Twilio/sdk

Copy .env.example to .env with this command


_10
cp .env.example .env

and update the content to set your Twilio Account sensitive data.


_10
# Twilio API credentials
_10
# (find here https://www.twilio.com/console)
_10
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
_10
TWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
_10
_10
# Verification Service SID
_10
# (create one here https://www.twilio.com/console/verify/services)
_10
TWILIO_VERIFICATION_SID=VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Create the local SQLite database file


_10
touch database/twilio_verify_quickstart.sqlite (Unix like OS only)

Run database migrations


_10
php artisan migrate

Create an application encryption key(link takes you to an external page)


_10
php artisan key:generate

Run the app


_10
php artisan serve

If it is all set up correctly you'll soon get a message that the app is up!


Use the PHP Twilio Verify Demo

use-the-php-twilio-verify-demo page anchor

Navigate to http://localhost:8000/register(link takes you to an external page). You should see a registration form that looks like this:

sign up form with phone verification.

Enter your phone number and choose which channel to request verification over. Finally hit the green Sign Up button and wait. You'll either receive a phone call or an SMS with the verification token. If you requested a phone call, as an additional security feature you may need to interact to proceed (the call will tell you to enter a number on the phone keypad).

Enter the token into the Verification entry form and click 'Verify':

verification entry form.

And with that, your demo app is protected with Twilio's Phone Verification! You can now log out to try the untried channel.


Your demo app is now keeping fraudulent users from registering with your business and polluting your database. Next, check out all of the variables and options available to you in the Verify API Reference.

After that, check out adding additional verification channels supported by the Verify API like:

(information)

Info

Lastly, to protect your service against fraud, view our guidance on Preventing Toll Fraud when using Verify.


Rate this page: