0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

urlのバリデーションについて【Laravel】

Last updated at Posted at 2024-05-27

基本的な方法 (active_url)

Laravelのバリデーションルールにはactive_urlというルールがあります。
URLが実際に存在し、インターネット上でアクセス可能かどうかをチェックできます。

class TestRequest extends BaseFormRequest
{
    public function rules()
    {
        return [
            'url'  => ['required', 'active_url'],
            ];
        }
    }      

active_urlは、URLがDNS上で解決可能なものであるかどうかをチェックしますが、HTTPステータスコード200であるかどうかまでは確認しません。

もし404エラーを返す場合でも、これを「無効」とはみなしません。
DNSチェックが通過する限り(つまり、ドメインが存在し、DNSクエリがIPアドレスを返す限り)、「有効」と見なされます。

アクセス可能かつHTTPコードが200かどうかまで調べたいとき

カスタムバリデーションルールを作成します。cURLやGuzzleなどのHTTPクライアントを使用してURLにHTTPリクエストを送り、レスポンスをチェックする方法です。

Validator::extend('url_accessible', function ($attribute, $value, $parameters, $validator) {
    try {
        $response = Http::head($value);
        return $response->successful();
    } catch (\Exception $e) {
        return false;
    }
}, 'The URL is not accessible.');

Httpファサードを使用してURLがアクセス可能かどうかをチェックしています。
これにより、実際にページが存在するかどうかをより確実に判断できます。

ぜひ参考にしていただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?