1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-18 20:31:19 +02:00

Unlock session if possible

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1024 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana
2009-08-26 14:27:12 +00:00
parent e2bc1daa7d
commit c93a4f9940

View File

@@ -15,13 +15,18 @@ if (!$error && $_POST) {
$query = get_file("sql_file");
}
if (is_string($query)) { // get_file() returns error as number, file_get_contents as false
$space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)";
$alter_database = "(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU";
$databases = &$_SESSION["databases"][$_GET["server"]];
if (isset($databases) && !preg_match("~\\b$alter_database", $query)) { // quick check - may be inside string
session_write_close();
}
if (strlen($query) && (!$history || end($history) != $query)) { // don't add repeated
$history[] = $query;
}
$delimiter = ";";
$offset = 0;
$empty = true;
$space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)";
$dbh2 = (strlen($_GET["db"]) ? connect() : null); // connection for exploring indexes (to not replace FOUND_ROWS()) //! PDO - silent error
if (is_object($dbh2)) {
$dbh2->select_db($_GET["db"]);
@@ -61,8 +66,8 @@ if (!$error && $_POST) {
if (is_object($result)) {
select($result, $dbh2);
} else {
if (preg_match("~^$space*(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU", $query)) {
unset($_SESSION["databases"][$_GET["server"]]); // clear cache
if (preg_match("~^$space*$alter_database", $query)) {
$databases = null; // clear cache
}
echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "\n";
}