//// Formular Datenbankabfrage ob Wort in Tabellenname, Spaltenname oder im Inhalt der Spalten vorhanden ist.
echo "<form action='main.php?section=***' method='post'>";
echo "<span style='color: #CDBE70'>Informationen zum Wort</span></td><td><input type='text' style='border: 1px solid black; background-color: grey;
color:#FFFFFF; font-face:Verdana; font-weight:bold; font-size:10pt' size='30' value='$word' name='word' />";
echo "<tr><td><input type='submit' style='font-family: Verdana; font-size: 8pt' name='formaction' value='OK' /></td>
</form>";
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (isset($_POST['word']) AND isset($_POST['formaction'])) {
//// Alle Tabellennamen nach dem gesuchten Wort abfragen
$getTables4 = "SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME LIKE '%{$word}%'
AND
TABLE_SCHEMA='dbname'";
$Tables4 = mysql_query($getTables4);
if (!$Tables4) {
die ('Etwas stimmte mit dem Query nicht1: '.$Tables4->error);
}
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
while ($row = mysql_fetch_assoc($Tables4)) {
$table4[]=$row["TABLE_NAME"];
}
echo "<h2>Wort {$_POST['word']} im Tabellenname:</h2>";
for ($i = 0; $i < count($table4); $i++) {
echo "<p>Tabelle $table4[$i]</p>";
}
//// Alle Spaltennamen nach dem gesuchten Wort abfragen. column-definition wird für den Alter befehl benötigt.
$getTables = "SELECT
DISTINCT TABLE_NAME,
COLUMN_NAME,
CONCAT(
CAST(COLUMN_NAME AS CHAR),
' ',
CAST(COLUMN_TYPE AS CHAR),
IF(ISNULL(CHARACTER_SET_NAME),
'',
CONCAT(' CHARACTER SET ', CHARACTER_SET_NAME)),
IF(ISNULL(COLLATION_NAME), '', CONCAT(' COLLATE ', COLLATION_NAME)),
' ',
IF(IS_NULLABLE = 'NO', 'NOT NULL ', ''),
IF(IS_NULLABLE = 'NO' AND ISNULL(COLUMN_DEFAULT),
'',
CONCAT('DEFAULT ', QUOTE(COLUMN_DEFAULT), ' ')),
UPPER(extra))
AS column_definition
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME LIKE '%{$word}%'
AND
TABLE_SCHEMA='dbname'";
$Tables = mysql_query($getTables);
if (!$Tables) {
die ('Etwas stimmte mit dem Query nicht1: '.$Tables->error);
}
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
while ($row = mysql_fetch_assoc($Tables)) {
$COLUMNNAME = $row["COLUMN_NAME"];
$table=$row["TABLE_NAME"];
$column_definition = $row["column_definition"];
$defarray = explode(" ",$column_definition,2);
$column_definition =$defarray[1];
//echo "<p>$COLUMNNAME</p>"; die;
if ($COLUMNNAME) {
//$table_name3[$table][]=$COLUMNNAME;
$table_name3[$table][$COLUMNNAME]=$column_definition;
}
}
echo "<h2>Wort {$_POST['word']} im Spaltenname:</h2>";
foreach ($table_name3 as $table3 => $collumns3) {
foreach ($collumns3 as $Spalte3 => $Zinfo3) {
echo "<p>Tabelle $table3 Spaltename $Spalte3</p>";
}
}
// Alle Spalteninhalte mit Textdaten abrufen. VORSICHT manche Tabellen oder Spalteninhalte sollten nicht ersetzt werden.
$getAll = ("SELECT
TABLE_NAME,
DATA_TYPE,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA='dbname'
AND
(DATA_TYPE = 'varchar'
OR
DATA_TYPE = 'CHAR'
OR
DATA_TYPE = 'TINYTEXT'
OR
DATA_TYPE = 'TINYBLOB'
OR
DATA_TYPE = 'TEXT, BLOB'
OR
DATA_TYPE = 'MEDIUMTEXT'
OR
DATA_TYPE = 'MEDIUMBLOB'
OR
DATA_TYPE = 'LONGTEXT'
OR
DATA_TYPE = 'LONGBLOB'
OR
DATA_TYPE = 'ENUM'
OR
DATA_TYPE = 'SET')
AND
NOT
(TABLE_NAME LIKE '***'
OR
TABLE_NAME LIKE 'phpbb%'
OR
TABLE_NAME LIKE 'temp%'
OR
TABLE_NAME LIKE 'chat%'
OR
TABLE_NAME LIKE 'PN%'
OR
TABLE_NAME LIKE 'USER%'
OR
TABLE_NAME LIKE 'Verify%'
OR
TABLE_NAME LIKE 'Verkaufslog%'
OR
TABLE_NAME LIKE 'Radio%'
OR
TABLE_NAME LIKE 'Clans%'
OR
TABLE_NAME LIKE 'Online%'
OR
TABLE_NAME LIKE 'Strahlung%'
OR
TABLE_NAME LIKE 'Aktion%'
OR
TABLE_NAME LIKE 'Clanmember%'
OR
COLUMN_NAME ='Username'
OR
COLUMN_NAME ='Clanname' )");
$All = mysql_query($getAll);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
$table_name=array();
$j=-1;
while ($row = mysql_fetch_assoc($All)) {
$COLUMN_NAME = $row["COLUMN_NAME"];
$table_name2 = $row["TABLE_NAME"];
$i++;
if ($COLUMN_NAME) {
$table_name[$table_name2][]=$COLUMN_NAME;
//echo "<p>$table_name $COLUMN_NAME</p>";
}
}
//// Alle Inhalte überprüfen ob Wort enthalten ist wenn ja dann Daten der Tabelle Spalten in Array speichern.
echo "<h2>Inhalt der Spalten:</h2>";
echo "<p>$i Spalten wurden überprüft</p>";
foreach ($table_name as $table1 => $collumns) {
//echo "<p><u>$table1</u></p>";
//var_dump($collumns);
for ($i = 0; $i < count($collumns); $i++) {
$Col=$collumns[$i];
//echo "<p>$Col</p>";
$getAll = "SELECT
`$Col`
FROM
`$table1`";
$All = mysql_query($getAll);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
while ($row = mysql_fetch_assoc($All)) {
$Texte=$row[$Col];
//echo "<p>$Texte</p>";
$Founds=substr_count($Texte, $word);
if ($Founds) {
echo "<p>$Founds mal in Tabelle:$table1 Spalte:$Col</p>";
$Inhaltsdata[$table1][]=$Col;
}
if (!is_string($Texte)) {
$Typ=gettype($Texte);
echo "<p>Tabelle $table1 mit Spaltenname:$Col hat den Datentyp $Typ</p>";
}
}
}
}
// Arrays encodieren um sie im Formular zu verschicken
$array3= base64_encode(serialize($table_name3));
$Inhaltsdata2= base64_encode(serialize($Inhaltsdata));
$tabell= base64_encode(serialize($table4));
// Formular mit allen Daten welche betroffen sind mit neuen Wort abschicken.
echo "<form action='main.php?section=***' method='post'>";
echo "<span style='color: #CDBE70'>Erstzeen mit</span></td><td><input type='text' style='border: 1px solid black; background-color: grey;
color:#FFFFFF; font-face:Verdana; font-weight:bold; font-size:10pt' size='30' value='$wordnew' name='Wortneu' />
<input type='hidden' value='$word' name='Wortalt' />
<input type='hidden' value='$tabell' name='Tabellen' />
<input type='hidden' value='$array3' name='Spalten' />
<input type='hidden' value='$Inhaltsdata2' name='Inhalt' />";
echo "<tr><td><input type='submit' style='font-family: Verdana; font-size: 8pt' name='formaction2' value='Ändern' /></td>
</form>";
}
if (isset($_POST['formaction2'])) {
$Wortalt = $_POST['Wortalt'];
$Wortneu = $_POST['Wortneu'];
// Arrays decodieren
$Spalten = unserialize(base64_decode($_POST['Spalten']));
$Inhalt = unserialize(base64_decode($_POST['Inhalt']));
$Tabellen = unserialize(base64_decode($_POST['Tabellen']));
//// 1. Spalteninhalte ersetzen
if (isset($Inhalt)){
foreach ($Inhalt as $Tabelle1 => $Zeile1) {
for ($i = 0; $i < count($Zeile1); $i++) {
$col=$Zeile1[$i];
if ($Tabelle1!='Gepaeck') {
$getAll = "UPDATE `$Tabelle1`
SET
`$col` = replace(`$col`, '$Wortalt','$Wortneu')
WHERE
`$col` LIKE '%{$Wortalt}%'";
$All = mysql_query($getAll);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
//echo "<p>TEST $col</p>";
}
// Fallback weil diese Tabelle serialisierte Daten enthält
else {
$getAll = "UPDATE `$Tabelle1`
SET
`$col` = replace(`$col`, '$Wortalt','$Wortneu')
WHERE
`$col` LIKE '%{$Wortalt}%'";
$All = mysql_query($getAll);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
$getGepaeck = "SELECT
Items,
Username
FROM
Gepaeck
WHERE
`$col` LIKE '%{$Wortalt}%'";
$Gepaeck = mysql_query($getGepaeck);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
if (mysql_num_rows($Gepaeck) != 0) {
while ($row = mysql_fetch_assoc($Gepaeck)) {
$Items=$row["Items"];
$Username=$row["Username"];
// Serialiserte Daten fixen (falsche Zeichenanzahl berichtigen)
$Items = html_entity_decode($Items, ENT_QUOTES, 'UTF-8');
$Items = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $Items);
$getAll = "UPDATE `Gepaeck`
SET
`Items` = '$Items'
WHERE
`Username` = '$Username'";
$All = mysql_query($getAll);
}
}
}
}
}
}
//// 2. Spaltennamen ersetzen
if (isset($Spalten)){
foreach ($Spalten as $Tabelle => $Zeile1) {
foreach ($Zeile1 as $Spalte => $Zinfo) {
//$newTabelle = str_replace($Wortalt, $Wortneu, $Tabelle);
$newZeile = str_replace($Wortalt, $Wortneu, $Spalte);
//echo "<p>$newZeile</p>"; die;
$getAll = "ALTER TABLE
$Tabelle
CHANGE
`$Spalte`
`$newZeile`
$Zinfo";
$All = mysql_query($getAll);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
}
}
}
//// 3. Tabellennamen ersetzen
if (isset($Tabellen)){
for ($i = 0; $i < count($Tabellen); $i++) {
$oldTable =$Tabellen[$i];
$newTabelle = str_replace($Wortalt, $Wortneu, $Tabellen[$i]);
$getAll = "RENAME TABLE
`$oldTable`
TO
`$newTabelle`";
$All = mysql_query($getAll);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
}
}
//// 4. Dateinamen Pfadnamen sowie Dateiinhalt mit neuen Wort ersetzen
foreach (new DirectoryIterator('../Backend/templates') as $fileInfo) {
if ($fileInfo->isDot()) continue;
$file=$fileInfo->getRealPath();
$proof=file_get_contents($file);
$isnewfile=str_replace($Wortalt, $Wortneu, $proof);
if ($proof!=$isnewfile) {
file_put_contents($file, $isnewfile);
echo "<p>$file</p>";
}
$newName = str_replace($Wortalt, $Wortneu, $fileInfo->getPathname());
if ($newName!=$fileInfo->getPathname()) {
if ( rename ( $fileoldname=$fileInfo->getPathname(), $newName ) ) {
echo "<p>$fileoldname wurde in $newName wurde umbenannt</p>";
}
else {
echo "<p>Fehler: Datei $fileoldname konnte nicht umbenannt werden</p>";
}
}
}
foreach (new DirectoryIterator('../Backend/includes') as $fileInfo) {
if ($fileInfo->isDot()) continue;
$file=$fileInfo->getRealPath();
$proof=file_get_contents($file);
$isnewfile=str_replace($Wortalt, $Wortneu, $proof);
if ($proof!=$isnewfile) {
file_put_contents($file, $isnewfile);
echo "<p>$file</p>";
}
$newName = str_replace($Wortalt, $Wortneu, $fileInfo->getPathname());
if ($newName!=$fileInfo->getPathname()) {
if ( rename ( $fileoldname=$fileInfo->getPathname(), $newName ) ) {
echo "<p>$fileoldname wurde in $newName wurde umbenannt</p>";
}
else {
echo "<p>Fehler: Datei $fileoldname konnte nicht umbenannt werden</p>";
}
}
}
foreach (new DirectoryIterator('../Backend') as $fileInfo) {
if ($fileInfo->isDot()) continue;
$file=$fileInfo->getRealPath();
$proof=file_get_contents($file);
$isnewfile=str_replace($Wortalt, $Wortneu, $proof);
if ($proof!=$isnewfile) {
file_put_contents($file, $isnewfile);
echo "<p>$file</p>";
}
$newName = str_replace($Wortalt, $Wortneu, $fileInfo->getPathname());
if ($newName!=$fileInfo->getPathname()) {
if ( rename ( $fileoldname=$fileInfo->getPathname(), $newName ) ) {
echo "<p>$fileoldname wurde in $newName wurde umbenannt</p>";
}
else {
echo "<p>Fehler: Datei $fileoldname konnte nicht umbenannt werden</p>";
}
}
}
foreach (new DirectoryIterator('../Backend/css') as $fileInfo) {
if ($fileInfo->isDot()) continue;
$file=$fileInfo->getRealPath();
$proof=file_get_contents($file);
$isnewfile=str_replace($Wortalt, $Wortneu, $proof);
if ($proof!=$isnewfile) {
file_put_contents($file, $isnewfile);
echo "<p>$file</p>";
}
$newName = str_replace($Wortalt, $Wortneu, $fileInfo->getPathname());
if ($newName!=$fileInfo->getPathname()) {
if ( rename ( $fileoldname=$fileInfo->getPathname(), $newName ) ) {
echo "<p>$fileoldname wurde in $newName wurde umbenannt</p>";
}
else {
echo "<p>Fehler: Datei $fileoldname konnte nicht umbenannt werden</p>";
}
}
}
foreach (new DirectoryIterator('../Backend/pages') as $fileInfo) {
if($fileInfo->isDot()) continue;
//echo $fileInfo->getFilename() . "<br>\n";
$file=$fileInfo->getRealPath();
//echo "<p>$file</p>";
$proof=file_get_contents($file);
//die;
$isnewfile=str_replace($Wortalt, $Wortneu, $proof);
if ($proof!=$isnewfile) {
file_put_contents($file, $isnewfile);
echo "<p>$file</p>";
//echo $fileInfo->getFilename() . "<br>\n";
}
$newName = str_replace($Wortalt, $Wortneu, $fileInfo->getPathname());
if ($newName!=$fileInfo->getPathname()) {
if ( rename ( $fileoldname=$fileInfo->getPathname(), $newName ) ) {
echo "<p>$fileoldname wurde in $newName wurde umbenannt</p>";
}
else {
echo "<p>Fehler: Datei $fileoldname konnte nicht umbenannt werden</p>";
}
}
}
}
}