讲师中心 微信公众号
AI工具推荐 视频效率加速

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

夜敏吖_5146

夜敏吖_5146

发布时间:2016-05-26 08:18:57

|

1355人浏览过

|

来源于php中文网

原创

谁能帮我把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 . '<script>location.href="/";</script>';
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)!

java-enterprise
java-enterprise

Java企业开发专家,专注于Spring Boot、微服务架构和JVM优化。适用于:Java语言掌握、

下载

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

20

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

0

2026.10.10

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

20

2026.10.10

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

20

2026.10.10

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

20

2026.10.10

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

20

2026.10.10

C++条件判断语句怎么写
C++条件判断语句怎么写

C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

0

2026.10.10

C++变量怎么声明和赋值
C++变量怎么声明和赋值

C++变量是编写程序和存储数据的基础。本专题围绕变量声明、定义、初始化、赋值和类型选择等内容展开,帮助初学者理解不同变量的用法,并掌握在实际代码中定义和使用变量的方法。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn