<?php
function
i_array_column(
$input
,
$columnKey
,
$indexKey
=null){
if
(!function_exists('array_column')){
$columnKeyIsNumber
= (
is_numeric
(
$columnKey
))?true:false;
$indexKeyIsNull
= (
is_null
(
$indexKey
))?true :false;
$indexKeyIsNumber
= (
is_numeric
(
$indexKey
))?true:false;
$result
=
array
();
foreach
((
array
)
$input
as
$key
=>
$row
){
if
(
$columnKeyIsNumber
){
$tmp
=
array_slice
(
$row
,
$columnKey
, 1);
$tmp
= (
is_array
(
$tmp
) && !
empty
(
$tmp
))?current(
$tmp
):null;
}
else
{
$tmp
= isset(
$row
[
$columnKey
])?
$row
[
$columnKey
]:null;
}
if
(!
$indexKeyIsNull
){
if
(
$indexKeyIsNumber
){
$key
=
array_slice
(
$row
,
$indexKey
, 1);
$key
= (
is_array
(
$key
) && !
empty
(
$key
))?current(
$key
):null;
$key
=
is_null
(
$key
)?0:
$key
;
}
else
{
$key
= isset(
$row
[
$indexKey
])?
$row
[
$indexKey
]:0;
}
}
$result
[
$key
] =
$tmp
;
}
return
$result
;
}
else
{
return
array_column(
$input
,
$columnKey
,
$indexKey
);
}
}
function
randcode(
$len
,
$mode
= 2){
$rcode
= '';
switch
(
$mode
){
case
1:
$chars
= 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnpqrstuvwxyz';
break
;
case
2:
$chars
= '0123456789';
break
;
case
3:
$chars
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
break
;
case
4:
$chars
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()';
break
;
}
$count
=
strlen
(
$chars
) - 1;
mt_srand((double)microtime() * 1000000);
for
(
$i
= 0;
$i
<
$len
;
$i
++) {
$rcode
.=
$chars
[mt_rand(0,
$count
)];
}
return
$rcode
;
}
function
authcode(
$string
,
$operation
= 'DECODE',
$key
= '',
$expiry
= 0) {
$ckey_length
= 4;
$key
= md5(
$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
));
}
}