Laravel에서 요청 데이터 가져오기

6866 단어 PHPLaravel

카탈로그


Laravel의 기사 요약은 다음과 같습니다.
PHP 프레임워크 Laravel 사용 방법

표준 높이 버전


Laravel Framework 7.19.1에서 동작 확인

Laravel의 요청 데이터 가져오기 처리


Laravel에서 요청 데이터를 얻는 것에 대해 적어보겠습니다.

전제 조건


eclipse에서 Laravel 개발 환경을 구축합니다.디버깅에 인터럽트 정지를 추가합니다.(Windows、Vagrant、docker)
본 보도는 상술한 내용이 완성된 전제에서 쓴 것이다
프로젝트의 제작과 아파치의 설정이 모두 위에서 진행되고 있습니다.

컨트롤러에 방법 추가


(1)/sample/app/Http/Controllers/SampleController.php에 request1 방법, request2 방법 추가
    public function request1(Request $request)
    {
        $request->flash();

         $data = [
         'get'           => $request->get('a'),
         'input'         => $request->input('a'),
         'request_get'   => $request->request->get('a'),
         'query_get'     => $request->query->get('a'),
         'query'         => $request->query('a'),
         'all'           => var_export($request->all(), true),
         'only'          => var_export($request->only(['a', 'b']), true),
         'except'        => var_export($request->except(['b']), true),
         ];

        return view('sample.request1', $data);
    }

    public function request2(Request $request)
    {
        $request->flash();

        $data = [
            'get'           => $request->get('a'),
            'input'         => $request->input('a'),
            'request_get'   => $request->request->get('a'),
            'query_get'     => $request->query->get('a'),
            'query'         => $request->query('a'),
            'all'           => var_export($request->all(), true),
            'only'          => var_export($request->only(['a', 'b']), true),
            'except'        => var_export($request->except(['b']), true),
        ];

        return view('sample.request2', $data);
    }

$request->flash()에서 데이터를 요청합니다.
다음 사용자 요청을 처리하는 동안에만 사용할 수 있는 플래시 데이터로 세션을 저장합니다.
(2)/sample/routes/web.php에 다음 내용을 추가합니다
Route::get('sample/request1', 'SampleController@request1');
Route::match(['get', 'post'],'sample/request2', 'SampleController@request2');

뷰 작성


(1)/sample/resources/views/sample/request1.blade.php 파일 만들기
request1.blade.php
<html>
    <head>
        <title>sample</title>
    </head>
    <body>

        <form action="{{ url('sample/request1') }}" method="get">
            <div>a<input type="text" name="a" value="{{ old('a') }}"></div>
            <div>b<input type="text" name="b" value="{{ old('b') }}"></div>
            <div>c<input type="text" name="c" value="{{ old('c') }}"></div>
            <input type="submit" >
        </form>

        <div>get:{{$get}}</div>
        <div>input:{{$input}}</div>
        <div>request_get:{{$request_get}}</div>
        <div>query_get:{{$query_get}}</div>
        <div>query:{{$query}}</div>
        <div>all:{{$all}}</div>
        <div>only:{{$only}}</div>
        <div>except:{{$except}}</div>

    </body>
</html>


(2)/sample/resources/views/sample/request2.blade.php 파일 만들기
request2.blade.php
<html>
    <head>
        <title>sample</title>
    </head>
    <body>

        <form action="{{ url('sample/request2') }}?a=q_a&b=q_b&c=q_c" method="post">
            @csrf
            <div>a<input type="text" name="a" value="{{ old('a') }}"></div>
            <div>b<input type="text" name="b" value="{{ old('b') }}"></div>
            <div>c<input type="text" name="c" value="{{ old('c') }}"></div>
            <input type="submit" >
        </form>

        <div>get:{{$get}}</div>
        <div>input:{{$input}}</div>
        <div>request_get:{{$request_get}}</div>
        <div>query_get:{{$query_get}}</div>
        <div>query:{{$query}}</div>
        <div>all:{{$all}}</div>
        <div>only:{{$only}}</div>
        <div>except:{{$except}}</div>

    </body>
</html>

{old ()}$request->flash () 세션에 들어간 데이터 가져오기@csrf 히든으로 교차역 미션 포제리 대책의 영패를 꺼내다
교차 사이트 임무라는 복제리는 쉽게 말하면 직접 방문하면 어려운 화면에 접근할 수 있는 취약성이다.
예를 들어 EC 사이트에 로그인한 상태에서 악성 사이트를 방문하여 이 악성 사이트에서 EC 사이트의 상품 구매 완료 화면post로 보내면 구매하지 않으려는 상품이 하나의 예이다.
교차 사이트 임무 포제리 대책은서버에서 일회용 암호 생성 → 세션에 저장 → input 탭의 type=hidden으로 화면으로 출력 → 다음 요청에서 날아오는 type=hidden의 일회용 암호와 세션에 저장된 일회용 암호가 일치하는지 확인 → 일치하지 않을 때 오류로
Laravel에서 이 대책은 app/Http/Middleware/VerifyCsrfToken입니다.php로 갔어요.

동작 확인

http://localhost/laravelSample/sample/request1실행 결과
http://localhost/laravelSample/sample/request2실행 결과


결과


검색 방법
캡처 값
get
질의 매개 변수를 가져옵니다. 그렇지 않으면 요청 주체에서 가져옵니다.
input
post의 경우 요청 주체에서, get의 경우 검색 매개 변수에서 가져옵니다.
request->get
post의 경우 요청 주체에서, get의 경우 검색 매개 변수에서 가져옵니다.
query->get
질의 매개변수에서 읽어들이기
query
질의 매개변수에서 읽어들이기
all
post의 경우 요청 주체에서, get의 경우 검색 매개 변수에서 가져옵니다.
only
post의 경우 요청 주체에서, get의 경우 검색 매개 변수에서 가져옵니다.
except
post의 경우 요청 주체에서, get의 경우 검색 매개 변수에서 가져옵니다.

좋은 웹페이지 즐겨찾기