如何在Laravel中使用编码和解码

3
在核心PHP中,我们使用url_encode()url_decode()函数。在Laravel 4中,我们也可以使用类似的功能。如果可能的话,请告诉我如何实现。
<p> <a href="userregistrations/{{ $users-> id }}">{{ $users-> username }}</a>

我希望对$users->id进行编码。请问有什么方法或过程可以对该ID进行编码?同时也需要帮忙进行解码。


1
我不了解 Laravel,但那里的代码似乎是由模板引擎解析的。也许在传递给引擎之前应该进行编码,但我认为模板引擎会处理编码(至少应该这样,否则你应该使用 PHP 作为模板引擎)。 - Tudor
Try {{{ $users->id }}} - sybear
1个回答

1

Laravel提供了一个名为encrypt的辅助函数。所有加密的值都是使用OpenSSL和AES-256-CBC密码进行加密的。以下是如何使用它的示例。

public function storeSecret(Request $request, $id)
    {
        $user = User::findOrFail($id);

        $user->fill([
            'secret' => encrypt($request->secret)
        ])->save();
    }

加密后的值在加密期间通过序列化传递,这允许对象和数组的加密。因此,接收加密值的非PHP客户端需要对数据进行反序列化。如果您想在不进行序列化的情况下加密和解密值,则可以使用Crypt门面的encryptStringdecryptString方法:
use Illuminate\Support\Facades\Crypt;

$encrypted = Crypt::encryptString('Hello world.');

$decrypted = Crypt::decryptString($encrypted);

您可以使用解密助手来解密值。如果无法正确解密该值,例如MAC无效时,将抛出Illuminate\Contracts\Encryption\DecryptException异常:
use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}

参考资料: https://laravel.com/docs/5.4/encryption


1
编码和加密是两个不同的概念。我不确定楼主是否有这个意思。 - shaedrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接