Pete Kelly finally fixed all the special characters problems

This commit is contained in:
Loïc Chapeaux
2001-05-18 21:29:45 +00:00
parent a12bf1adfd
commit dbbbe7757f
3 changed files with 118 additions and 108 deletions

View File

@@ -5,12 +5,21 @@ phpMyAdmin - Changelog
$Id$
$Source$
2001-05-18 Pete Kelly <webmaster@trafficg.com>
* db_readdump.php3 & lib.inc.php3: finally fixed all the special characters
problems (Bug #421889)
2001-05-18 Lo<4C>c Chapeaux <lolo@phpheaven.net>
* sql.php3, lines 65: fixed a warning
* tbl_select.php3: fixed a bug if number of registrations to display is not
specified (bug #424278 and patch from Alain Brissaud)
2001-05-15 Marc Delisle <lem9@users.sourceforge.net>
* support key length in table copy/dump
* support key length in table copy/dump
* doc. changes for Lo<4C>c
2001-05-15 Armel Fauveau <armel.fauveau@globalis-ms.com>
* Added "Bookmarked SQL-query" combo box when you click on a table (Feature #423065)
* Added "Bookmarked SQL-query" combo box when you click on a table (Feature #423065)
2001-05-11 Lo<4C>c Chapeaux <lolo@phpheaven.net>
* lib.inc.php3, lines 76, 81 and 612: fixed a bug if a field contains html

View File

@@ -3,67 +3,77 @@
@set_time_limit(10000);
require("grab_globals.inc.php3");
require("lib.inc.php3");
// set up default values
$view_bookmark = 0;
$sql_bookmark = isset($sql_bookmark) ? $sql_bookmark : "";
$sql_query = isset($sql_query) ? $sql_query : "";
$sql_file = isset($sql_file) ? $sql_file : "none";
include("lib.inc.php3");
// Bookmark Support
// Bookmark Support
if(!empty($id_bookmark)) {
switch($action_bookmark) {
case 0:
$sql_query = query_bookmarks($db, $cfgBookmark, $id_bookmark);
break;
case 1:
$sql_query = query_bookmarks($db, $cfgBookmark, $id_bookmark);
break;
case 2:
$sql_query = delete_bookmarks($db, $cfgBookmark, $id_bookmark);
break;
}
}
switch($action_bookmark) {
case 0:
$sql_query = query_bookmarks($db, $cfgBookmark, $id_bookmark);
break;
//
case 1:
$sql_query = query_bookmarks($db, $cfgBookmark, $id_bookmark);
$view_bookmark = 1;
break;
if(!empty($sql_file) && $sql_file != "none" && ereg("^php[0-9A-Za-z_.-]+$", basename($sql_file))) {
$sql_query = fread(fopen($sql_file, "r"), filesize($sql_file));
}
else if (get_magic_quotes_gpc()) {
$sql_query = stripslashes($sql_query);
}
$pieces = split_string($sql_query, ";");
if (count($pieces) == 1 && !empty($pieces[0]) && $action_bookmark==0) {
$sql_query = addslashes(trim($pieces[0]));
// Enforce reloading of the left frame when a table has to be created
if (eregi('^CREATE TABLE (.+)', $sql_query)) {
$reload = "true";
case 2:
$sql_query = delete_bookmarks($db, $cfgBookmark, $id_bookmark);
break;
}
include ("sql.php3");
exit;
}
include("header.inc.php3");
for ($i=0; $i<count($pieces); ++$i) {
$pieces[$i] = trim($pieces[$i]);
if(!empty($pieces[$i])) {
$result = mysql_db_query ($db, $pieces[$i]) or mysql_die();
// Enforce reloading of the left frame when a table has to be created
if (!isset($reload) && eregi('^CREATE TABLE (.+)', $pieces[$i])) {
$reload = "true";
if($sql_file != "none") {
// do file upload
if(!empty($sql_file) && $sql_file != "none" && ereg("^php[0-9A-Za-z_.-]+$", basename($sql_file))) {
$sql_query = fread(fopen($sql_file, "r"), filesize($sql_file));
if (get_magic_quotes_runtime() == 1) $sql_query = stripslashes($sql_query);
}
}
else {
if(get_magic_quotes_gpc() != 0 && get_magic_quotes_runtime() != 0) $sql_query = stripslashes($sql_query);
if(get_magic_quotes_gpc() == 1 && get_magic_quotes_runtime() == 0) $sql_query = stripslashes($sql_query);
}
$sql_query = trim($sql_query);
$sql_query_cpy = $sql_query; // copy the query, used for display purposes only
if($sql_query != "") {
$sql_query = remove_remarks($sql_query);
$pieces = split_sql_file($sql_query,";");
if (count($pieces) == 1 && !empty($pieces[0]) && $view_bookmark == 0) {
$sql_query = addslashes(trim($pieces[0]));
if (eregi('^CREATE TABLE (.+)', $sql_query)) $reload = "true";
include ("sql.php3");
exit;
}
include("header.inc.php3");
if(mysql_select_db($db)) {
// run multiple queries
for ($i=0; $i<count($pieces); $i++) {
$sql = trim($pieces[$i]);
if(!empty($sql) and $sql[0] != "#") $result = mysql_query($sql) or mysql_die2($sql);
if (!isset($reload) && eregi('^CREATE TABLE (.+)', $pieces[$i])) $reload = "true";
}
}
}
//$sql_query = stripslashes($sql_query);
$sql_query = $sql_query;
// copy the original query back for display purposes
$sql_query = $sql_query_cpy;
$message = $strSuccess;
include("db_details.php3");
?>

View File

@@ -628,54 +628,37 @@ function show_message($message) {
<?php
}
function split_string($sql, $delimiter) {
// Output the sql error and corresonding line of sql
// Version 2 18th May 2001 - Last Modified By Pete Kelly
function mysql_die2($sql) {
$error = "";
global $strError, $strMySQLSaid, $strBack, $strSQLQuery;
echo "<b> $strError </b><p>";
echo "$strSQLQuery: <pre>".htmlspecialchars($sql)."</pre><p>";
if(empty($error))
echo "$strMySQLSaid ".mysql_error();
else
echo "$strMySQLSaid ".htmlspecialchars($error);
echo "\n<br><a href=\"javascript:history.go(-1)\">$strBack</a>";
include("footer.inc.php3");
exit;
}
// Split up large sql files into individual queries
// Version 2 18th May 2001 - Last Modified By Pete Kelly
function split_sql_file($sql, $delimiter) {
$sql = trim($sql);
$char = "";
$last_char = "";
$ret = array();
$in_string = false;
$in_string = true;
$i = 0;
$in_string = FALSE;
$escaped = FALSE;
while($i < strlen($sql))
{
if($sql[$i] == "#" and ($sql[$i-1] == "\n" or $i==0) and !$in_string)
{
$j=1;
while($sql[$i+$j] != "\n")
$j++;
$sql = substr($sql,0,$i) . substr($sql,$i+$j);
}
else
{
if($escaped)
$escaped = FALSE;
else
{
if($sql[$i] == "\\")
{
$escaped = TRUE;
}
else
{
if($sql[$i] == "'" or $sql[$i] == "\"")
{
if($in_string == $sql[$i])
$in_string = FALSE;
else
$in_string = $sql[$i];
}
}
}
}
$i++;
}
// $sql = ereg_replace("#[^\n]*\n", "", $sql); !! NOT !!
for($i=0; $i<strlen($sql); ++$i) {
for($i=0; $i<strlen($sql); $i++) {
$char = $sql[$i];
// if delimiter found, add the parsed part to the returned array
if($char == $delimiter && !$in_string) {
$ret[] = substr($sql, 0, $i);
@@ -683,26 +666,34 @@ function split_string($sql, $delimiter) {
$i = 0;
$last_char = "";
}
// if we are in a string, check for end of string
if($in_string && ($char == $in_string) && $last_char != "\\") {
$in_string = false;
}
// if not in a string, check for start of a string
elseif(!$in_string && ($char == "\"" || $char == "'") && ($last_char != "\\")) {
$in_string = $char;
}
if($last_char == $in_string && $char == ")") $in_string = false;
if($char == $in_string && $last_char != "\\") $in_string = false;
elseif(!$in_string && ($char == "\"" || $char == "'") && ($last_char != "\\")) $in_string = $char;
$last_char = $char;
}
// if there is a rest, add it to the returned array
if (!empty($sql)) {
$ret[] = $sql;
}
if (!empty($sql)) $ret[] = $sql;
return($ret);
}
// Bookmark Support
// Remove # type remarks from large sql files
// Version 2 18th May 2001 - Last Modified By Pete Kelly
function remove_remarks($sql) {
$i = 0;
while($i < strlen($sql)) {
if($sql[$i] == "#" and ($sql[$i-1] == "\n" or $i==0)) {
$j=1;
while($sql[$i+$j] != "\n") $j++;
$sql = substr($sql,0,$i) . substr($sql,$i+$j);
}
$i++;
}
return($sql);
}
// Bookmark Support
function get_bookmarks_param() {
global $cfgServers;
global $cfgServer;