>  기사  >  백엔드 개발  >  ThinkPHP에서 메서드 및 자동 토큰 확인 예제 만들기

ThinkPHP에서 메서드 및 자동 토큰 확인 예제 만들기

不言
不言원래의
2018-05-08 14:35:001210검색

이 글은 ThinkPHP의 생성 방법과 자동 토큰 확인을 주로 소개합니다. 매우 중요한 목적이 있습니다. 필요하신 분들은 참고하시면 됩니다.

이 글은 ThinkPHP의 생성 방법과 자동 토큰 확인을 예시로 보여줍니다. 구현 방법, 구체적인 단계는 다음과 같습니다.

1. 데이터 테이블 구조

사용자 테이블 구조는 다음과 같습니다.

id 사용자 이름 비밀번호

2. 뷰 템플릿 부분

aoliHomeTpldefaultUsercreate .html 페이지는 다음과 같습니다.

<form action="__URL__/addit" method="post">
 <input type="text" name="id" />
 <input type="text" name="username" />
 <input type="password" name="password" />
 <input type="submit" name="sub" value="提交" />
</form>

3. Action 부분:

aoliHomeLibAction.php 페이지는 다음과 같습니다.

<?php
 class UserAction extends Action {
  function create(){
     $this->display();   
   }
   
   function addit(){
     //向表user中添加表单内容
     $user=M(&#39;user&#39;);
     $user->create();
     $user->add();
     //判断是否存在令牌验证
     if(!$user->autoCheckToken($_POST)){
       dump(&#39;no&#39;); 
     }else{
       dump(&#39;yes&#39;);   
     }
 }
?>

1 양식으로 제출한 데이터를 조작하기 전에 필요한 데이터를 수동으로 생성해야 하는 경우가 많습니다. , 위에서 제출한 양식 데이터와 같은:

 //实例化User模型
  $user=M(&#39;user&#39;);
 
 //获取表单的POST数据
  $data[&#39;username&#39;]=$_POST[&#39;username&#39;]
  $data[&#39;password&#39;]=$_POST[&#39;password&#39;]
 
 //写入到数据库
   $user->data($data)->add();

첨부: 데이터 방법을 사용하여 생성된 데이터 개체는 자동으로 확인 및 필터링되지 않으며 단순히 데이터 개체를 생성하려는 경우 필요하지 않고 직접 처리해야 합니다. 일부 추가 기능을 완료하려면 데이터 메서드를 사용하여 간단히 데이터 개체를 만들 수 있습니다.

2. ThinkPHP는 데이터 개체를 빠르게 생성하는 데 도움이 됩니다. 가장 일반적인 응용 프로그램은 양식 데이터를 기반으로 데이터 개체를 자동으로 생성하는 것입니다. create 메소드로 생성된 데이터 객체는 메모리에 저장되며 실제로 데이터베이스에 기록되지 않습니다.

   //实例化user模型
    $user=M(&#39;user&#39;);
  
   //根据表单提交的POST数据创建数据对象,并保存在内存中,可以通过dump($user)查看
    $user=create();

   //把创建的数据对象写入数据库中
    $user->add();

3. create 메소드는 다른 데이터 객체나 배열 등 다른 방법으로 데이터 객체를 생성하는 것을 지원합니다.

   $data[&#39;name&#39;]=&#39;ThinkPHP&#39;;
   $data[&#39;eamil&#39;]=&#39;ThinkPHP@gmail.com&#39;;
   $user->create($data);

   甚至还可以支持从对象创建新的数据对象,如从user数据对象创建新的member数据对象
   $user=M(&#39;user&#39;);
   $user->find(1);
   $member=M(&#39;member&#39;);
   $member->create($user);

4. 데이터 객체를 생성하는 동안 create 메소드는 토큰 확인, 자동 데이터 확인, 필드 유형 검색, 자동 데이터 완성 등을 포함하여 매우 의미 있는 작업도 완료합니다.

이 때문에 우리에게 익숙한 토큰 검증, 자동 검증, 자동 완성 기능은 실제로 create 메소드를 사용해야 적용됩니다.

5. 토큰 확인:

기능: 원격 양식 제출 및 기타 보안 보호를 효과적으로 방지할 수 있습니다.

config.php에 다음 구성을 추가하세요:

   &#39;TOKEN_ON&#39;   =>  true, //是否开启令牌验证
   &#39;TOKEN_NAME&#39;  =>  &#39;token&#39;,// 令牌验证的表单隐藏字段名称
   &#39;TOKEN_TYPE&#39;  =>  &#39;md5&#39;,//令牌验证哈希规则

자동 토큰은 md5 암호화 문자열을 현재 SESSION 세션에 추가합니다. 그리고 이 문자열을 폼 앞에 숨겨진 필드 형태로 삽입합니다. 이 문자열은 두 위치에 나타납니다. 하나는 SESSION에 있고 다른 하나는 양식에 있습니다. 양식을 제출할 때 서버가 가장 먼저 하는 일은 SESSION 정보를 비교하는 것입니다. 정보가 정확하면 양식 제출이 허용되고, 그렇지 않으면 제출이 허용되지 않습니다.

create.html의 소스코드를 보면 폼의 끝 표시 앞에 자동으로 생성된 숨겨진 필드가 있는 것을 볼 수 있습니다

<input type="hidden" name="token" value="eef419c3d14c9c93caa7627eedaba4a5" />

(1) 숨겨진 필드의 위치를 ​​직접 제어하고 싶다면, 양식 페이지에 수동으로 추가할 수 있습니다. {__TOKEN__} 표시를 추가하면 템플릿을 출력할 때 시스템이 자동으로 이를 대체합니다.

(2) 양식 토큰 확인이 켜져 있을 때 개별 양식에서 토큰 확인 기능을 사용할 필요가 없는 경우 양식 페이지에 {__NOTOKEN__}을 추가하면 시스템에서 현재 양식의 토큰 확인을 무시합니다.

(3) 페이지에 여러 양식이 있는 경우 {__TOKEN__} 식별자를 추가하고 하나의 양식에만 토큰 확인이 필요한지 확인하는 것이 좋습니다.

(4) create 메소드를 사용하여 데이터 객체를 생성하는 경우 동시에 자동으로 양식 확인이 수행됩니다. 이 방법을 사용하지 않는 경우 양식 확인을 위해 모델의 autoCheckToken 메서드를 수동으로 호출해야 합니다.

if (!$User->autoCheckToken($_POST)){
// 令牌验证错误
}

관련 추천:

Thinkphp


에서 volist 태그 사용

위 내용은 ThinkPHP에서 메서드 및 자동 토큰 확인 예제 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.