Как сравнить номер otp без перезагрузки страницы, которая отправляется в смс?

Я хочу сравнить номера otp, которые я набираю в текстовом поле, и sms otp, отправленные на номер через контроллер вызова API в laravel.

я использую laravel5.6 и php 7.2.3

 public function otpverify(Request $req)
    {
        $otpenter=$req->txtotp;
        if ($otpenter==$otp) 
        {
            return redirect()->action('JaincountController@create')
        }
        else
        {
            return view('jaincount_user/verification');
        }
    }
    public function makeRequest(Request $req)
    {
            $client = new Client();
            $otp=rand(10000,4);
            // $data=
            $data = array('adhar'=>$req->txtadharnumber,'drp'=>$req->drpcode,'mobilenumber'=>$req->txtnumber);


            $response = $client->request('POST','http://192.168.1.9/jaincountapi/public/api/otpsms',[
            'form_params'=>[
                'adharcardnumber'=>$req->txtadharnumber,
                'mobilecode'=>$req->drpcode,
                'mobilenumber'=>$req->txtnumber,
                'otp'=>$otp
            ]
            ]);
            $response = $response->getBody();
            return json_decode($response,true);
    }

я хочу сравнить номер otp текстового поля и номер sms otp, отправленный через API-вызов и перенаправление с другим контроллером в laravel5.6

Какая часть здесь не работает? Какова точная проблема?

Vikash Pathak 29.05.2019 14:22

otp проходит смс, но otp не сравнивается и как сравнить, что отправляет otp с номером otp текстового поля

ashruti nayak 29.05.2019 14:24

Вы можете прочитать сообщение об отказе?

Vikash Pathak 29.05.2019 14:26

значит отп не приходит в ответ но читается в мобильных смс

ashruti nayak 29.05.2019 14:27

Вы фиксируете значение параметра на сервере внутри любой базы данных?

Vikash Pathak 29.05.2019 14:28

нет otp, который не хранится ни в какой внутренней базе данных, он генерируется через rand(), а в вызове API сохраняется только одна переменная

ashruti nayak 29.05.2019 14:30

Мне просто интересно, как вы собираетесь сравнивать значения, тогда имеют ли эти обе переменные значения? $otpenter==$otp

Vikash Pathak 29.05.2019 14:32

в значении $otpenter происходит из текстового поля и $otp в той переменной, которая отправляется в API, поэтому я не понимаю, как я сравниваю и перенаправляю другой контроллер.

ashruti nayak 29.05.2019 14:35

Вы должны хранить/сохранять значение где-то еще, когда вы генерируете с помощью rand() перед отправкой в ​​​​API, поэтому, когда пользователь вводит opt в текстовое поле, вы можете просто получить значение оттуда и сравнить с ним.

Vikash Pathak 29.05.2019 14:38

Если я сохраню это значение в одной переменной и передам его в SMS и все, что тогда делать?

ashruti nayak 29.05.2019 14:40

Если вы сохраните значение в $variable.... оно будет недоступно в следующем запросе. Он доступен только для этого сеанса... когда в следующий раз вы получите запрос на проверку значения... он будет пустым.

Vikash Pathak 29.05.2019 14:42

Для этого я сохраняю эту переменную в другой переменной сеанса, а затем эту переменную передаю в другой контроллер.

ashruti nayak 29.05.2019 15:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
12
691
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Дело в том, что вы должны хранить свой otp в базе данных или в переменной сеанса.

(Документация: https://laravel.com/docs/5.8/красноречивый) Вы можете хранить otp в базе данных, например

public function makeRequest(Request $req)
{
        $client = new Client();
        $otp=rand(10000,4);
        // $data=
        $data = array('adhar'=>$req->txtadharnumber,'drp'=>$req->drpcode,'mobilenumber'=>$req->txtnumber);

        //CHANGES
        User::where('phone_number',$req->txtnumber)->update(['otp'=>$otp]);


        $response = $client->request('POST','http://192.168.1.9/jaincountapi/public/api/otpsms',[
        'form_params'=>[
            'adharcardnumber'=>$req->txtadharnumber,
            'mobilecode'=>$req->drpcode,
            'mobilenumber'=>$req->txtnumber,
            'otp'=>$otp
        ]
        ]);
        $response = $response->getBody();
        return json_decode($response,true);
}

вы можете получить его, используя красноречие в Laravel, используя

public function otpverify(Request $req)
 {
    $otpenter=$req->txtotp;
    //CHANGES
    $otp = User::where('phone_number', $phone_number)->first()->otp;

    if ($otpenter==$otp) 
    {
        return redirect()->action('JaincountController@create')
    }
    else
    {
        return view('jaincount_user/verification');
    }
}

после ввода правильного otp очистите его в базе данных.

Или вы можете использовать сеанс. Вы можете использовать сеанс двумя способами.

1.php сеанс по умолчанию 2. Сессия Laravel

давайте посмотрим сеанс php по умолчанию (документация: https://www.php.net/manual/en/book.session.php)

public function makeRequest(Request $req)
   {
        $client = new Client();
        $otp=rand(10000,4);
        // $data=
        $data = array('adhar'=>$req->txtadharnumber,'drp'=>$req->drpcode,'mobilenumber'=>$req->txtnumber);

        //CHANGES
        session_start();
        $_SESSION['otp'] = $otp


        $response = $client->request('POST','http://192.168.1.9/jaincountapi/public/api/otpsms',[
        'form_params'=>[
            'adharcardnumber'=>$req->txtadharnumber,
            'mobilecode'=>$req->drpcode,
            'mobilenumber'=>$req->txtnumber,
            'otp'=>$otp
        ]
        ]);
        $response = $response->getBody();
        return json_decode($response,true);
}

вы можете получить его по

public function otpverify(Request $req)
 {
    $otpenter=$req->txtotp;

    //CHANGES
    session_start();
    $otp = $_SESSION['otp']


    if ($otpenter==$otp) 
    {
        return redirect()->action('JaincountController@create')
    }
    else
    {
        return view('jaincount_user/verification');
    }
}

давайте использовать сессию laravel (документация: https://laravel.com/docs/5.2/сессия)

//important 
use Illuminate\Support\Facades\Session;


public function makeRequest(Request $req)
   {
        $client = new Client();
        $otp=rand(10000,4);
        // $data=
        $data = array('adhar'=>$req->txtadharnumber,'drp'=>$req->drpcode,'mobilenumber'=>$req->txtnumber);

        //CHANGES
        Session::put('otp',$otp)


        $response = $client->request('POST','http://192.168.1.9/jaincountapi/public/api/otpsms',[
        'form_params'=>[
            'adharcardnumber'=>$req->txtadharnumber,
            'mobilecode'=>$req->drpcode,
            'mobilenumber'=>$req->txtnumber,
            'otp'=>$otp
        ]
        ]);
        $response = $response->getBody();
        return json_decode($response,true);
}

вы можете получить его по

//important 
use Illuminate\Support\Facades\Session;

public function otpverify(Request $req)
 {
    $otpenter=$req->txtotp;

    //CHANGES
    $otp = Session::get('otp') //best way to use is flash. see the full documentation


    if ($otpenter==$otp) 
    {
        return redirect()->action('JaincountController@create')
    }
    else
    {
        return view('jaincount_user/verification');
    }
}

Другие вопросы по теме