如何在Laravel 5.5中加密GET url进行搜索?

时间:2017-10-11 21:22:05

标签: php laravel encryption routes laravel-5.5

我遇到了这个问题,我不知道在Laravel 5.5中加密 URL 进行搜索很热......结果如下:

localhost:8000/Akademik/Mahasiswa?cari=some_keyword

但我想这样:

localhost:8000/Akademik/Mahasiswa?cari=some_encrypted_keyword

喜欢:

localhost:8000/Akademik/Mahasiswa?cari=Kas6F8ajhasdhhfbdgshek

这是我的 MahasiswaController.php

    public function index(Request $request)
{   
    if ($request->get('cari') == null) {

        $datas = Mahasiswa::paginate(10);
        return view('Akademik.Mahasiswa.mahasiswaIndex', compact('datas'))->with('no',($request->input('page',1)- 1)*10);

    } else {
        $cari = $request->get('cari');
        $datas = Mahasiswa::where('nama','LIKE','%'.$cari.'%')->paginate(10);
        return view('Akademik.Mahasiswa.mahasiswaIndex', compact('datas'))->with('no',($request->input('page',1)- 1)*10);

    }
}

这是我的 route / web.php

Route::Resource('Akademik/Mahasiswa','Akademik\Mahasiswa\MahasiswaController');

和我的 mahasiswaIndex.blade.php (搜索表单)

 <div class="col s4 m6 right">
    {{ Form::open(array('url' => 'Akademik/Mahasiswa','method' => 'get')) }}
        <div class="row">
          <div class="input-field col s12">
             {{ Form::text('cari',null,['id' => 'cari','class' => 'col s12']) }}
           <label for="cari">Cari</label>
          </div>
        </div>
    {{ Form::close() }}
</div>

3 个答案:

答案 0 :(得分:0)

您可以加密您的url参数并在控制器中解密它。你可以试试这个:

在您的视图中:假设您的参数是cari或更多参数,您可以加密。

<?php
        $parameter =[
            'cari' => (value of input field),
        ];
    $parameter= Crypt::encrypt($parameter);
?>
<a href="{{url('/url/',$parameter)}}" target="_blank">a link</a>

您的路线将是:

Route::get('/url/{parameter}', 'YourController@methodName');

在您的控制器中,您可以解密您的参数:

public function methodName($cari){
    $data = Crypt::decrypt($cari);
  }

您必须在控制器顶部使用Crypt namespace作为

use Illuminate\Support\Facades\Crypt;

注意:您可以使用Crypt::encrypt($parameter)加密网址参数,并使用Crypt::decrypt($parameter)进行解密

答案 1 :(得分:0)

你确定它实际上是你需要的吗?出于安全考虑,使用HTTPS协议,它加密客户端和服务器之间的所有通信。如果您只想隐藏浏览器地址栏中的原始数据,可以使用POST方法而不是GET。

答案 2 :(得分:0)

如果要加密输入字段。在将关键字发送到url结果之前,你必须在javascript / jquery AJAX中做。假设您有控制器和路由来进行加密:

localhost:8000/Akademik/encrypt

之后,您将在var some_encrypted_keyword上获取加密关键字,然后通过Ajax GET再次发送到url:

localhost:8000/Akademik/Mahasiswa?cari=some_encrypted_keyword

问我什么。希望这能解决你的问题