CodeIgniter Laravel PHP Example HTML Javascript jQuery MORE Videos New

How to integrate OTP(One Time Password) in LARAVEL form


web.php(route)

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

// Route::get('/', function () {
//     return view('welcome');
// });

Route::get('/','InsertController@index');
Route::post('/submitForm','InsertController@submitForm');
Route::post('/submitotp','InsertController@submitOtp');
Route::get('/showresult','InsertController@show');

insert_form.blade.php

@extends('common/footer')
@extends('common/sidemenu')
@extends('common/header')
@section('content')
<div class="container">
  <h2>OTP Integration</h2>
  <!-- <form action="/action_page.php"> -->
  <div id="formdiv" class="show">
    <input type="hidden" id="csrf" value="{{Session::token()}}">
  <div class="form-group">
      <label for="name">Name:</label>
      <input type="text" class="form-control" id="name" placeholder="Enter Name" name="name">
    </div>
    <div class="form-group ">
      <label for="Mobile">Mobiel:</label>
      <div class="input-box">
      <input type="text" class="fixedTxtInput" id="mobile" placeholder="Enter 10 digits Mobile Number" name="mobile">
      <span class="unit">+91</span>
      </div>
    </div>
    <div class="form-group">
      <label for="email">Email:</label>
      <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
    </div>
    <!-- <div class="form-group">
      <label for="pwd">Password:</label>
      <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd">
    </div>
     -->
    <button id="submitForm" class="btn btn-primary">Submit</button>
</div> <!-- form div close  -->
    <div id="otpdiv" class ="hide">
    <div class="form-group">
      <label for="emotpail">OTP:</label>
      <input type="otp" class="form-control" id="otp" placeholder="Enter OTP" name="otp">
    </div>
    <button id="otpSubmit" class="btn btn-primary">Submit</button>
</div>
  <!-- </form> -->
</div>
<script src="js/generateOTP.js"></script>

@endsection

header.blade.php

<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel demo</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <!-- Style -->
    <style>
        .input-box { position: relative; }
        .unit { position: absolute; display: block; left: 5px; top: 10px; z-index: 9; }
        .fixedTxtInput { display: block; border: 1px solid #d7d6d6; background: #fff; padding: 10px 10px 10px 30px; width: 100%; }
    </style>
    </head>
    <body>
    @yield('content')
    </body>
</html>

InsertController.php (controller)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\OtpVerify;

class InsertController extends Controller
{
    public function index(){
        return view('insert_form');
    }
    public function generateOTP(){
        $otp = mt_rand(1000,9999);
        return $otp;
    }

    public function submitForm(){
        $name = request('name');
        $mobile = request('mobile');
        $email = request('email');
        $authKey =  env('AUTH_KEY',"");
        if($mobile==''){
            return json_encode(array('statusCode'=>400,'msg'=>"Mobile number not valid".$mobile));
        }
        // else if($authKey==""){
        //     return json_encode(array('statusCode'=>400,'msg'=>"sms gateway not intigrated"));
        // }
        else{
            //put in session
            $otp = $this->generateOTP();
            $message = 'you otp is '.$otp;
            //$number = '+91'.$mobile;
            //sms($number,$msg)
            // $route = "route=4";
			// 	/*Prepare you post parameters*/
			// 	$postData = array(
			// 	'authkey' => $authKey,
			// 	'mobiles' => $mobile,
			// 	'message' => $message,
			// 	'sender' => $senderId,
			// 	'route' => $route
			// 	);
			// 	/*API URL*/
			// 	$url="https://control.msg91.com/api/sendhttp.php";
			// 	/* init the resource */
			// 	$ch = curl_init();
			// 	curl_setopt_array($ch, array(
			// 	CURLOPT_URL => $url,
			// 	CURLOPT_RETURNTRANSFER => true,
			// 	CURLOPT_POST => true,
			// 	CURLOPT_POSTFIELDS => $postData
			// 	/*,CURLOPT_FOLLOWLOCATION => true*/
			// 	));
			// 	/*Ignore SSL certificate verification*/
			// 	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
			// 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
			// 	/*get response*/
			// 	$output = curl_exec($ch);
			// 	/*Print error if any*/
			// 	if(curl_errno($ch))
			// 	{
            //     echo 'error:' . curl_error($ch);
            //     curl_close($ch);
            //     exit;
			// 	}
			// 	curl_close($ch);

           session(['name'=> $name]);
           session(['mobile'=> $mobile]);
           session(['email'=> $email]);
           session(['otp' => $otp]);
            return json_encode(array('statusCode'=>200,'msg'=>'otp sent successfully'.$otp));
        }
        
    }
    public function submitOtp(){
        $otp = trim(request('otp'));
        if($otp==''){
            return json_encode(array('statusCode'=>400,'msg'=>"otp not valid"));
        }
        else{
            $user = new OtpVerify;
            if($otp == session('otp')){
            $name = session('name');
            $mobile = session('mobile');
            $email = session('email');
            $user->save();
            session()->flush();
            json_code(array('statusCode'=>200,'msg'=>'sucess'));

            }
            else{
                return json_encode(array('statusCode'=>400,'msg'=>"otp not valid"));
            }
        }
    }
    public function show(){
        return view('home');
    }

}

OtpVerify.php (model)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class OtpVerify extends Model
{
    
}

generateOTP.js

$(function(){
    $("#submitForm").click(function(){
        var name=$("#name").val();
        var mobile= $("#mobile").val();
        var email = $("#email").val();
        var token = $("#csrf").val();
       $.ajax({
        url:'/submitForm',
        type:'POST',
        data:{
            _token:token,
            name:name,
            mobile:mobile,
            email:email},
        success:function(result){
            var result = JSON.parse(result);
            // alert(result);
            if(result.statusCode == 200){
                    $("#formdiv").removeClass('show');
                    $("#formdiv").addClass('hide');
                    $("#otpdiv").removeClass('hide'); 
                    $("#otpdiv").addClass('show'); 
                    }
            else{
                alert("something wrong... please try later");
            }
        }
       })
    })

    $("#otpSubmit").click(function(){
        var otp = $("#otp").val();
        otp = otp.trim();
        var token = $("#csrf").val();
        console.log("---",otp);
        $.ajax({
            type:"post",
            url:'/submitotp',
            data:{
                _token:token,
                otp:otp
            },
            success:function(otpResult){
                otpResult = JSON.parse(otpResult);
                if(otpResult.statusCode == 200){
                    location.replace("/showresult");
                }
                else{
                    alert("otp not match. Please try again");
                }
            }
        })
    })
})

home.blade.php

@extends('common/footer')
@extends('common/sidemenu')
@extends('common/header')
@section('content')
<h2> welcome to home</h2>
@endsection