From: jakubvrana Date: Tue, 3 Nov 2009 10:55:57 +0000 (+0000) Subject: Improve session restarting X-Git-Tag: v3.0.0~317 X-Git-Url: https://git.joonet.de/?a=commitdiff_plain;h=be49e08bb47c870ac81ce09285bb34cccaade283;p=adminer.git Improve session restarting git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1227 7c3ca157-0c34-0410-bff1-cbf682f78f5c --- diff --git a/adminer/database.inc.php b/adminer/database.inc.php index b4e5d661..7d22f512 100644 --- a/adminer/database.inc.php +++ b/adminer/database.inc.php @@ -2,6 +2,7 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP changes add.x to add_x if (DB !== $_POST["name"]) { // create or rename database + restart_session(); unset($_SESSION["databases"][$_GET["server"]]); // clear cache $dbs = explode("\n", str_replace("\r", "", $_POST["name"])); $failed = false; @@ -15,6 +16,7 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c } } if (query_redirect(queries(), ME . "db=" . urlencode($last), lang('Database has been created.'), !strlen(DB), false, $failed)) { + //! move triggers $result = $connection->query("SHOW TABLES"); while ($row = $result->fetch_row()) { if (!queries("RENAME TABLE " . idf_escape($row[0]) . " TO " . idf_escape($_POST["name"]) . "." . idf_escape($row[0]))) { diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 0306083a..d92a1f4f 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -358,7 +358,7 @@ class Adminer { * @return string */ function messageQuery($query) { - session_start(); + restart_session(); $id = "sql-" . count($_SESSION["messages"]); $_SESSION["history"][$_GET["server"]][DB][] = $query; return " " . lang('SQL command') . "'; diff --git a/adminer/include/bootstrap.inc.php b/adminer/include/bootstrap.inc.php index 2e742f56..3ebe077c 100644 --- a/adminer/include/bootstrap.inc.php +++ b/adminer/include/bootstrap.inc.php @@ -92,8 +92,8 @@ include "./include/editing.inc.php"; include "./include/export.inc.php"; session_cache_limiter(""); // to allow restarting session -if (@ini_set("session.use_cookies", false) !== false) { // @ - may be disabled - session_write_close(); // improves concurrency, may be restarted later +if (!ini_get("session.use_cookies") || @ini_set("session.use_cookies", false) !== false) { // @ - may be disabled + session_write_close(); // improves concurrency if a user opens several pages at once, may be restarted later } $confirm = " onclick=\"return confirm('" . lang('Are you sure?') . "');\""; diff --git a/adminer/include/design.inc.php b/adminer/include/design.inc.php index 4f8aa1ed..4e645dda 100644 --- a/adminer/include/design.inc.php +++ b/adminer/include/design.inc.php @@ -52,10 +52,6 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") { if (strlen(DB) && $databases && !in_array(DB, $databases, true)) { $databases = null; } - if ((isset($databases) && !isset($_GET["sql"])) || !ini_get("session.use_cookies")) { - // improves concurrency if a user opens several pages at once - session_write_close(); - } if ($error) { echo "
$error
\n"; } diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index 47c3d685..7a578c00 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -351,7 +351,7 @@ function drop_create($drop, $create, $location, $message_drop, $message_alter, $ $dropped = strlen($name) && ($_POST["dropped"] || queries($drop)); $created = queries($create); if (!queries_redirect($location, (strlen($name) ? $message_alter : $message_create), $created) && $dropped) { - session_start(); + restart_session(); $_SESSION["messages"][] = $message_drop; } return $dropped; diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 590d0f14..3697f6df 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -220,7 +220,7 @@ function restart_session() { */ function redirect($location, $message = null) { if (isset($message)) { - session_start(); + restart_session(); $_SESSION["messages"][] = $message; } header("Location: " . (strlen($location) ? $location : ".")); diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index e047c4fc..2e9fce3b 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -1,4 +1,5 @@