2009-07-03 05:16:39 +00:00
< ? php
error_reporting ( 4343 ); // errors and warnings
// disable filter.default
2009-07-03 10:10:40 +00:00
$filter = ( ! ereg ( '^(unsafe_raw)?$' , ini_get ( " filter.default " )) || ini_get ( " filter.default_flags " ));
2009-07-03 05:16:39 +00:00
if ( $filter ) {
2009-07-03 10:10:40 +00:00
foreach ( array ( '_GET' , '_POST' , '_COOKIE' , '_SERVER' ) as $val ) {
$unsafe = filter_input_array ( constant ( " INPUT $val " ), FILTER_UNSAFE_RAW );
if ( $unsafe ) {
$$val = $unsafe ;
}
}
2009-07-03 05:16:39 +00:00
}
// used only in compiled file
if ( isset ( $_GET [ " file " ])) {
header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + 365 * 24 * 60 * 60 ) . " GMT " );
if ( $_GET [ " file " ] == " favicon.ico " ) {
header ( " Content-Type: image/x-icon " );
2009-07-13 21:40:43 +00:00
echo base64_decode ( " compile_file('../adminer/favicon.ico', 'base64_encode'); " );
2009-07-03 05:16:39 +00:00
} elseif ( $_GET [ " file " ] == " default.css " ) {
header ( " Content-Type: text/css " );
2009-07-13 21:40:43 +00:00
?> compile_file('../adminer/default.css', 'minify_css');<?php
2009-07-03 05:16:39 +00:00
} elseif ( $_GET [ " file " ] == " functions.js " ) {
header ( " Content-Type: text/javascript " );
2009-07-13 21:40:43 +00:00
?> compile_file('../adminer/functions.js', 'JSMin::minify');compile_file('editing.js', 'JSMin::minify');<?php
2009-07-03 05:16:39 +00:00
} else {
header ( " Content-Type: image/gif " );
switch ( $_GET [ " file " ]) {
2009-07-13 21:40:43 +00:00
case " plus.gif " : echo base64_decode ( " compile_file('../adminer/plus.gif', 'base64_encode'); " ); break ;
case " cross.gif " : echo base64_decode ( " compile_file('../adminer/cross.gif', 'base64_encode'); " ); break ;
case " up.gif " : echo base64_decode ( " compile_file('../adminer/up.gif', 'base64_encode'); " ); break ;
case " down.gif " : echo base64_decode ( " compile_file('../adminer/down.gif', 'base64_encode'); " ); break ;
case " arrow.gif " : echo base64_decode ( " compile_file('../adminer/arrow.gif', 'base64_encode'); " ); break ;
2009-07-03 05:16:39 +00:00
}
}
exit ;
}
if ( ! ini_get ( " session.auto_start " )) {
// use specific session name to get own namespace
session_name ( " adminer_sid " );
session_set_cookie_params ( 0 , preg_replace ( '~\\?.*~' , '' , $_SERVER [ " REQUEST_URI " ])); //! use HttpOnly in PHP 5
session_start ();
}
if ( isset ( $_SESSION [ " coverage " ])) {
// coverage is used in tests and removed in compilation
function save_coverage () {
foreach ( xdebug_get_code_coverage () as $filename => $lines ) {
foreach ( $lines as $l => $val ) {
if ( ! $_SESSION [ " coverage " ][ $filename ][ $l ] || $val > 0 ) {
$_SESSION [ " coverage " ][ $filename ][ $l ] = $val ;
}
}
}
}
xdebug_start_code_coverage ( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
register_shutdown_function ( 'save_coverage' );
}
// disable magic quotes to be able to use database escaping function
if ( get_magic_quotes_gpc ()) {
$process = array ( & $_GET , & $_POST , & $_COOKIE );
while ( list ( $key , $val ) = each ( $process )) {
foreach ( $val as $k => $v ) {
unset ( $process [ $key ][ $k ]);
if ( is_array ( $v )) {
$process [ $key ][ stripslashes ( $k )] = $v ;
$process [] = & $process [ $key ][ stripslashes ( $k )];
} else {
$process [ $key ][ stripslashes ( $k )] = ( $filter ? $v : stripslashes ( $v ));
}
}
}
unset ( $process );
}
set_magic_quotes_runtime ( false );
2009-07-03 06:26:01 +00:00
2009-07-03 09:51:26 +00:00
$SELF = ( isset ( $_SERVER [ " REQUEST_URI " ]) ? preg_replace ( '~^[^?]*/([^?]*).*~' , '\\1' , $_SERVER [ " REQUEST_URI " ]) : $_SERVER [ " ORIG_PATH_INFO " ]) . '?' . ( strlen ( $_GET [ " server " ]) ? 'server=' . urlencode ( $_GET [ " server " ]) . '&' : '' ) . ( strlen ( $_GET [ " db " ]) ? 'db=' . urlencode ( $_GET [ " db " ]) . '&' : '' );
2009-07-11 19:45:57 +00:00
$on_actions = array ( " RESTRICT " , " CASCADE " , " SET NULL " , " NO ACTION " ); // used in foreign_keys()
include " ../adminer/include/version.inc.php " ;
include " ../adminer/include/functions.inc.php " ;
include " ../adminer/include/lang.inc.php " ;
include " ./lang/ $LANG .inc.php " ;
include " ./include/adminer.inc.php " ;
include " ../adminer/include/design.inc.php " ;
if ( isset ( $_GET [ " coverage " ])) {
include " ../adminer/coverage.inc.php " ;
}
include " ../adminer/include/pdo.inc.php " ;
include " ../adminer/include/mysql.inc.php " ;
2009-07-21 12:19:25 +00:00
include " ../adminer/include/auth.inc.php " ;
2009-07-11 19:45:57 +00:00
include " ./include/connect.inc.php " ;
include " ./include/editing.inc.php " ;
include " ./include/export.inc.php " ;
2009-07-16 14:06:33 +00:00
$confirm = " onclick= \" return confirm(' " . lang ( 'Are you sure?' ) . " '); \" " ;
$token = $_SESSION [ " tokens " ][ $_GET [ " server " ]];
$error = ( $_POST
2009-07-20 11:59:11 +00:00
? ( $_POST [ " token " ] == $token ? " " : lang ( 'Invalid CSRF token. Send the form again.' ))
2009-07-16 14:06:33 +00:00
: ( $_SERVER [ " REQUEST_METHOD " ] != " POST " ? " " : lang ( 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' )) // posted form with no data means that post_max_size exceeded because Adminer always sends token at least
);