]> git.joonet.de Git - adminer.git/commitdiff
Improve session restarting
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 3 Nov 2009 10:55:57 +0000 (10:55 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 3 Nov 2009 10:55:57 +0000 (10:55 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1227 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/database.inc.php
adminer/include/adminer.inc.php
adminer/include/bootstrap.inc.php
adminer/include/design.inc.php
adminer/include/editing.inc.php
adminer/include/functions.inc.php
adminer/sql.inc.php

index b4e5d6610a3147ce59c345b36975590b51cd8352..7d22f5122a9d36f511449340780ad2bb860cf62d 100644 (file)
@@ -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]))) {
index 0306083a3de7dfc371df47006b3df1b29539e65a..d92a1f4f88ece59e4ad34f4cf4b3018bce9209b9 100644 (file)
@@ -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 " <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('SQL command') . "</a><div id='$id' class='hidden'><pre class='jush-sql'>" . shorten_utf8($query, 1000) . '</pre><a href="' . h(ME . 'sql=&history=' . (count($_SESSION["history"][$_GET["server"]][DB]) - 1)) . '">' . lang('Edit') . '</a></div>';
index 2e742f5660c34a6e70d5d4463040d8d5ff4d4e2e..3ebe077cb2c6e1c8053acb85b0f2a6697ce933a0 100644 (file)
@@ -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?') . "');\"";
index 4f8aa1ed3e696e413b889621a751c2aefc0dd3c0..4e645dda36f44d6c0a13eb999f04b5b8ace4a82b 100644 (file)
@@ -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 "<div class='error'>$error</div>\n";
        }
index 47c3d68504608c14967ae4765c95fa4cf3a5b8d2..7a578c00f7636103a18257db9ec83cd0de3a239d 100644 (file)
@@ -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;
index 590d0f146b40f5a55956bccc2dd42dc003f63f0b..3697f6df729679f64703eed66587c1a7dd63a03d 100644 (file)
@@ -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 : "."));
index e047c4fc5025c9932b220a19617ea688eeeb437a..2e9fce3bd64e7d7d4a815e4743d22d1d00817efa 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+restart_session();
 $history = &$_SESSION["history"][$_GET["server"]][DB];
 if (!$error && $_POST["clear"]) {
        $history = array();
@@ -27,7 +28,7 @@ if (!$error && $_POST) {
                $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)) || !ini_get("session.use_cookies")) { // quick check - may be inside string
+               if (!ini_get("session.use_cookies") || (isset($databases) && !preg_match("~\\b$alter_database", $query))) { // quick check - may be inside string
                        //! false positive with $fp and disabled ini_set() and enabled session.use_cookies
                        session_write_close();
                }