00001 <?php
00002
00003
00004
00008 require_once('./libraries/read_dump.lib.php');
00009 require_once('./libraries/grab_globals.lib.php');
00010 require_once('./libraries/common.lib.php');
00011
00012 if (!isset($db)) {
00013 $db = '';
00014 }
00015
00019 @set_time_limit($cfg['ExecTimeLimit']);
00020
00021
00025 if (!isset($goto) || !preg_match('@^(db_details|tbl_properties)(_[a-z]*)?\.php$@i', $goto)) {
00026 $goto = 'db_details.php';
00027 }
00028 $err_url = $goto
00029 . '?' . PMA_generate_common_url($db)
00030 . (preg_match('@^tbl_properties(_[a-z]*)?\.php$@', $goto) ? '&table=' . urlencode($table) : '');
00031
00032
00036 $view_bookmark = 0;
00037 $sql_bookmark = isset($sql_bookmark) ? $sql_bookmark : '';
00038 $sql_query = isset($sql_query) ? $sql_query : '';
00039 if (!empty($sql_localfile) && !empty($cfg['UploadDir'])) {
00040 if (substr($cfg['UploadDir'], -1) != '/') {
00041 $cfg['UploadDir'] .= '/';
00042 }
00043 $sql_file = $cfg['UploadDir'] . $sql_localfile;
00044 } else if (empty($sql_file)) {
00045 $sql_file = 'none';
00046 }
00047
00051 if (!empty($id_bookmark)) {
00052 require_once('./libraries/bookmark.lib.php');
00053 switch ($action_bookmark) {
00054 case 0:
00055 $sql_query = PMA_queryBookmarks($db, $cfg['Bookmark'], $id_bookmark);
00056 if (isset($bookmark_variable) && !empty($bookmark_variable)) {
00057 $sql_query = preg_replace('|/\*(.*)\[VARIABLE\](.*)\*/|imsU', '${1}' . PMA_sqlAddslashes($bookmark_variable) . '${2}', $sql_query);
00058 }
00059 break;
00060 case 1:
00061 $sql_query = PMA_queryBookmarks($db, $cfg['Bookmark'], $id_bookmark);
00062 $view_bookmark = 1;
00063 break;
00064 case 2:
00065 $sql_query = PMA_deleteBookmarks($db, $cfg['Bookmark'], $id_bookmark);
00066 break;
00067 }
00068 }
00069
00070
00074
00075 if ($sql_file != 'none') {
00076
00077
00078
00079 if (file_exists($sql_file)
00080 && ((isset($sql_localfile) && $sql_file == $cfg['UploadDir'] . $sql_localfile) || is_uploaded_file($sql_file))) {
00081 $open_basedir = @ini_get('open_basedir');
00082
00083 if (!isset($sql_file_compression)) $sql_file_compression = '';
00084
00085
00086
00087
00088
00089 if (!empty($open_basedir)) {
00090
00091 $tmp_subdir = (PMA_IS_WINDOWS ? '.\\tmp\\' : './tmp/');
00092
00093
00094 if (!is_writeable($tmp_subdir)) {
00095 $sql_query = PMA_readFile($sql_file, $sql_file_compression);
00096 if ($sql_query == FALSE) {
00097 $message = $strFileCouldNotBeRead;
00098 }
00099 }
00100 else {
00101 $sql_file_new = $tmp_subdir . basename($sql_file);
00102 move_uploaded_file($sql_file, $sql_file_new);
00103 $sql_query = PMA_readFile($sql_file_new, $sql_file_compression);
00104 if ($sql_query == FALSE) {
00105 $message = $strFileCouldNotBeRead;
00106 }
00107 unlink($sql_file_new);
00108 }
00109 }
00110 else {
00111
00112 $sql_query = PMA_readFile($sql_file, $sql_file_compression);
00113 if ($sql_query == FALSE) {
00114 $message = $strFileCouldNotBeRead;
00115 }
00116 }
00117
00118
00119 if ($cfg['AllowAnywhereRecoding'] && $allow_recoding
00120 && isset($charset_of_file) && $charset_of_file != $charset) {
00121 $sql_query = PMA_convert_string($charset_of_file, $charset, $sql_query);
00122 }
00123 }
00124 }
00125
00126
00127 if (@function_exists('PMA_kanji_str_conv')) {
00128 $sql_tmp = trim($sql_query);
00129 PMA_change_enc_order();
00130 $sql_query = PMA_kanji_str_conv($sql_tmp, $knjenc, isset($xkana) ? $xkana : '');
00131 PMA_change_enc_order();
00132 } else {
00133 $sql_query = trim($sql_query);
00134 }
00135
00136
00137
00138 if (!empty($prev_sql_query)) {
00139 $prev_sql_query = urldecode($prev_sql_query);
00140 if ($sql_query == trim(htmlspecialchars($prev_sql_query))) {
00141 $sql_query = $prev_sql_query;
00142 }
00143 }
00144
00145
00146 if (!$cfg['AllowUserDropDatabase']
00147 && preg_match('@DROP[[:space:]]+(IF EXISTS[[:space:]]+)?DATABASE @i', $sql_query)) {
00148
00149
00150
00151 $result = @PMA_mysql_query('USE mysql');
00152 if (PMA_mysql_error()) {
00153 require_once('./header.inc.php');
00154 PMA_mysqlDie($strNoDropDatabases, '', '', $err_url);
00155 }
00156 }
00157 define('PMA_CHK_DROP', 1);
00158
00162 if (isset($SQLbookmark) && $sql_query != '') {
00163 require_once('./libraries/bookmark.lib.php');
00164 $bfields = array(
00165 'dbase' => $db,
00166 'user' => $cfg['Bookmark']['user'],
00167 'query' => urlencode($sql_query),
00168 'label' => $bkm_label
00169 );
00170
00171 PMA_addBookmarks($bfields, $cfg['Bookmark'], (isset($bkm_all_users) && $bkm_all_users == 'true' ? true : false));
00172 }
00173
00177 if ($sql_query != '') {
00178 $pieces = array();
00179 PMA_splitSqlFile($pieces, $sql_query, PMA_MYSQL_INT_VERSION);
00180 $pieces_count = count($pieces);
00181 if ($pieces_count > 1) {
00182 $is_multiple = TRUE;
00183 }
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193 if (!$cfg['VerboseMultiSubmit']) {
00194
00195 $max_nofile_length = 500;
00196 $max_nofile_pieces = 0;
00197
00198
00199 $max_file_length = 10000;
00200 $max_file_pieces = 10;
00201 } else {
00202
00203 $max_nofile_length = 0;
00204 $max_nofile_pieces = 50;
00205
00206
00207 $max_file_length = 50000;
00208 $max_file_pieces = 50;
00209 }
00210
00211 if ($sql_file != 'none' &&
00212 (($max_file_pieces != 0 && ($pieces_count > $max_file_pieces))
00213 ||
00214 ($max_file_length != 0 && (strlen($sql_query) > $max_file_length)))) {
00215
00216 $sql_query_cpy = $sql_query = '';
00217 $save_bandwidth = TRUE;
00218 $save_bandwidth_length = $max_file_length;
00219 $save_bandwidth_pieces = $max_file_pieces;
00220 } else {
00221
00222 $sql_query_cpy = implode(";\n", $pieces) . ';';
00223
00224
00225 if (($max_nofile_length != 0 && (strlen($sql_query_cpy) > $max_nofile_length))
00226 || ($max_nofile_pieces != 0 && $pieces_count > $max_nofile_pieces)) {
00227 $sql_query_cpy = $sql_query = '';
00228 $save_bandwidth = TRUE;
00229 $save_bandwidth_length = $max_nofile_length;
00230 $save_bandwidth_pieces = $max_nofile_pieces;
00231 }
00232 }
00233
00234
00235 if ($view_bookmark == 0) {
00236
00237 if ($pieces_count == 1 && !empty($pieces[0])) {
00238 $sql_query = $pieces[0];
00239 if (preg_match('@^(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@i', $sql_query)) {
00240 $reload = 1;
00241 }
00242 require('./sql.php');
00243 }
00244
00245
00246 else if (PMA_mysql_select_db($db)) {
00247 $mult = TRUE;
00248 $info_msg = '';
00249 $info_count = 0;
00250
00251 for ($i = 0; $i < $pieces_count; $i++) {
00252 $a_sql_query = $pieces[$i];
00253 if ($i == $pieces_count - 1 && preg_match('@^(SELECT|SHOW)@i', $a_sql_query)) {
00254 $complete_query = $sql_query;
00255 $display_query = $sql_query;
00256 $sql_query = $a_sql_query;
00257 require('./sql.php');
00258 }
00259
00260 $result = PMA_mysql_query($a_sql_query);
00261 if ($result == FALSE) {
00262 if (isset($my_die) && $cfg['IgnoreMultiSubmitErrors']) {
00263 $my_die[] = "\n\n" . $a_sql_query;
00264 } elseif ($cfg['IgnoreMultiSubmitErrors']) {
00265 $my_die = array();
00266 $my_die[] = $a_sql_query;
00267 } else {
00268 $my_die = $a_sql_query;
00269 }
00270
00271 if ($cfg['VerboseMultiSubmit']) {
00272 $info_msg .= $a_sql_query . '; # ' . $strError . "\n";
00273 $info_count++;
00274 }
00275
00276 if (!$cfg['IgnoreMultiSubmitErrors']) {
00277 break;
00278 }
00279 } else if ($cfg['VerboseMultiSubmit']) {
00280 $a_num_rows = (int)@mysql_num_rows($result);
00281 $a_aff_rows = (int)@mysql_affected_rows();
00282 if ($a_num_rows > 0) {
00283 $a_rows = $a_num_rows;
00284 $a_switch = $strRows . ': ';
00285 } elseif ($a_aff_rows > 0) {
00286 $a_rows = $a_aff_rows;
00287 $a_switch = $strAffectedRows;;
00288 } else {
00289 $a_rows = '';
00290 $a_switch = $strEmptyResultSet;
00291 }
00292
00293 $info_msg .= $a_sql_query . "; # " . $a_switch . $a_rows . "\n";
00294 $info_count++;
00295 }
00296
00297 if (!isset($reload) && preg_match('@^(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@i', $a_sql_query)) {
00298 $reload = 1;
00299 }
00300 }
00301
00302 if ($cfg['VerboseMultiSubmit'] && strlen($info_msg) > 0 &&
00303 ((!isset($save_bandwidth) || $save_bandwidth == FALSE) ||
00304 ($save_bandwidth_pieces == 0 && strlen($info_msg) < $save_bandwidth_length) ||
00305 ($save_bandwidth_length == 0 && $info_count < $save_bandwidth_pieces))) {
00306 $sql_query = $info_msg;
00307 }
00308
00309 }
00310 }
00311 unset($pieces);
00312 }
00313
00314
00315
00319 if (isset($my_die)) {
00320 $js_to_run = 'functions.js';
00321 require_once('./header.inc.php');
00322 if (is_array($my_die)) {
00323 foreach($my_die AS $key => $die_string) {
00324 PMA_mysqlDie('', $die_string, '', $err_url, FALSE);
00325 echo '<hr />';
00326 }
00327 } else {
00328 PMA_mysqlDie('', $my_die, '', $err_url, TRUE);
00329 }
00330 }
00331
00332
00336
00337 if (isset($table) && $table == '') {
00338 unset($table);
00339 }
00340 if (isset($db) && $db == '') {
00341 unset($db);
00342 }
00343
00344 $is_db = $is_table = FALSE;
00345 if ($goto == 'tbl_properties.php') {
00346 if (!isset($table)) {
00347 $goto = 'db_details.php';
00348 } else {
00349 PMA_mysql_select_db($db);
00350 $is_table = @PMA_mysql_query('SHOW TABLES LIKE \'' . PMA_sqlAddslashes($table, TRUE) . '\'');
00351 if (!($is_table && @mysql_numrows($is_table))) {
00352 $goto = 'db_details.php';
00353 unset($table);
00354 }
00355 }
00356 }
00357 if ($goto == 'db_details.php') {
00358 if (isset($table)) {
00359 unset($table);
00360 }
00361 if (!isset($db)) {
00362 $goto = 'main.php';
00363 } else {
00364 $is_db = @PMA_mysql_select_db($db);
00365 if (!$is_db) {
00366 $goto = 'main.php';
00367 unset($db);
00368 }
00369 }
00370 }
00371
00372 if (!empty($id_bookmark) && $action_bookmark == 2) {
00373 $message = $strBookmarkDeleted;
00374 } else if (!isset($sql_query_cpy)) {
00375 if (empty($message)) {
00376 $message = $strNoQuery;
00377 }
00378 } else if ($sql_query_cpy == '') {
00379 $message = "$strSuccess :<br />$strTheContent ($pieces_count $strInstructions) ";
00380 } else {
00381 $message = $strSuccess;
00382 }
00383
00384 if ($goto == 'db_details.php' || $goto == 'tbl_properties.php') {
00385 $js_to_run = 'functions.js';
00386 }
00387 if ($goto != 'main.php') {
00388 require_once('./header.inc.php');
00389 }
00390 $active_page = $goto;
00391 require('./' . $goto);
00392 ?>