1. Go to this page and download the library: Download alexgeno/phone-verification library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
alexgeno / phone-verification example snippets
use AlexGeno\PhoneVerification\Storage\Redis;
use AlexGeno\PhoneVerification\Sender\Twilio;
use AlexGeno\PhoneVerification\Manager;
$storage = new Redis(new \Predis\Client('tcp://127.0.0.1:6379'));
$sender = new Twilio(new \Twilio\Rest\Client('ACXXXXXX', 'YYYYYY'), ['from' => '+442077206312']);
$manager = new Manager($storage);
namespace AlexGeno\PhoneVerification\Sender;
class Plivo implements I
{
//...
}
namespace AlexGeno\PhoneVerification\Storage;
class DynamoDb implements I
{
//...
}
use AlexGeno\PhoneVerification\Storage\Redis;
use AlexGeno\PhoneVerification\Sender\Twilio;
use AlexGeno\PhoneVerification\Manager;
use AlexGeno\PhoneVerification\Exception\RateLimit;
$config = [
'rate_limits' => [
'initiate' => [
'period_secs' => 86400,
'count' => 10,
'message' =>
fn($phone, $periodSecs, $count) =>
sprintf('You can send only %d sms in %d hours.', $count, $periodSecs / 60 / 60)
]
],
'otp' => [
'length' => 4, // 1000..9999
'message' => fn($otp) => sprintf('Your code is %d', $otp) // The text a user receives
]
];
$storage = new Redis(new \Predis\Client('tcp://127.0.0.1:6379'));
$sender = new Twilio(new \Twilio\Rest\Client('ACXXXXXX', 'YYYYYY'), ['from' => '+442077206312']);
try {
(new Manager($storage, $config))->sender($sender)->initiate('+15417543010');
} catch (RateLimit $e) {
echo $e->getMessage(); // 'You can send only 10 sms in 24 hours'
}
use AlexGeno\PhoneVerification\Storage\Redis;
use AlexGeno\PhoneVerification\Manager;
use AlexGeno\PhoneVerification\Exception\RateLimit;
use AlexGeno\PhoneVerification\Exception\Otp;
$config = [
'rate_limits' => [
'complete' => [
'period_secs' => 300,
'count' => 5,
'message' =>
fn($phone, $periodSecs, $count) =>
sprintf('You are trying to use an incorrect code %d times in %d minutes', $count, $periodSecs / 60)
]
],
'otp' => [
'message_expired' =>
fn($periodSecs, $otp) =>
sprintf('Code is expired. You have only %d minutes to use it.', $periodSecs / 60),
'message_incorrect' => fn($otp) => 'Code is incorrect'
]
];
$storage = new Redis(new \Predis\Client('tcp://127.0.0.1:6379'));
try {
(new Manager($storage, $config))->complete('+15417543010', 1234);
} catch (RateLimit | Otp $e) {
// 'Code is incorrect' ||
// 'Code is expired. You have only 5 minutes to use it.' ||
// 'You are trying to use an incorrect code 5 times in 5 minutes'
echo $e->getMessage();
}
use AlexGeno\PhoneVerification\Storage\MongoDb;
$storage = new MongoDb(new \MongoDB\Client('mongodb://127.0.0.1:27017'), ['indexes'=> true]);