PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wartungsmodus mit Mysql Funktion



Kraemer84
12.06.2013, 19:13
So da ich ja hier auch viele Fragen stelle und immer Antwort bekomm gibts von mir auch mal ein Script ;) (wenn man das so nennen darf)

Handelt sich um einen Wartungsmodus der in einem Adminbereich über Mysql aktiviert und deaktiviert werden kann.

Zuerst die Tabelle

Mysql


CREATE TABLE IF NOT EXISTS `wartungsmodus` (
`switch` text NOT NULL,
PRIMARY KEY (`switch`(1))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Daten für Tabelle `wartungsmodus`
--

INSERT INTO `wartungsmodus` (`switch`) VALUES
('1');


Es sind eine komplett eigene php seite und 3 Teilstücke die eingebaut oder komplett erstellt werden müssen.

Der zu steuernde Code besteht aus 2 Teilen da im ersten Teil die Eingabe ausgeführt wird und im zweiten Teil das Ergebnis korrigiert wird.

Aber zuerst zu dem Teil der sich dann auf der Startseite befindet

Index/Header.php


<?php
require ('db/connect.php');

$sql = mysql_query('SELECT switch FROM wartungsmodus');


while($output = mysql_fetch_array($sql))
{ //Beginn While Schleife

if (($output['switch']) == '1')

{
header('location:http://domain.de/wartung.php');
}

} // Ende While Schleife
mysql_close();
?>


Das gleiche nochmal rückwarts von der Wartungsseite zurück auf die Indexseite

Wartung.php


<?php
require ('db/connect.php');

$sql = mysql_query('SELECT switch FROM wartungsmodus');


while($output = mysql_fetch_array($sql))
{ //Beginn While Schleife

if (($output['switch']) == '0')

{
header('location:http://domain.de');
}
} // Ende While Schleife
mysql_close();
?>


Damit wären die Umleitungen fertig und der "Schalter" in der Datenbank

dann noch das Formular zum verarbeiten hier die

Index.php aus dem Adminbereich


<?php
error_reporting(0); // ich hab hier einen kleinen indexfehler das war mirs jetzt nicht wert deswegen error_reporting 0 :P
require ('db/connect.php');

$sql = mysql_query('SELECT switch FROM wartungsmodus');


while($output = mysql_fetch_array($sql))
{ //Beginn While Schleife


// Check ob Wartungsmodus aktiv oder nicht

if ($output ['switch'] == '1')

{

echo 'Wartungsmodus ist aktiv';

}
else
{
echo 'Wartungsmodus ist deaktiviert';
}
// Beginn Formular


echo '<form method="post" action="index.php">';
echo '<table border0">';
echo '<input type="Radio" name="switch" value="1" checked="checked" /> on';
echo '<input type="Radio" name="switch" value="0" /> off';
echo '<tr><td></td><td><input type="submit" name="button" value="aus/anschalten"></td></tr>';
echo '</table>';
echo '</form>';

$switch = $_POST['switch'];

// Anschalten
if ($switch == '1')
{
mysql_query("UPDATE wartungsmodus SET switch = switch+1");
header('location:http://domain.de/pfad_zu_correct.php');
}

//Ausschalten
if ($switch == '0')
{
mysql_query("UPDATE wartungsmodus SET switch = switch-1");
header('location:http://domain.de/pfad_zu_correct.php');
}
} // Ende While Schleife
mysql_close();
?>


Hier ganz wichtig das der Pfad zu der correct.php führt da diese dann die Werte nochmal überprüft. Und hier die

correct.php


<?php

require ('db/connect.php');

$sql = mysql_query('SELECT switch FROM wartungsmodus');

while($output = mysql_fetch_array($sql))
{ //Beginn While Schleife

//Eintrag positiv korrigieren
if (($output ['switch']) > '1')
{
mysql_query("UPDATE wartungsmodus SET switch = switch-1");
}
// Eintrag negativ korrigieren
if (($output ['switch']) == '-1')
{
mysql_query("UPDATE wartungsmodus SET switch = switch+1");
}
} // Ende While Schleife
mysql_close();
header('location:http://domain.de/pfad_zu_admin_index.php');
?>


Es müssen 2 Pfade in der Index aus dem Admin angepasst werden und ein Pfad in der correct.php

achja und die db connect



<?php

$localhost = 'localhost';
$username = 'dbuser';
$password = 'dbpass';

$verbindung = mysql_connect($localhost, $username , $password)
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("db_") or die ("Datenbank konnte nicht ausgewählt werden");
?>


Ich hoffe es können ein paar damit was anfangen :D und für mich ein klasse script da ich schleifen konnte bis zum geht nicht mehr xD und so langsam werden mir die vergleichsoperatoren immer symphatischer :p

Riddik
21.06.2013, 13:21
Wo bitte liegt jetzt das i-tüpfelchen? ich meine was ist der Unterschied, bzw. Vorteil zum "normalen" Wartungsmodus? den kann ich doch auch aus dem Adminforce aktivieren, bzw. deaktivieren...

Kraemer84
21.06.2013, 17:48
ist nicht direkt für das vms gedacht sondern eher allgemein für webseiten die das noch nicht besitzen ja und unterschied zum vms wartungsmodus ist ja nur die umleitung zurück auf die index (:confused:) wenn der wartungsmodus beendet ist - ob man das jetzt brauch lass ich mal dahingestellt und war auch mehr für mich ein tutorial um einen schalter in mysql zu erstellen und die benötigten befehle zu nutzen um diesen zu de/aktivieren.

breaker
22.06.2013, 10:28
Für so etwas simples brauche ich dann auch keine Datenbank, da ich sowieso die PHP von Platte parsen muss und auch die Konfiguration geladen wurde, liegt es nahe, den gesamten Kram für den Modus mit in die Konfig zu packen,- vollkommen ohne Mysql, du hast selber angegeben, das du ein Notice-Fehler bekommen hast und deshalb das Error-Reporting abgeschaltet hast, das ist ein double-Fail, weil du erst mal unsauberen Code verbreitest und das Error-Reporting im Debug-Mode eventuell auch abgeschaltet wird ;)

So sieht das ganze in meinem eigenen Script aus ;)




public static function getDebug ()
{
if (self::$debug === null)
{
self::$debug = (\file_exists (\_wPATH_ROOT . \DS . \strtoupper ('WISO_DEBUG_MODE_ENABLED')) ? true : false);
}
return (bool) self::$debug;
}