>백엔드 개발 >PHP 튜토리얼 >ThinkPHP_php 예제에서 메소드 생성 및 자동 토큰 확인 예제 튜토리얼

ThinkPHP_php 예제에서 메소드 생성 및 자동 토큰 확인 예제 튜토리얼

WBOY
WBOY원래의
2016-05-16 20:37:04913검색

이 글은 ThinkPHP에서 create 메소드 구현과 자동 토큰 확인을 예시로 보여줍니다.

1. 데이터 테이블 구조

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

아이디 사용자 이름 비밀번호

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. 액션 부분:

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

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

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

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

첨부: 데이터 메소드를 사용하여 생성된 데이터 개체는 자동으로 확인 및 필터링되지 않으며, 단순히 데이터 개체를 생성하고 일부 추가 기능을 완료할 필요가 없는 경우에는 다음을 수행할 수 있습니다. 간단히 데이터 메소드를 사용하십시오.

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

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

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

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

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

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

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

따라서 우리에게 익숙한 토큰 검증, 자동 검증 및 자동 완성 기능이 실제로 적용되려면 create 메소드를 사용해야 합니다.

5. 토큰 검증:

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

config.php에 다음 구성을 추가합니다.

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

자동 토큰은 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 프로그래밍 설계에 도움이 되기를 바랍니다.

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