Subversion Repositories prepend

Compare Revisions

No changes between revisions

Ignore whitespace Rev 8 → Rev 9

/trunk/TODO
File deleted
/trunk/INSTALL
4,3 → 4,5
to a file located in
/etc/php/7.0/mods-enabled/
 
copy includes/config.dist.php to includes/config.local.php and edit it to your needs
 
/trunk/php_auto_pre/001-mysql_replacement.php
3,464 → 3,464
// TODO: test everything
// TODO: return values?
// TODO: check if we matched all stuff mentioned here: https://www.phpclasses.org/blog/package/9199/post/3-Smoothly-Migrate-your-PHP-Code-using-the-Old-MySQL-extension-to-MySQLi.html
// TODO: translate descriptions to english
 
$vts_mysqli = null;
$vts_mysqli_report_set_once = false;
$xxx_vts_prepend_config = array();
if (file_exists($xxx_vts_prepend_config_file = __DIR__.'/config.local.php')) include $xxx_vts_prepend_config_file;
unset($xxx_vts_prepend_config_file);
$xxx_directories_need_mysql = $xxx_vts_prepend_config['directories_need_mysql'];
unset($xxx_vts_prepend_config);
 
// Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
function mysql_affected_rows($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_affected_rows(). No valid connection to server.");
 
return $li->affected_rows;
$xxx_go = false;
foreach ($xxx_directories_need_mysql as $xxx_directory_need_mysql) {
if ($xxx_negate = (substr($xxx_directory_need_mysql,0,1) === '!')) {
$xxx_directory_need_mysql = substr($xxx_directory_need_mysql,1);
}
if (strpos($_SERVER['SCRIPT_FILENAME'], $xxx_directory_need_mysql) === 0) {
$xxx_go = !$xxx_negate;
}
unset($xxx_negate);
}
unset($xxx_directories_need_mysql);
unset($xxx_directory_need_mysql);
 
// Liefert den Namen des Zeichensatzes
function mysql_client_encoding($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_client_encoding(). No valid connection to server.");
if ($xxx_go && !function_exists('mysql_connect')) {
 
return $li->character_set_name();
}
$vts_mysqli = null;
$vts_mysqli_report_set_once = false;
 
// Schließt eine Verbindung zu MySQL
function mysql_close($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_close(). No valid connection to server.");
// Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
function mysql_affected_rows($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_affected_rows(). No valid connection to server.");
return $li->affected_rows;
}
 
return $li->close();
}
// Liefert den Namen des Zeichensatzes
function mysql_client_encoding($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_client_encoding(). No valid connection to server.");
return $li->character_set_name();
}
 
// Öffnet eine Verbindung zu einem MySQL-Server
function mysql_connect($server=null, $username=null, $password=null, $new_link=false, $client_flags=0) {
global $vts_mysqli;
global $vts_mysqli_report_set_once;
$ary = explode(':', $server);
$host = $ary[0];
$ini_port = ini_get("mysqli.default_port");
$port = isset($ary[1]) ? (int)$ary[1] : ($ini_port ? (int)$ini_port : 3306);
if (is_null($server)) $port = ini_get("mysqli.default_host");
if (is_null($username)) $port = ini_get("mysqli.default_user");
if (is_null($password)) $port = ini_get("mysqli.default_password");
$vts_mysqli = new mysqli($host, $username, $password, /*dbname*/'', $port, ini_get("mysqli.default_socket"));
if (!$vts_mysqli_report_set_once) {
mysqli_report(MYSQLI_REPORT_OFF); // PHP <8.1 compatibility
$vts_mysqli_report_set_once = true;
// Schließt eine Verbindung zu MySQL
function mysql_close($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_close(). No valid connection to server.");
return $li->close();
}
return (empty($vts_mysqli->connect_error) && ($vts_mysqli->connect_errno == 0)) ? $vts_mysqli : false;
}
 
// Anlegen einer MySQL-Datenbank
function mysql_create_db($database_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_create_db(). No valid connection to server.");
// Öffnet eine Verbindung zu einem MySQL-Server
function mysql_connect($server=null, $username=null, $password=null, $new_link=false, $client_flags=0) {
global $vts_mysqli;
global $vts_mysqli_report_set_once;
$ary = explode(':', $server);
$host = $ary[0];
$ini_port = ini_get("mysqli.default_port");
$port = isset($ary[1]) ? (int)$ary[1] : ($ini_port ? (int)$ini_port : 3306);
if (is_null($server)) $port = ini_get("mysqli.default_host");
if (is_null($username)) $port = ini_get("mysqli.default_user");
if (is_null($password)) $port = ini_get("mysqli.default_password");
$vts_mysqli = new mysqli($host, $username, $password, /*dbname*/'', $port, ini_get("mysqli.default_socket"));
if (!$vts_mysqli_report_set_once) {
mysqli_report(MYSQLI_REPORT_OFF); // PHP <8.1 compatibility
$vts_mysqli_report_set_once = true;
}
return (empty($vts_mysqli->connect_error) && ($vts_mysqli->connect_errno == 0)) ? $vts_mysqli : false;
}
 
return mysql_query("CREATE DATABASE `$database_name`", $li) !== false;
}
// Anlegen einer MySQL-Datenbank
function mysql_create_db($database_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_create_db(). No valid connection to server.");
return mysql_query("CREATE DATABASE `$database_name`", $li) !== false;
}
 
// Bewegt den internen Ergebnis-Zeiger
function mysql_data_seek($result, $row_number) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_data_seek() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Bewegt den internen Ergebnis-Zeiger
function mysql_data_seek($result, $row_number) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_data_seek() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->data_seek($row_number) !== false;
}
return $result->data_seek($row_number) !== false;
}
 
// Liefert Schema Namen vom Aufruf von mysql_list_dbs
function mysql_db_name($result, $row, $field=NULL) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_db_name() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert Schema Namen vom Aufruf von mysql_list_dbs
function mysql_db_name($result, $row, $field=NULL) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_db_name() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
$result->data_seek($row);
return mysql_fetch_array($result)[is_null($field) ? 0 : $field];
}
$result->data_seek($row);
return mysql_fetch_array($result)[is_null($field) ? 0 : $field];
}
 
// Selektiert ein Schema und führt in ihm Anfrage aus
function mysql_db_query($database, $query, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_db_query(). No valid connection to server.");
// Selektiert ein Schema und führt in ihm Anfrage aus
function mysql_db_query($database, $query, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_db_query(). No valid connection to server.");
mysql_select_db($database, $li);
return mysql_query($query, $li);
// Note: The mysql_*() implementation defines, that we will not jump back to our original DB
}
 
mysql_select_db($database, $li);
return mysql_query($query, $li);
// Note: The mysql_*() implementation defines, that we will not jump back to our original DB
}
// Löschen eines Schemas
function mysql_drop_db($database_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_drop_db(). No valid connection to server.");
return mysql_query("DROP DATABASE `$database_name`", $li) !== false;
}
 
// Löschen eines Schemas
function mysql_drop_db($database_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_drop_db(). No valid connection to server.");
// Liefert die Nummer einer Fehlermeldung einer zuvor ausgeführten MySQL Operation
function mysql_errno($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_errno(). No valid connection to server.");
return !empty($li->connect_errno) ? $li->connect_errno : $li->errno;
}
 
return mysql_query("DROP DATABASE `$database_name`", $li) !== false;
}
// Liefert den Fehlertext der zuvor ausgeführten MySQL Operation
function mysql_error($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_error(). No valid connection to server.");
return !empty($li->connect_error) ? $li->connect_error : $li->error;
}
 
// Liefert die Nummer einer Fehlermeldung einer zuvor ausgeführten MySQL Operation
function mysql_errno($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_errno(). No valid connection to server.");
// Maskiert einen String zur Benutzung in einer MySQL Abfrage
function mysql_escape_string($unescaped_string) {
global $vts_mysqli;
return $vts_mysqli->real_escape_string($unescaped_string);
}
 
return !empty($li->connect_errno) ? $li->connect_errno : $li->errno;
}
// Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
define('MYSQL_ASSOC', MYSQLI_ASSOC);
define('MYSQL_NUM', MYSQLI_NUM);
define('MYSQL_BOTH', MYSQLI_BOTH);
function mysql_fetch_array($result, $result_type=MYSQL_BOTH) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_array() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_array($result_type);
}
 
// Liefert den Fehlertext der zuvor ausgeführten MySQL Operation
function mysql_error($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_error(). No valid connection to server.");
// Liefert einen Datensatz als assoziatives Array
function mysql_fetch_assoc($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_assoc() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_assoc();
}
 
return !empty($li->connect_error) ? $li->connect_error : $li->error;
}
// Liefert ein Objekt mit Feldinformationen aus einem Anfrageergebnis
function mysql_fetch_field($result, $field_offset=0) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_field() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_field();
}
 
// Maskiert einen String zur Benutzung in einer MySQL Abfrage
function mysql_escape_string($unescaped_string) {
global $vts_mysqli;
return $vts_mysqli->real_escape_string($unescaped_string);
}
// Liefert die Länge eines jeden Feldes in einem Ergebnis
function mysql_fetch_lengths($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_lengths() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->lengths;
}
 
// Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
define('MYSQL_ASSOC', MYSQLI_ASSOC);
define('MYSQL_NUM', MYSQLI_NUM);
define('MYSQL_BOTH', MYSQLI_BOTH);
function mysql_fetch_array($result, $result_type=MYSQL_BOTH) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_array() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert eine Ergebniszeile als Objekt
function mysql_fetch_object($result, $class_name="stdClass", $params=null) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_object() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
if ($params) {
return $result->fetch_object($class_name, $params);
} else {
return $result->fetch_object($class_name);
}
}
return $result->fetch_array($result_type);
}
 
// Liefert einen Datensatz als assoziatives Array
function mysql_fetch_assoc($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_assoc() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert einen Datensatz als indiziertes Array
function mysql_fetch_row($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_row() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_row();
}
return $result->fetch_assoc();
}
 
// Liefert ein Objekt mit Feldinformationen aus einem Anfrageergebnis
function mysql_fetch_field($result, $field_offset=0) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_field() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert die Flags des spezifizierten Feldes in einem Anfrageergebnis
function mysql_field_flags($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_flags() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_field_direct($field_offset)->flags;
}
return $result->fetch_field();
}
 
// Liefert die Länge eines jeden Feldes in einem Ergebnis
function mysql_fetch_lengths($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_lengths() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert die Länge des angegebenen Feldes
function mysql_field_len($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_len() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_field_direct($field_offset)->length;
}
return $result->lengths;
}
 
// Liefert eine Ergebniszeile als Objekt
function mysql_fetch_object($result, $class_name="stdClass", $params=null) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_object() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert den Namen eines Feldes in einem Ergebnis
function mysql_field_name($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_name() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_field_direct($field_offset)->name; //or "orgname"
}
if ($params) {
return $result->fetch_object($class_name, $params);
} else {
return $result->fetch_object($class_name);
 
// Setzt den Ergebniszeiger auf ein bestimmtes Feldoffset
function mysql_field_seek($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_seek() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->field_seek($field_offset);
}
}
 
// Liefert einen Datensatz als indiziertes Array
function mysql_fetch_row($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_fetch_row() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert den Namen der Tabelle, die das genannte Feld enthält
function mysql_field_table($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_table() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_field_direct($field_offset)->table; // or "orgtable"
}
return $result->fetch_row();
}
 
// Liefert die Flags des spezifizierten Feldes in einem Anfrageergebnis
function mysql_field_flags($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_flags() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert den Typ des spezifizierten Feldes in einem Ergebnis
function mysql_field_type($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_type() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->fetch_field_direct($field_offset)->type;
}
return $result->fetch_field_direct($field_offset)->flags;
}
 
// Liefert die Länge des angegebenen Feldes
function mysql_field_len($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_len() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Gibt belegten Speicher wieder frei
function mysql_free_result($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_free_result() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->free();
}
return $result->fetch_field_direct($field_offset)->length;
}
 
// Liefert den Namen eines Feldes in einem Ergebnis
function mysql_field_name($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_name() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert MySQL Clientinformationen
function mysql_get_client_info() {
global $vts_mysqli;
return $vts_mysqli->get_client_info();
}
return $result->fetch_field_direct($field_offset)->name; //or "orgname"
}
 
// Setzt den Ergebniszeiger auf ein bestimmtes Feldoffset
function mysql_field_seek($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_seek() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert MySQL Host Informationen
function mysql_get_host_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_get_host_info(). No valid connection to server.");
return $li->host_info;
}
return $result->field_seek($field_offset);
}
 
// Liefert den Namen der Tabelle, die das genannte Feld enthält
function mysql_field_table($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_table() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert MySQL Protokollinformationen
function mysql_get_proto_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_get_proto_info(). No valid connection to server.");
return $li->protocol_version;
}
return $result->fetch_field_direct($field_offset)->table; // or "orgtable"
}
 
// Liefert den Typ des spezifizierten Feldes in einem Ergebnis
function mysql_field_type($result, $field_offset) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_field_type() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert MySQL Server Informationen
function mysql_get_server_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_get_server_info(). No valid connection to server.");
return $li->server_info;
}
return $result->fetch_field_direct($field_offset)->type;
}
 
// Gibt belegten Speicher wieder frei
function mysql_free_result($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_free_result() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert Informationen über die zuletzt ausgeführte Anfrage zurück
function mysql_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_info(). No valid connection to server.");
return $li->info;
}
return $result->free();
}
 
// Liefert MySQL Clientinformationen
function mysql_get_client_info() {
global $vts_mysqli;
return $vts_mysqli->get_client_info();
}
// Liefert die ID, die in der vorherigen Abfrage erzeugt wurde
function mysql_insert_id($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_insert_id(). No valid connection to server.");
return $li->insert_id;
}
 
// Liefert MySQL Host Informationen
function mysql_get_host_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_get_host_info(). No valid connection to server.");
// Auflistung der verfügbaren Datenbanken (Schemata) auf einem MySQL Server
function mysql_list_dbs($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_dbs(). No valid connection to server.");
return mysql_query('SHOW DATABASES', $li);
}
 
return $li->host_info;
}
// Listet MySQL Tabellenfelder auf
function mysql_list_fields($database_name, $table_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_fields(). No valid connection to server.");
return mysql_query("SHOW COLUMNS FROM `$database_name`.`$table_name`", $li);
}
 
// Liefert MySQL Protokollinformationen
function mysql_get_proto_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_get_proto_info(). No valid connection to server.");
// Zeigt die MySQL Prozesse an
function mysql_list_processes($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_processes(). No valid connection to server.");
return $li->thread_id;
}
 
return $li->protocol_version;
}
// Listet Tabellen in einer MySQL Datenbank auf
function mysql_list_tables($database, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_tables(). No valid connection to server.");
return mysql_query("SHOW TABLES FROM `$database`", $li);
}
 
// Liefert MySQL Server Informationen
function mysql_get_server_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_get_server_info(). No valid connection to server.");
// Liefert die Anzahl der Felder in einem Ergebnis
function mysql_num_fields($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_num_fields() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
global $vts_mysqli;
return $vts_mysqli->field_count;
}
 
return $li->server_info;
}
// Liefert die Anzahl der Zeilen im Ergebnis
function mysql_num_rows($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_num_rows() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
return $result->num_rows;
}
 
// Liefert Informationen über die zuletzt ausgeführte Anfrage zurück
function mysql_info($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_info(). No valid connection to server.");
// Öffnet eine persistente Verbindung zum MySQL Server
function mysql_pconnect($server=null, $username=null, $password=null, $client_flags=0) {
global $vts_mysqli;
$ary = explode(':', $server);
$host = $ary[0];
$ini_port = ini_get("mysqli.default_port");
$port = isset($ary[1]) ? (int)$ary[1] : ($ini_port ? (int)$ini_port : 3306);
if (is_null($server)) $port = ini_get("mysqli.default_host");
if (is_null($username)) $port = ini_get("mysqli.default_user");
if (is_null($password)) $port = ini_get("mysqli.default_password");
$vts_mysqli = new mysqli('p:'.$host, $username, $password, /*dbname*/'', $port, ini_get("mysqli.default_socket"));
return (empty($vts_mysqli->connect_error) && ($vts_mysqli->connect_errno == 0)) ? $vts_mysqli : false;
}
 
return $li->info;
}
// Ping a server connection or reconnect if there is no connection
function mysql_ping($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_ping(). No valid connection to server.");
return $li->ping();
}
 
// Liefert die ID, die in der vorherigen Abfrage erzeugt wurde
function mysql_insert_id($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_insert_id(). No valid connection to server.");
// Sendet eine Anfrage an MySQL
function mysql_query($query, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_query(). No valid connection to server.");
return $li->query($query, $resultmode=MYSQLI_STORE_RESULT);
}
 
return $li->insert_id;
}
// Maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer SQL-Anweisung
function mysql_real_escape_string($unescaped_string, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_real_escape_string(). No valid connection to server.");
return $li->escape_string($unescaped_string);
}
 
// Auflistung der verfügbaren Datenbanken (Schemata) auf einem MySQL Server
function mysql_list_dbs($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_dbs(). No valid connection to server.");
// Liefert Ergebnis
function mysql_result($result, $row, $field=0) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_result() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
$result->data_seek($row);
return mysql_fetch_array($result)[$field];
}
 
return mysql_query('SHOW DATABASES', $li);
}
// Auswahl einer MySQL Datenbank
function mysql_select_db($database_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_select_db(). No valid connection to server.");
return $li->select_db($database_name);
}
 
// Listet MySQL Tabellenfelder auf
function mysql_list_fields($database_name, $table_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_fields(). No valid connection to server.");
// Setzt den Verbindungszeichensatz
function mysql_set_charset($charset, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_set_charset(). No valid connection to server.");
return $li->set_charset($charset);
}
 
return mysql_query("SHOW COLUMNS FROM `$database_name`.`$table_name`", $li);
}
 
// Zeigt die MySQL Prozesse an
function mysql_list_processes($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_processes(). No valid connection to server.");
 
return $li->thread_id;
}
 
// Listet Tabellen in einer MySQL Datenbank auf
function mysql_list_tables($database, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_list_tables(). No valid connection to server.");
 
return mysql_query("SHOW TABLES FROM `$database`", $li);
}
 
// Liefert die Anzahl der Felder in einem Ergebnis
function mysql_num_fields($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_num_fields() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Zeigt den momentanen Serverstatus an
function mysql_stat($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_stat(). No valid connection to server.");
return $li->stat();
}
global $vts_mysqli;
return $vts_mysqli->field_count;
}
 
// Liefert die Anzahl der Zeilen im Ergebnis
function mysql_num_rows($result) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_num_rows() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Liefert den Namen einer Tabelle
function mysql_tablename($result, $i) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_tablename() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
}
$result->data_seek($i);
return mysql_fetch_array($result)[0];
}
return $result->num_rows;
}
 
// Öffnet eine persistente Verbindung zum MySQL Server
function mysql_pconnect($server=null, $username=null, $password=null, $client_flags=0) {
global $vts_mysqli;
$ary = explode(':', $server);
$host = $ary[0];
$ini_port = ini_get("mysqli.default_port");
$port = isset($ary[1]) ? (int)$ary[1] : ($ini_port ? (int)$ini_port : 3306);
if (is_null($server)) $port = ini_get("mysqli.default_host");
if (is_null($username)) $port = ini_get("mysqli.default_user");
if (is_null($password)) $port = ini_get("mysqli.default_password");
$vts_mysqli = new mysqli('p:'.$host, $username, $password, /*dbname*/'', $port, ini_get("mysqli.default_socket"));
return (empty($vts_mysqli->connect_error) && ($vts_mysqli->connect_errno == 0)) ? $vts_mysqli : false;
}
 
// Ping a server connection or reconnect if there is no connection
function mysql_ping($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_ping(). No valid connection to server.");
 
return $li->ping();
}
 
// Sendet eine Anfrage an MySQL
function mysql_query($query, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_query(). No valid connection to server.");
 
return $li->query($query, $resultmode=MYSQLI_STORE_RESULT);
}
 
// Maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer SQL-Anweisung
function mysql_real_escape_string($unescaped_string, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_real_escape_string(). No valid connection to server.");
 
return $li->escape_string($unescaped_string);
}
 
// Liefert Ergebnis
function mysql_result($result, $row, $field=0) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_result() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Zeigt die aktuelle Thread ID an
function mysql_thread_id($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_thread_id(). No valid connection to server.");
return $li->thread_id;
}
$result->data_seek($row);
return mysql_fetch_array($result)[$field];
}
 
// Auswahl einer MySQL Datenbank
function mysql_select_db($database_name, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_select_db(). No valid connection to server.");
 
return $li->select_db($database_name);
}
 
// Setzt den Verbindungszeichensatz
function mysql_set_charset($charset, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_set_charset(). No valid connection to server.");
 
return $li->set_charset($charset);
}
 
// Zeigt den momentanen Serverstatus an
function mysql_stat($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_stat(). No valid connection to server.");
 
return $li->stat();
}
 
// Liefert den Namen einer Tabelle
function mysql_tablename($result, $i) {
if (!$result) {
$err = mysql_error();
throw new Exception("Called mysql_tablename() with an erroneous argument.".($err == '' ? '' : " Possible cause: $err"));
// Sendet eine SQL Anfrage an MySQL, ohne Ergebniszeilen abzuholen und zu puffern
function mysql_unbuffered_query($query, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_unbuffered_query(). No valid connection to server.");
// http://php.net/manual/de/mysqlinfo.concepts.buffering.php
// https://stackoverflow.com/questions/1982016/unbuffered-query-with-mysqli?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
$li->real_query($query);
$li->use_result();
}
$result->data_seek($i);
return mysql_fetch_array($result)[0];
}
 
// Zeigt die aktuelle Thread ID an
function mysql_thread_id($link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_thread_id(). No valid connection to server.");
 
return $li->thread_id;
}
 
// Sendet eine SQL Anfrage an MySQL, ohne Ergebniszeilen abzuholen und zu puffern
function mysql_unbuffered_query($query, $link_identifier=NULL) {
global $vts_mysqli;
$li = is_null($link_identifier) ? $vts_mysqli : $link_identifier;
if (is_null($li)) throw new Exception("Cannot execute mysql_unbuffered_query(). No valid connection to server.");
 
// http://php.net/manual/de/mysqlinfo.concepts.buffering.php
// https://stackoverflow.com/questions/1982016/unbuffered-query-with-mysqli?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
$li->real_query($query);
$li->use_result();
}
 
unset($xxx_directories_need_mysql);
unset($xxx_directory_need_mysql);
/trunk/php_auto_pre/002-register-globals.php
1,24 → 1,26
<?php
 
$xxx_directories_need_registerglobals = array(
// Webseiten, die teilweise noch register_globals erfordern
'/home/viathinksoft/public_html',
'/home/weiherhaus/public_html',
'/home/gastro-websoft/public_html'
);
$xxx_vts_prepend_config = array();
if (file_exists($xxx_vts_prepend_config_file = __DIR__.'/config.local.php')) include $xxx_vts_prepend_config_file;
unset($xxx_vts_prepend_config_file);
$xxx_directories_need_registerglobals = $xxx_vts_prepend_config['directories_need_registerglobals'];
unset($xxx_vts_prepend_config);
 
// ---
 
$xxx_go = false;
foreach ($xxx_directories_need_registerglobals as $xxx_directory_need_registerglobals) {
if ($xxx_negate = (substr($xxx_directory_need_registerglobals,0,1) === '!')) {
$xxx_directory_need_registerglobals = substr($xxx_directory_need_registerglobals,1);
}
if (strpos($_SERVER['SCRIPT_FILENAME'], $xxx_directory_need_registerglobals) === 0) {
$xxx_go = true;
$xxx_go = !$xxx_negate;
}
unset($xxx_negate);
}
unset($xxx_directories_need_registerglobals);
unset($xxx_directory_need_registerglobals);
 
if ($xxx_go) {
# Warum so viele ___ ? Damit man auf keinen Fall ein GET/POST Argument mit diesen Variablen überschreibt!
# Warum so viele ___ ? Damit man auf keinen Fall ein GET/POST Argument mit diesen Variablen überschreibt!
foreach ($_REQUEST as $___key___ => $___val___) {
global ${$___key___};
${$___key___} = $___val___;
/trunk/php_auto_pre/003-ereg-functions.php
1,19 → 1,24
<?php
 
$xxx_directories_need_ereg = array(
'/home/villariva' // Gästebuch arbeitet noch mit ereg... (/home/villariva/public_html/includes/misc_functions.php)
);
$xxx_vts_prepend_config = array();
if (file_exists($xxx_vts_prepend_config_file = __DIR__.'/config.local.php')) include $xxx_vts_prepend_config_file;
unset($xxx_vts_prepend_config_file);
$xxx_directories_need_ereg = $xxx_vts_prepend_config['directories_need_ereg'] ?? array();
unset($xxx_vts_prepend_config);
 
// ---
 
$xxx_go = false;
foreach ($xxx_directories_need_ereg as $xxx_directory_need_ereg) {
if ($xxx_negate = (substr($xxx_directory_need_ereg,0,1) === '!')) {
$xxx_directory_need_ereg = substr($xxx_directory_need_ereg,1);
}
if (strpos($_SERVER['SCRIPT_FILENAME'], $xxx_directory_need_ereg) === 0) {
$xxx_go = true;
$xxx_go = !$xxx_negate;
}
unset($xxx_negate);
}
unset($xxx_directories_need_ereg);
unset($xxx_directory_need_ereg);
 
if ($xxx_go) {
if (function_exists('ereg') !== true) {
function ereg($pattern, $string, &$regs) {
/trunk/php_auto_pre/004-anti-xss.php
2,17 → 2,18
 
// ATTENTION: This is a very simple XSS "Firewall". There ARE many other ways to do an XSS attack, so please don't rely on this script!
 
$xxx_directories_need_anti_xss = array(
'/home/'
);
$xxx_vts_prepend_config = array();
if (file_exists($xxx_vts_prepend_config_file = __DIR__.'/config.local.php')) include $xxx_vts_prepend_config_file;
unset($xxx_vts_prepend_config_file);
$xxx_directories_need_anti_xss = $xxx_vts_prepend_config['directories_need_anti_xss'];
unset($xxx_vts_prepend_config);
 
// ---
 
function ___check_xss___($str) {
$ary = is_array($str) ? $str : array($str);
foreach ($ary as $str) {
if ((stripos($str, '<svg') !== false) || (stripos($str, '<script') !== false)) {
@header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
#@header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
@header($_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400);
die('There is a problem with the data you have entered. Please write us an email if you think you received this message in error. info at viathinksoft.de');
}
}
22,12 → 23,16
 
$xxx_go = false;
foreach ($xxx_directories_need_anti_xss as $xxx_directory_need_anti_xss) {
if ($xxx_negate = (substr($xxx_directory_need_anti_xss,0,1) === '!')) {
$xxx_directory_need_anti_xss = substr($xxx_directory_need_anti_xss,1);
}
if (strpos($_SERVER['SCRIPT_FILENAME'], $xxx_directory_need_anti_xss) === 0) {
$xxx_go = true;
$xxx_go = !$xxx_negate;
}
}
unset($xxx_directories_need_anti_xss);
unset($xxx_directory_need_anti_xss);
 
if ($xxx_go) {
if (isset($_SERVER['REQUEST_URI'])) ___check_xss___($_SERVER['REQUEST_URI']);
if (isset($_SERVER['QUERY_STRING'])) ___check_xss___($_SERVER['QUERY_STRING']);
35,7 → 40,7
if (isset($_SERVER['SCRIPT_URL'])) ___check_xss___($_SERVER['SCRIPT_URL']);
if (isset($_SERVER['PHP_SELF'])) ___check_xss___($_SERVER['PHP_SELF']);
 
# Warum so viele ___ ? Damit man auf keinen Fall ein GET/POST Argument mit diesen Variablen überschreibt!
# Warum so viele ___ ? Damit man auf keinen Fall ein GET/POST Argument mit diesen Variablen überschreibt!
foreach ($_REQUEST as $___key___ => $___val___) {
___check_xss___($___val___);
}
/trunk/php_auto_pre/config.dist.php
0,0 → 1,34
<?php
 
// PLEASE DO NOT EDIT THIS FILE!
// INSTEAD, COPY IT TO config.local.php AND THEN EDIT IT
 
// Add directories which need mysql_* methods (plugin 001)
// Add '!' in front of a dir to exclude the directory instead of including it
$xxx_vts_prepend_config['directories_need_mysql'] = array(
'/'
);
 
// Add directories which need register globals (plugin 002)
// Add '!' in front of a dir to exclude the directory instead of including it
$xxx_vts_prepend_config['directories_need_registerglobals'] = array(
# '/home/user1/',
# '!/home/user1/secure/',
# '/home/user2/'
);
 
// Add directories which need ereg_* methods (plugin 003)
// Add '!' in front of a dir to exclude the directory instead of including it
$xxx_vts_prepend_config['directories_need_ereg'] = array(
# '/home/user1/',
# '!/home/user1/secure/',
# '/home/user2/'
);
 
// Add directories which are protected with a (weak) XSS WAF (plugin 004)
// Add '!' in front of a dir to exclude the directory instead of including it
$xxx_vts_prepend_config['directories_need_anti_xss'] = array(
# '/home/user1/',
# '!/home/user1/secure/',
# '/home/user2/'
);
/trunk/php_auto_pre
Property changes:
Added: svn:ignore
+config.local.php
+