TP 악성 커밋 방지
4535 단어 THINKPHP
// TOKEN
function createToken() {
$code = chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE));
session('TOKEN', authcode($code));
}
// TOKEN
function checkToken($token) {
if ($token == session('TOKEN')) {
session('TOKEN', NULL);
return TRUE;
} else {
return FALSE;
}
}
/* TOKEN */
function authcode($str) {
$key = "YOURKEY";
$str = substr(md5($str), 8, 10);
return md5($key . $str);
}
2. 양식 페이지 form에 다음 HTML 코드를 입력합니다.
<input type="hidden" name="TOKEN" value="{:session('TOKEN')}" />
3. 페이지 전시 전에 creatToken() 방법을 사용하여 Token을 생성하고 해당 컨트롤러의 POST 요청에서 checkToken()을 사용하여 중복 제출 여부를 판단한다.
if(IS_POST)
{
$post_token = I('post.TOKEN');
if(!checkToken($post_token)){
$this->error(' ',U('User/Index/login'));
}
}