php 翻译 java_谁能帮我把php代码翻译成java的代码。跪求急啊

谁能帮我把php代码翻译成java的代码。跪求急啊<?php

class User extends CI_Model {

public function __construct() {

parent::__construct();

defined('RUN_TIME') || define('RUN_TIME', time());

$this->load->model('share');

}

function iflogin($redirect = true, $forward='') {

$this->share->cncn_session_start();

$uid = 0;

//检查是SESSION和COOKIE里的uch_auth是否一致,确保是同一个人

$still_login = false;

if(isset($_SESSION['uch_auth']) && isset($_COOKIE['uch_auth'])

&& ($_SESSION['uch_auth'] == $_COOKIE['uch_auth'])){

$still_login = true;

}

if (isset($_SESSION['uid']) && $_SESSION['uid'] && $still_login) {

$uid = $_SESSION['uid'];

// 没有相关缓存时,做退出的操作,is.cncn.net这里不再做单独的同步退出

if (empty($_COOKIE['uch_auth'])) {

$this->doexit();

}

// 每5分钟检测登录期间是否登录进程已被删除(比如其他进程修改了密码)

if ( $this->chk_auth_session($uid) < 0 ) {

$this->doexit();

}

// 每60秒更换一次session_id

if ( empty($_SESSION['last_sess_time']) ) {

$_SESSION['last_sess_time'] = time();

} elseif (time() - $_SESSION['last_sess_time'] > 60) {

session_regenerate_id(TRUE);

$_SESSION['last_sess_time'] = time();

}

} else {

if (isset($_COOKIE['uch_auth']) && $_COOKIE['uch_auth']) {

$uid = $this->chk_auth_cookie();

// cookie信息通过了验证时,从cookie恢复登录状态

//------------------------------------------------

if ($uid > 0) {

// 生成session、cookie

$this->set_login($uid);

// 添加登录进程检测相关的session值,以便于后续session进行检测

$_SESSION['last_uc_check_time'] = time();

//------------------------------------------------

} else {

$uid = 0;

}

}

}

if (!$uid && $redirect) {

// 如果是来自ajax的请求,则不做跳转,否则ajax接收到的就是登录页面的html代码

$ajax = $this->input->get_post('ajax');

if (empty($ajax)) {

if (empty($forward)) {

$forward = empty($_SERVER['REQUEST_URI']) ? $this->uri->uri_string : '

$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI'];

}

header('Location: '. NET_URL. 'login?forward=' . urlencode($forward));

exit;

} else {

$this->share->cncn_exit('您尚未登录');

}

}

return $uid;

}

/*

* 验证保持登录的cookie是否正确

* @param string $check_type 验证类型(默认为cookie):

* cookie 通过cookie恢复登录时进行的验证

* session 恢复登录后已有session时进行的验证,

这时不验证登录权限的有效时间(因为有可能cookie已失效,但session还在的情况)

* @return mixed 验证登录时,返回该cookie对应的UID,失败时,返回FALSE

*/

function chk_auth_cookie($check_type='cookie') {

if ($check_type == 'cookie') {

if (empty($_COOKIE['uch_auth'])) {

return -1;

}

$auth_code = $_COOKIE['uch_auth'];

$uid = 0;

} else {

if (empty($_SESSION['uch_auth'])) {

return -1;

}

$auth_code = $_SESSION['uch_auth'];

$uid = $_SESSION['uid'];

}

$info = array(

'uid' => $uid,

'auth_code' => $auth_code,

'client_ip' => $_SERVER['REMOTE_ADDR'],

'client_info' => $this->get_client_info(),

'user_agent' => $this->get_client_info(FALSE),

'check_type' => $check_type,

);

static $checked;

if ($checked[$auth_code]) {

return $checked[$auth_code];

}

if ( CURRENT_ENV == 'production' ) {

$uc_key = '6e1a233d3c9d4677a617096d70e0c612';

} else {

$uc_key = 'adc0a1d842a7545633b06f451aa3a74c';

}

$info = array(

'sign' => $this->authcode(serialize($info), 'ENCODE', $uc_key),

'from' => 'finance',

);

// 向服务端发起验证请求

if ( CURRENT_ENV == 'production' ) {

$url = 'http://www.cncn.net/homepage/check_uc_session';

} else {

$url = 'http://192.168.1.158:876/homepage/check_uc_session';

}

$info = http_build_query($info);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

curl_setopt($ch, CURLOPT_POSTFIELDS, $info);

$r = curl_exec($ch);

curl_close($ch);

$return = unserialize($this->authcode($r, 'DECODE', $uc_key));

if ( empty($return['uid']) ) {

return '-997';

}

$uid = $checked[$auth_code] = $return['uid'];

// 验证失败

if ($uid < 0 ) {

return $uid;

}

// 确定返回的验证结果是否已失效

if ( time() - $return['time'] > 300 ) {

return '-996';

}

return $uid;

}

/*

* 每5分钟检测登录期间是否登录进程已被删除(比如其他进程修改了密码)

* @param int $uid 当前登录用户,保存在session里的uid

*

* @return mixed 验证登录时,返回该cookie对应的UID,失败时,返回FALSE

*/

function chk_auth_session($uid) {

if ( isset($_SESSION['last_uc_check_time']) && time() - $_SESSION['last_uc_check_time'] > 300 ) {

$uid = $this->chk_auth_cookie('session');

if ( $uid < 0 ) {

// 登录凭证验证失败后,将当前的session删除

if (session_id() != '') { // check login被调用多次。。所以这里需要加个判断

session_destroy();

}

} else {

$_SESSION['last_uc_check_time'] = time();

}

}

if ( empty($uid) || $uid < 0 ) {

$uid = 0;

}

return $uid;

}

function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {

$ckey_length = 4;

$key = md5($key ? $key : CNCN_API_KEY);

$keya = md5(substr($key, 0, 16));

$keyb = md5(substr($key, 16, 16));

$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length):

substr(md5(microtime()), -$ckey_length)) : '';

$cryptkey = $keya.md5($keya.$keyc);

$key_length = strlen($cryptkey);

$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) :

sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;

$string_length = strlen($string);

$result = '';

$box = range(0, 255);

$rndkey = array();

for($i = 0; $i <= 255; $i++) {

$rndkey[$i] = ord($cryptkey[$i % $key_length]);

}

for($j = $i = 0; $i < 256; $i++) {

$j = ($j + $box[$i] + $rndkey[$i]) % 256;

$tmp = $box[$i];

$box[$i] = $box[$j];

$box[$j] = $tmp;

}

for($a = $j = $i = 0; $i < $string_length; $i++) {

$a = ($a + 1) % 256;

$j = ($j + $box[$a]) % 256;

$tmp = $box[$a];

$box[$a] = $box[$j];

$box[$j] = $tmp;

$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));

}

if($operation == 'DECODE') {

if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0)

&& substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {

return substr($result, 26);

} else {

return '';

}

} else {

return $keyc.str_replace('=', '', base64_encode($result));

}

}

/*

* 获取用户的浏览器信息,进行md5加密后返回

*

* @return string

*/

function get_client_info($md5=TRUE) {

$info = array(

'agent' => empty($_SERVER['HTTP_USER_AGENT']) ? 'user_agent' : $_SERVER['HTTP_USER_AGENT'],

'lang' => empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? 'gbk' : strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']),

);

$info = join('', $info);

return $md5 ? md5($info) : $info;

}

function doexit() {

$this->share->cncn_session_start();

$syn = '';

// 彻底清空session

$_SESSION = array();

if (ini_get("session.use_cookies")) {

$params = session_get_cookie_params();

setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"],

$params["secure"], $params["httponly"]

);

}

session_destroy();

setcookie("uc_auth", "", time() - 3600, '/', config_item('cookiedomain'));

setcookie("uch_auth", "", time() - 3600, '/', config_item('cookiedomain'));

echo $syn . '';

exit;

}

/**

* 获取uid获取相应的字段信息

*

* @param mixed $uids 需要获取字段的uid,可为多个,超过一个时用数组传递

* @param $type 需要获取的字段类型

*

*/

public function get_value_byid($uids, $type, $table = 'member') {

if (!$is_array = is_array($uids)) {

$uids = array($uids);

}

$return = array();

$this->cncndb = $this->load->database('cncndb', TRUE);

$query = $this->cncndb->select('uid, ' . $type)->from($table)->where_in('uid', $uids)->get();

foreach ($query->result_array() as $k => $v) {

$return[$v['uid']] = $v[$type];

}

return $is_array ? $return : array_pop($return);

}

/*

* 对用户登录的session进行处理

* @param int $uid 用户编号

* @param string $nickname 用户昵称,如果未传递,则根据uid从member表获取

* @param int $expire cookie保存时间,单位为秒,默认为NULL,即浏览器关闭后就失效

* @return void

*/

function set_login($uid, $nickname = '', $expire = NULL) {

// 保存session

$this->share->cncn_session_start();

$_SESSION = array(); // 设置登录session前,应该清空之前的session,避免用户会串在一起

$_SESSION['uid'] = $uid;

$_SESSION['nickname'] = $nickname; // 未传递时需要从用户库获取

$_SESSION['contact_name'] = $contact_name; // 未传递时需要从用户库获取

$_SESSION['user_type'] = $user_type; // 未传递时需要从用户库获取

$_SESSION['login_time'] = time();

}

}

以上就是谁能帮我把php代码翻译成java的代码。跪求急啊的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值