<?php
error_reporting(E_ALL);
@set_time_limit( 60 );
$_SERVER['SCRIPT_NAME'] = substr(
linkex::get( 'PHP_SELF', $_SERVER, '' ),
0,
( strlen( linkex::get( 'PHP_SELF', $_SERVER, '' ) ) - strlen( linkex::get( 'PATH_INFO', $_SERVER, '' ) ) ) );
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . rtrim( '?' . linkex::get( 'QUERY_STRING', $_SERVER, '' ), '?' );
$errors = array();
if ( !function_exists( 'session_start' ) ) {
die( '[Error: Sessions is not available on your server, please enable them since LinkEX relies on sessions]' );
}
session_name( 'sid' );
session_start();
srand( (float)microtime() * 10000 );
mt_srand( (float)microtime() * 10000 );
define( 'BASEDIR', dirname( __FILE__ ) );
define( 'BASEURI', basename( __FILE__ ) );
define( 'BASEFOLDER', basename( dirname( __FILE__ ) ) );
define( 'BASEFILE', basename( __FILE__ ) );
$templatecolumns = array(
'added' => 'Date added',
'lastchecked' => 'Date checked',
'rpagerank' => 'Inbound Pagerank',
'rdom' => 'Inbound Domain',
'rdomip' => 'Inbound IP',
'rindexed' => 'Inbound Indexed Pages',
'lpagerank' => 'Outbound Pagerank',
'ldom' => 'Outbound Domain',
'ldomip' => 'Outbound IP',
'lindexed' => 'Outbound Indexed Pages',
'link' => 'Link',
'anchor' => 'Anchor',
'title' => 'Title',
'status' => 'Status'
);
// {{{ Session hijack check
$myuid = md5( linkex::get( 'REMOTE_ADDR', $_SERVER ) . linkex::get( 'HTTP_USER_AGENT', $_SERVER ) );
if ( ( $hash = linkex::get( 'hash', $_SESSION, false ) ) !== false ) {
if (
( $hash != $myuid ) ||
( ( ( $ss = linkex::get( 'sid', $_GET, false ) ) !== false ) && ( $ss != session_id() ) )
) {
session_destroy();
session_id( md5( uniqid() ) );
setcookie( 'sid', '', time() - 1, '/' );
linkex::redirect( BASEURI );
}
}
// }}}
// {{{ Strip slashes from userinput
if ( get_magic_quotes_gpc() ) {
function stripslashes_deep( $value ) {
if( is_array( $value ) ) {
$value = linkex::map( 'stripslashes_deep', $value );
} elseif ( !empty( $value ) && is_string( $value ) ) {
$value = stripslashes( $value );
}
return $value;
}
$_POST = stripslashes_deep($_POST);
$_GET = stripslashes_deep($_GET);
$_COOKIE = stripslashes_deep($_COOKIE);
} // }}}
// {{{ Std. includes
class linkex {
function arraychunk( $array, $size, $fill=false ) { // {{{
$i = $j = 0;
$retval=array();
if ( is_array( $size ) ) {
$i = $k = 0;
foreach( $size AS $s ) {
$s = ( $s == '' ) ? ( sizeof($array)-$i ) : intval( $s );
for( $n=0; $n<$s; $n++, $i++ ) {
$retval[$k][] = $array[$i];
}
$k++;
}
} else {
if ( $fill !== false ) {
$count = ceil(sizeof($array)/$size)*$size;
} else {
$count = sizeof( $array );
}
for ($i=0; $i<$count;$i++) {
if ($i>0 && ($i%$size)==0) {
$j++;
}
$retval[$j][$i%$size] = (empty($array[$i])) ? $fill : $array[$i];
}
}
return $retval;
} // }}}
function authorized() { // {{{
global $config;
$r=$u=$p=$a=false;
$remember = ( linkex::get( 'remember', $_REQUEST, 0 ) == 1 );
if ( ( $u = linkex::get( 'username', $_POST, false ) ) && ( $p = linkex::get( 'password', $_POST, false ) ) ) {
$r=true;
} else if ( $a = linkex::get( '_authcookie', $_SESSION, false ) ) {
$r=false;
} else if ( $a = linkex::get( '_authcookie', $_COOKIE, false ) ) {
$remember=true;
$r=false;