' . "\n"; ?>
' . "\n"; echo ' ' . $GLOBALS['strSQLQuery'] . ' : ' . "\n"; if ($is_modify_link) { echo ' [' . '' . $GLOBALS['strEdit'] . '' . ']' . "\n"; } // end if echo '
' . "\n" . $query_base . "\n" . '' . "\n"; echo '' . "\n"; } // end if if (!empty($error_message)) { $error_message = htmlspecialchars($error_message); $error_message = ereg_replace("((\015\012)|(\015)|(\012)){3,}", "\n\n", $error_message); } echo '
' . "\n";
echo ' ' . $GLOBALS['strMySQLSaid'] . '
' . "\n";
echo '
' . "\n" . $error_message . "\n" . '' . "\n"; echo '' . "\n"; if (!empty($back_url)) { echo '' . $GLOBALS['strBack'] . ''; } echo "\n"; include('./footer.inc.php3'); exit(); } // end of the 'mysql_die()' function /** * Use mysql_connect() or mysql_pconnect()? */ $connect_func = ($cfgPersistentConnections) ? 'mysql_pconnect' : 'mysql_connect'; $dblist = array(); /** * Gets the valid servers list and parameters */ reset($cfgServers); while (list($key, $val) = each($cfgServers)) { // Don't use servers with no hostname if (empty($val['host'])) { unset($cfgServers[$key]); } } if (empty($server) || !isset($cfgServers[$server]) || !is_array($cfgServers[$server])) { $server = $cfgServerDefault; } /** * If no server is selected, make sure that $cfgServer is empty (so that * nothing will work), and skip server authentication. * We do NOT exit here, but continue on without logging into any server. * This way, the welcome page will still come up (with no server info) and * present a choice of servers in the case that there are multiple servers * and '$cfgServerDefault = 0' is set. */ if ($server == 0) { $cfgServer = array(); } /** * Otherwise, set up $cfgServer and do the usual login stuff. */ else if (isset($cfgServers[$server])) { $cfgServer = $cfgServers[$server]; // Check how the config says to connect to the server $server_port = (empty($cfgServer['port'])) ? '' : ':' . $cfgServer['port']; if (strtolower($cfgServer['connect_type']) == 'tcp') { $cfgServer['socket'] = ''; } $server_socket = (empty($cfgServer['socket']) || PHP_INT_VERSION < 30010) ? '' : ':' . $cfgServer['socket']; // The user can work with only some databases if (isset($cfgServer['only_db']) && !empty($cfgServer['only_db'])) { if (is_array($cfgServer['only_db'])) { $dblist = $cfgServer['only_db']; } else { $dblist[] = $cfgServer['only_db']; } } // Advanced authentication is required if ($cfgServer['adv_auth']) { // Grabs the $PHP_AUTH_USER variable whatever are the values of the // 'register_globals' and the 'variables_order' directives if (empty($PHP_AUTH_USER)) { if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['PHP_AUTH_USER'])) { $PHP_AUTH_USER = $HTTP_SERVER_VARS['PHP_AUTH_USER']; } else if (isset($REMOTE_USER)) { $PHP_AUTH_USER = $REMOTE_USER; } else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['REMOTE_USER'])) { $PHP_AUTH_USER = $HTTP_ENV_VARS['REMOTE_USER']; } else if (@getenv('REMOTE_USER')) { $PHP_AUTH_USER = getenv('REMOTE_USER'); } // Fix from Matthias Fichtner for WebSite Professional - Part 1 else if (isset($AUTH_USER)) { $PHP_AUTH_USER = $AUTH_USER; } else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['AUTH_USER'])) { $PHP_AUTH_USER = $HTTP_ENV_VARS['AUTH_USER']; } else if (@getenv('AUTH_USER')) { $PHP_AUTH_USER = getenv('AUTH_USER'); } } // Grabs the $PHP_AUTH_PW variable whatever are the values of the // 'register_globals' and the 'variables_order' directives if (empty($PHP_AUTH_PW)) { if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['PHP_AUTH_PW'])) { $PHP_AUTH_PW = $HTTP_SERVER_VARS['PHP_AUTH_PW']; } else if (isset($REMOTE_PASSWORD)) { $PHP_AUTH_PW = $REMOTE_PASSWORD; } else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['REMOTE_PASSWORD'])) { $PHP_AUTH_PW = $HTTP_ENV_VARS['REMOTE_PASSWORD']; } else if (@getenv('REMOTE_PASSWORD')) { $PHP_AUTH_PW = getenv('REMOTE_PASSWORD'); } // Fix from Matthias Fichtner for WebSite Professional - Part 2 else if (isset($AUTH_PASSWORD)) { $PHP_AUTH_PW = $AUTH_PASSWORD; } else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['AUTH_PASSWORD'])) { $PHP_AUTH_USER = $HTTP_ENV_VARS['AUTH_PASSWORD']; } else if (@getenv('AUTH_PASSWORD')) { $PHP_AUTH_USER = getenv('AUTH_PASSWORD'); } } // Grabs the $old_usr variable whatever are the values of the // 'register_globals' and the 'variables_order' directives if (empty($old_usr) && !empty($HTTP_GET_VARS) && isset($HTTP_GET_VARS['old_usr'])) { $old_usr = $HTTP_GET_VARS['old_usr']; } // First load -> checks if authentication is required if (!isset($old_usr)) { if (empty($PHP_AUTH_USER)) { $do_auth = TRUE; } else { $do_auth = FALSE; } } // Else ensure the username is not the same else { // force user to enter a different username if (isset($PHP_AUTH_USER) && $old_usr == $PHP_AUTH_USER) { $do_auth = TRUE; } else { $do_auth = FALSE; } } // Calls the authentication window or validates user's login if ($do_auth) { auth(); } else { $bkp_track_err = (PHP_INT_VERSION >= 40000) ? @ini_set('track_errors', 1) : ''; $dbh = @$connect_func( $cfgServer['host'] . $server_port . $server_socket, $cfgServer['stduser'], $cfgServer['stdpass'] ); if ($dbh == FALSE) { if (mysql_error()) { $conn_error = mysql_error(); } else if (isset($php_errormsg)) { $conn_error = $php_errormsg; } else { $conn_error = 'Cannot connect: invalid settings.'; } if (PHP_INT_VERSION >= 40000) { @ini_set('track_errors', $bkp_track_err); } $local_query = $connect_func . '(' . $cfgServer['host'] . $server_port . $server_socket . ', ' . $cfgServer['stduser'] . ', ' . $cfgServer['stdpass'] . ')'; mysql_die($conn_error, $local_query, FALSE); } else if (PHP_INT_VERSION >= 40000) { @ini_set('track_errors', $bkp_track_err); } $PHP_AUTH_USER = str_replace('\'', '\\\'', $PHP_AUTH_USER); $PHP_AUTH_PW = str_replace('\'', '\\\'', $PHP_AUTH_PW); $auth_query = 'SELECT User, Password, Select_priv ' . 'FROM mysql.user ' . 'WHERE ' . 'User = \'' . $PHP_AUTH_USER . '\' ' . 'AND Password = PASSWORD(\'' . $PHP_AUTH_PW . '\')'; $rs = mysql_query($auth_query, $dbh) or mysql_die('', $auth_query, FALSE); // Invalid login -> relog if (@mysql_numrows($rs) <= 0) { auth(); } // Seems to be a valid login... else { $row = mysql_fetch_array($rs); mysql_free_result($rs); // Correction uva 19991215 // Previous code assumed database "mysql" admin table "db" // column "db" contains literal name of user database, and // works if so. // Mysql usage generally (and uva usage specifically) // allows this column to contain regular expressions (we // have all databases owned by a given // student/faculty/staff beginning with user i.d. and // governed by default by a single set of privileges with // regular expression as key). This breaks previous code. // This maintenance is to fix code to work correctly for // regular expressions. if ($row['Select_priv'] != 'Y') { // lem9: User can be blank (anonymous user) $local_query = 'SELECT DISTINCT Db FROM mysql.db WHERE Select_priv = \'Y\' AND (User = \'' . $PHP_AUTH_USER . '\' OR User = \'\')'; $rs = mysql_query($local_query) or mysql_die('', $local_query, FALSE); if (@mysql_numrows($rs) <= 0) { $local_query = 'SELECT DISTINCT Db FROM mysql.tables_priv WHERE Table_priv LIKE \'%Select%\' AND User = \'' . $PHP_AUTH_USER . '\''; $rs = mysql_query($local_query) or mysql_die('', $local_query, FALSE); if (@mysql_numrows($rs) <= 0) { auth(); } else { while ($row = mysql_fetch_array($rs)) { $dblist[] = $row['Db']; } mysql_free_result($rs); } } else { // Will use as associative array of the following 2 // code lines: // the 1st is the only line intact from before // correction, // the 2nd replaces $dblist[] = $row['Db']; $uva_mydbs = array(); // Code following those 2 lines in correction // continues populating $dblist[], as previous code // did. But it is now populated with actual // database names instead of with regular // expressions. while ($row = mysql_fetch_array($rs)) { $uva_mydbs[$row['Db']] = 1; } mysql_free_result($rs); $uva_alldbs = mysql_list_dbs(); while ($uva_row = mysql_fetch_array($uva_alldbs)) { $uva_db = $uva_row[0]; if (isset($uva_mydbs[$uva_db]) && 1 == $uva_mydbs[$uva_db]) { $dblist[] = $uva_db; $uva_mydbs[$uva_db] = 0; } else { reset($uva_mydbs); while (list($uva_matchpattern, $uva_value) = each($uva_mydbs)) { $uva_regex = ereg_replace('%', '.+', $uva_matchpattern); // Fixed db name matching // 2000-08-28 -- Benjamin Gandon if (ereg('^' . $uva_regex . '$', $uva_db)) { $dblist[] = $uva_db; break; } } // end while } // end if ... else .... } // end while mysql_free_result($uva_alldbs); } // end else } // end if } // end else } // Validation achived -> store user's login/password $cfgServer['user'] = $PHP_AUTH_USER; $cfgServer['password'] = $PHP_AUTH_PW; } // end Advanced authentication // Do connect to the user's database $bkp_track_err = (PHP_INT_VERSION >= 40000) ? @ini_set('track_errors', 1) : ''; $link = @$connect_func( $cfgServer['host'] . $server_port . $server_socket, $cfgServer['user'], $cfgServer['password'] ); if ($link == FALSE) { if (mysql_error()) { $conn_error = mysql_error(); } else if (isset($php_errormsg)) { $conn_error = $php_errormsg; } else { $conn_error = 'Cannot connect: invalid settings.'; } if (PHP_INT_VERSION >= 40000) { @ini_set('track_errors', $bkp_track_err); } $local_query = $connect_func . '(' . $cfgServer['host'] . $server_port . $server_socket . ', ' . $cfgServer['user'] . ', ' . $cfgServer['password'] . ')'; mysql_die($conn_error, $local_query, FALSE); } else if (PHP_INT_VERSION >= 40000) { @ini_set('track_errors', $bkp_track_err); } } // end server connecting /** * Missing server hostname */ else { echo $strHostEmpty; } /** * Gets constants that defines the PHP, MySQL... releases. * This include must be located physically before any code that needs to * reference the constants, else PHP 3.0.16 won't be happy; and must be * located after we are connected to db to get the MySql version. */ include('./libraries/defines.lib.php3'); /* ----------------------- Set of misc functions ----------------------- */ /** * Determines the font sizes to use depending on the os and browser of the * user. * * This function is based on an article from phpBuilder (see * http://www.phpbuilder.net/columns/tim20000821.php3). * * @return boolean always true * * @global string the standard font size * @global string the font size for titles * @global string the small font size * @global string the smallest font size * * @access public * * @version 1.1 */ function set_font_sizes() { global $font_size, $font_bigger, $font_smaller, $font_smallest; // IE (<6)/Opera for win case: needs smaller fonts than anyone else if (USR_OS == 'Win' && (USR_BROWSER_AGENT == 'IE' || USR_BROWSER_AGENT == 'OPERA')) { $font_size = 'x-small'; $font_bigger = 'large'; $font_smaller = (USR_BROWSER_AGENT == 'IE' && USR_BROWSER_VER < 5.5) ? '80%' : '90%'; $font_smallest = '7pt'; } // IE6 and other browsers for win case else if (USR_OS == 'Win') { $font_size = 'small'; $font_bigger = 'large '; $font_smaller = 'x-small'; $font_smallest = 'x-small'; } // Mac browsers: need bigger fonts else if (USR_OS == 'Mac') { $font_size = 'medium'; $font_bigger = 'x-large '; $font_smaller = 'small'; $font_smallest = 'x-small'; } // Other cases else { $font_size = 'small'; $font_bigger = 'large '; $font_smaller = 'x-small'; $font_smallest = 'x-small'; } return true; } // end of the 'set_font_sizes()' function /** * Adds backquotes on both sides of a database, table or field name. * Since MySQL 3.23.6 this allows to use non-alphanumeric characters in * these names. * * @param string the database, table or field name to "backquote" * @param boolean a flag to bypass this function (used by dump functions) * * @return string the "backquoted" database, table or field name if the * current MySQL release is >= 3.23.6, the original one * else * * @access public */ function backquote($a_name, $do_it = TRUE) { if ($do_it && MYSQL_INT_VERSION >= 32306 && !empty($a_name) && $a_name != '*') { return '`' . $a_name . '`'; } else { return $a_name; } } // end of the 'backquote()' function /** * Add slashes before "'" and "\" characters so a value containing them can * be used in a sql comparison. * * @param string the string to slash * @param boolean whether the string will be used in a 'LIKE' clause * (it then requires two more escaped sequences) or not * * @return string the slashed string * * @access public */ function sql_addslashes($a_string = '', $is_like = FALSE) { if ($is_like) { $a_string = str_replace('\\', '\\\\\\\\', $a_string); } else { $a_string = str_replace('\\', '\\\\', $a_string); } $a_string = str_replace('\'', '\\\'', $a_string); return $a_string; } // end of the 'sql_addslashes()' function /** * Format a string so it can be passed to a javascript function. * This function is used to displays a javascript confirmation box for * "DROP/DELETE/ALTER" queries. * * @param string the string to format * @param boolean whether to add backquotes to the string or not * * @return string the formated string * * @access public */ function js_format($a_string = '', $add_backquotes = TRUE) { $a_string = str_replace('"', '"', $a_string); $a_string = str_replace('#', '\\#', addslashes($a_string)); $a_string = str_replace("\012", '\\\\n', $a_string); $a_string = str_replace("\015", '\\\\r', $a_string); return (($add_backquotes) ? backquote($a_string) : $a_string); } // end of the 'sql_addslashes()' function /** * Defines the
|
" and not " ") $new_line = ' ' . "\n" . ' '; $query_base = htmlspecialchars($GLOBALS['sql_query']); $query_base = ereg_replace("((\015\012)|(\015)|(\012))+", $new_line, $query_base); if (!isset($GLOBALS['show_query']) || $GLOBALS['show_query'] != 'y') { if (!isset($GLOBALS['goto'])) { $edit_target = (isset($GLOBALS['table'])) ? 'tbl_properties.php3' : 'db_details.php3'; } else if ($GLOBALS['goto'] != 'main.php3') { $edit_target = $GLOBALS['goto']; } else { $edit_target = ''; } if ($edit_target == 'tbl_properties.php3') { $edit_link = '' . $GLOBALS['strEdit'] . ''; } else if ($edit_target != '') { $edit_link = '' . $GLOBALS['strEdit'] . ''; } } if (!empty($edit_target)) { echo ' ' . $GLOBALS['strSQLQuery'] . ' : [' . $edit_link . '] ' . "\n"; } else { echo ' ' . $GLOBALS['strSQLQuery'] . ' : ' . "\n"; } echo ' ' . $query_base; // If a 'LIMIT' clause has been programatically added to the query // displays it if (!empty($GLOBALS['sql_limit_to_append'])) { echo $GLOBALS['sql_limit_to_append']; } echo "\n"; ?> |