You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.9 KiB
83 lines
2.9 KiB
<?php
|
|
//检查token
|
|
function CheckToken($token) {
|
|
date_default_timezone_set("Asia/Taipei");
|
|
$encryption_code = "MASADA!^***";
|
|
$time = date("Y-m-d H:i:s");
|
|
|
|
if (!isset($token) || empty($token)) {
|
|
$data['code'] = '400';
|
|
$data['message'] = '非法请求';
|
|
return $data;
|
|
}
|
|
//对比token
|
|
$explode = explode('.', $token); //以.分割token为数组
|
|
if (!empty($explode[0]) && !empty($explode[1]) && !empty($explode[2]) && !empty($explode[3])) {
|
|
$info = $explode[0] . '.' . $explode[1] . '.' . $explode[2]; //信息部分
|
|
$true_signature = hash_hmac('md5', $info, $encryption_code); //正确的签名
|
|
if ($time > $explode[2]) {
|
|
$data['user_id'] = '';
|
|
$data['code'] = '401';
|
|
$data['message'] = 'Token已过期,请重新登录';
|
|
return $data;
|
|
}
|
|
if ($true_signature == $explode[3]) {
|
|
$data['user_id'] = $explode[0];
|
|
$data['code'] = '200';
|
|
$data['message'] = 'Token合法';
|
|
return $data;
|
|
} else {
|
|
$data['user_id'] = '';
|
|
$data['code'] = '400';
|
|
$data['message'] = 'Token不合法';
|
|
return $data;
|
|
}
|
|
} else {
|
|
$data['user_id'] = '';
|
|
$data['code'] = '400';
|
|
$data['message'] = 'Token不合法';
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
|
|
$token = $_REQUEST["token"];
|
|
#echo $token . "<br>";
|
|
$result = CheckToken($token);
|
|
#echo $result['user_id'] . "<br>";
|
|
#echo $result['code'] . "<br>";
|
|
#echo $result['message'] . "<br>";
|
|
$user_id = $result['user_id'];
|
|
$token_code = $result['code'];
|
|
$token_message = $result['message'];
|
|
|
|
#session_start(); #session_start()一開始執行會把session打開並鎖住,最後需commit才能釋放。
|
|
|
|
|
|
/*
|
|
1.一開始的api-account-reply.php要產生ID、起始時間、結束時間與hash值,同時將此三者存入session (之後取消)
|
|
2.include-session-security.php是第一支且每隻程式都有,因此要把session的值讀出來 (之後取消)
|
|
|
|
3.如沒有收到ID、起始時間、結束時間與hash值,任何一個,代表如果有問題,直接 header("Location: api-account-send.php?errno=3");
|
|
4.如均有收到ID、起始時間、結束時間與hash值,但session為空,則帶入user_id。(同時比對正確則更新數據update session:之後取消)
|
|
若比對失敗則直接 header("Location: api-account-send.php?errno=3");
|
|
|
|
直接改版用WEB測試:
|
|
1.如果沒有Token, 取出user_id
|
|
2.如果不是
|
|
|
|
*/
|
|
#if(empty($_SESSION['user_id'])){
|
|
if(($token == "") or ($token_code <> "200")){ #改善Session問題
|
|
#header("Location:api-account-send.php?errno=3");
|
|
#exit(); #此行如果加上去無法產生檔案會導致app-maintenance-uploadsuccess-suveryupload.php無法產生檔案
|
|
/*
|
|
可以改成header("Location:api-account-send.php?errno=3");
|
|
*/
|
|
#echo "Illegal access!";
|
|
#exit();
|
|
}else{
|
|
date_default_timezone_set("Asia/Taipei"); #設定所有的時間以台北為基準
|
|
}
|
|
#session_commit();
|
|
?>
|