14 if (!defined(
'IN_PEEL')) {
31 function db_connect(&$database_object, $database_name = null, $serveur_mysql = null, $utilisateur_mysql = null, $mot_de_passe_mysql = null, $continue_if_error =
false)
34 if(empty($serveur_mysql)) {
35 $serveur_mysql =
$GLOBALS[
'serveur_mysql'];
37 if(empty($serveur_mysql) || $serveur_mysql==
'votre_serveur_mysql') {
40 if(empty($utilisateur_mysql)) {
41 $utilisateur_mysql =
$GLOBALS[
'utilisateur_mysql'];
43 if(empty($mot_de_passe_mysql)) {
44 $mot_de_passe_mysql =
$GLOBALS[
'mot_de_passe_mysql'];
46 if(empty($database_name) && $database_name!==
false) {
47 $database_name =
$GLOBALS[
'nom_de_la_base'];
49 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
50 $port = @ini_get(
"mysqli.default_port");
55 $socket = @ini_get(
"mysqli.default_socket");
56 if($socket ===
false) {
61 $server_infos = explode(
':',$serveur_mysql);
62 if(isset($server_infos[1])) {
63 if(is_numeric($server_infos[1])){
64 $port = $server_infos[1];
66 $socket = $server_infos[1];
69 if(isset(
$GLOBALS[
'site_parameters'][
'use_database_permanent_connection']) && (
$GLOBALS[
'site_parameters'][
'use_database_permanent_connection'] ===
true || (
$GLOBALS[
'site_parameters'][
'use_database_permanent_connection'] ==
'local' && (strpos(
$GLOBALS[
'wwwroot'],
'://localhost')!==
false || strpos(
$GLOBALS[
'wwwroot'],
'://127.0.0.1')!==
false)))) {
72 $database_object =
new mysqli(
'p:'.$server_infos[0], $utilisateur_mysql, $mot_de_passe_mysql,
'', $port, $socket);
74 $database_object =
new mysqli($server_infos[0], $utilisateur_mysql, $mot_de_passe_mysql,
'', $port, $socket);
76 if (mysqli_connect_error()) {
77 $error_no = mysqli_connect_errno();
78 $error_text = mysqli_connect_error();
81 $database_object = mysql_connect($serveur_mysql, $utilisateur_mysql, $mot_de_passe_mysql);
83 if(!empty($error_no) && !$continue_if_error) {
84 $sujet_du_mail =
'MySQL connection problem (' . mysqli_connect_errno() .
'): '.mysqli_connect_error();
85 $contenu_du_mail =
"The page " . $_SERVER[
'REQUEST_URI'] .
" had an error while trying to connect to MySQL on " . $serveur_mysql .
" - the user is " . $utilisateur_mysql .
". Please check if MySQL is currently launched and if the connection parameters are valid.";
86 $contenu_du_mail .=
"\n\nLa page " . $_SERVER[
'REQUEST_URI'] .
" a provoqué une erreur lors de sa tentative de connexion à MySQL situé sur le serveur " . $serveur_mysql .
" - l'utilisateur est " . $utilisateur_mysql .
". Il faudrait vérifier si le serveur MySQL est actuellement lancé et si les paramètres de connexion sont valides.";
88 send_email(
$GLOBALS[
'support'], $sujet_du_mail, $contenu_du_mail, null, null, null,
'', null);
90 if (!empty(
$GLOBALS[
'site_parameters'][
'display_warning_if_connection_problem'])) {
93 trigger_error($serveur_mysql.
' - ' .$sujet_du_mail, E_USER_NOTICE);
96 if(!empty($database_name)) {
97 $GLOBALS[
'selection_de_la_base'] =
select_db($database_name, $database_object, $continue_if_error);
99 return $database_object;
110 function select_db($database_name, &$database_object, $continue_if_error =
false)
112 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
113 $GLOBALS[
'selection_de_la_base'] = $database_object->select_db($database_name);
115 $GLOBALS[
'selection_de_la_base'] = mysql_select_db($database_name, $database_object);
117 if (!
$GLOBALS[
'selection_de_la_base'] && !$continue_if_error) {
118 if(is_object($database_object) && !empty($database_object->error)) {
119 $contenu_display = $database_object->error;
121 $contenu_display =
'MySQL database selection problem: ' . $database_name;
123 $sujet_du_mail =
"Database selection problem";
124 $contenu_du_mail =
"The page " . $_SERVER[
'REQUEST_URI'] .
" had an error while trying to connect to MySQL database - " . $contenu_display;
126 send_email(
$GLOBALS[
'support'], $sujet_du_mail, $contenu_du_mail, null, null, null,
'', null);
128 if (!empty($display_warning_if_database_object_problem)) {
129 echo $contenu_display;
131 trigger_error($contenu_display, E_USER_ERROR);
135 if (GENERAL_ENCODING ==
'utf-8') {
136 query(
"SET NAMES 'utf8'",
false, $database_object);
137 }
elseif (GENERAL_ENCODING ==
'iso-8859-1') {
138 query(
"SET NAMES 'iso-8859-1'",
false, $database_object);
141 query(
"SET NAMES '" . GENERAL_ENCODING .
"'",
false, $database_object);
143 return $GLOBALS[
'selection_de_la_base'];
158 function query(
$query, $die_if_error =
false, $database_object = null, $silent_if_error =
false, $security_sql_filter =
true)
163 if (defined(
'IN_PEEL_ADMIN') &&
a_priv(
'demo') && ((strpos(strtolower(
$query),
'insert ') !==
false && strpos(strtolower(
$query),
'into ') !==
false) || strpos(strtolower(
$query),
'update ') !==
false || strpos(strtolower(
$query),
'delete ') !==
false || strpos(strtolower(
$query),
'alter ') !==
false)) {
167 if ($security_sql_filter && (strpos(strtolower(
$query),
'information_schema') !==
false || strpos(strtolower(
$query),
'loadfile') !==
false || strpos(strtolower(
$query),
'union all') !==
false) || strpos(strtolower(
$query),
'benchmark(') !==
false) {
171 if(empty($database_object)) {
172 $database_object = &
$GLOBALS[
'database_object'];
174 if (defined(
'PEEL_DEBUG') && PEEL_DEBUG) {
178 while (empty($query_values)) {
181 if (empty($error_number) || in_array($error_number, array(111, 126, 127, 141, 144, 145, 1034, 1053, 1137, 1152, 1154, 1156, 1184, 1205, 1317, 2003, 2006, 2013))) {
185 if(!empty($database_object)) {
193 set_configuration_variable(array(
'technical_code' =>
'mysql_sql_mode_force',
'string' =>
'MYSQL40',
'site_id' => 0,
'origin' =>
'auto'),
true);
195 query(
"SET @@session.sql_mode='MYSQL40");
202 unset($error_number);
204 if(!empty($database_object)) {
205 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
206 if ($silent_if_error) {
207 $query_values = @$database_object->query(
$query);
209 $query_values = $database_object->query(
$query);
212 if ($silent_if_error) {
213 $query_values = @mysql_query(
$query, $database_object);
215 $query_values = mysql_query(
$query, $database_object);
219 if (empty($query_values) && !empty($database_object)) {
221 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
222 $error_number = $database_object->errno;
223 $error_name = $database_object->error;
225 $error_number = mysql_errno($database_object);
226 $error_name = mysql_error($database_object);
234 if (defined(
'PEEL_DEBUG') && PEEL_DEBUG) {
236 $GLOBALS[
'peel_debug'][] = array(
'sql' =>
$query,
'duration' => $end_time - $start_time,
'start' => $start_time -
$GLOBALS[
'script_start_time']);
238 if (!empty($query_values)) {
239 return $query_values;
241 if (!$silent_if_error || in_array($error_number, array(1118))) {
243 $error_message =
vb(
$GLOBALS[
'STR_SQL_ERROR']) .
' ' .
vb($error_number) .
' - ' .
vb($error_name) .
" - " .
vb(
$GLOBALS[
'STR_PAGE']) .
' ' .
vb($_SERVER[
'REQUEST_URI']) .
' - IP ' .
vb($_SERVER[
'REMOTE_ADDR']) .
' - ' .
$query .
' - Error number ';
244 if (empty(
$GLOBALS[
'display_errors']) &&
a_priv(
'admin*',
false)) {
266 if (!empty($query_result)) {
267 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
268 return $query_result->fetch_row();
270 return mysql_fetch_row($query_result);
285 if (!empty($query_result)) {
286 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
287 return $query_result->fetch_assoc();
289 return mysql_fetch_assoc($query_result);
304 if (!empty($query_result)) {
305 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
306 return $query_result->fetch_object();
308 return mysql_fetch_object($query_result);
323 if (!empty($query_result)) {
324 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
325 return $query_result->num_rows;
327 return mysql_num_rows($query_result);
341 if (empty($database_object)) {
342 $database_object = &
$GLOBALS[
'database_object'];
344 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
345 return $database_object->insert_id;
347 return mysql_insert_id();
358 if(empty($database_object)) {
359 $database_object = &
$GLOBALS[
'database_object'];
361 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
362 return $database_object->affected_rows;
364 return mysql_affected_rows();
376 if (is_array($value)) {
377 foreach($value as $this_key => $this_value) {
381 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
382 $value =
$GLOBALS[
'database_object']->real_escape_string($value);
384 $value = mysql_real_escape_string($value);
402 if (is_array($value)) {
403 foreach($value as $this_key => $this_value) {
407 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
426 if (is_array($value)) {
427 foreach($value as $this_key => $this_value) {
431 $value =
String::substr($value, 0, min(
String::strpos(str_replace(array(
'+',
',',
';',
'(',
')',
'!',
'=',
'`',
'|',
'&'),
' ', $value) .
' ',
' '), 60));
432 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
433 $value =
$GLOBALS[
'database_object']->real_escape_string($value);
435 $value = mysql_real_escape_string($value);
454 foreach($array as $key => $value) {
480 if (empty($fields)) {
497 $fields =
get_table_fields($table_name, $link_identifier, $silent_if_error);
498 if (empty($fields)) {
501 foreach($fields as $this_field) {
502 $results[] = $this_field[
'Field'];
518 $fields =
get_table_fields($table_name, $link_identifier, $silent_if_error);
519 if (empty($fields)) {
522 foreach($fields as $this_field) {
523 $results[$this_field[
'Field']] = $this_field[
'Type'];
537 function get_table_index($table_name, $link_identifier = null, $silent_if_error =
false)
544 if (empty($fields)) {
547 foreach($fields as $this_field) {
548 $results[] = $this_field[
'Column_name'];
565 if (!isset($tables_list[$name_part])) {
566 $sql =
"SHOW TABLES FROM `".word_real_escape_string(
$GLOBALS[
'nom_de_la_base']) .
"`";
569 if (empty($name_part) ||
String::strpos($table_name[0], $name_part) !==
false) {
570 $tables_list[$name_part][$table_name[0]] = $table_name[0];
574 return $tables_list[$name_part];
587 static $databases_list;
588 if (!isset($databases_list[$name_part])) {
589 $sql =
"SHOW DATABASES";
592 if ((empty($name_part) ||
String::strpos($table_name[0], $name_part) !==
false) && $table_name[0] !=
"information_schema" && $table_name[0] !=
"mysql") {
593 $databases_list[$name_part][$table_name[0]] = $table_name[0];
597 return $databases_list[$name_part];
607 if(empty($database_object)) {
608 $database_object = &
$GLOBALS[
'database_object'];
610 if(!empty($database_object)) {
611 if(
$GLOBALS[
'site_parameters'][
'mysql_extension'] ==
'mysqli') {
612 $database_object->close();
614 mysql_close(
$GLOBALS[
'database_object']);
static strip_tags($string, $allowed_tags=null)
String::strip_tags()
fetch_row($query_result)
fetch_row()
get_table_index($table_name, $link_identifier=null, $silent_if_error=false)
get_table_index()
static strpos($haystack, $needle, $offset=0)
Returns the numeric position of the first occurrence of needle in the haystack string.
& list_dbs($name_part=null)
Renvoie un tableau avec la liste des bases de données accessibles.
affected_rows($database_object=null)
affected_rows()
word_real_escape_string($value)
Applique real_escape_string dans le cas où on n'insère qu'un seul mot, de moins de 30 caractères...
select_db($database_name, &$database_object, $continue_if_error=false)
select_db()
insert_id($database_object=null)
insert_id()
& listTables($name_part=null)
Renvoie un tableau avec la liste des tables de la base courante.
nohtml_real_escape_string($value, $allowed_tags=null)
Protège les données pour insertion dans MySQL ET supprime les tags HTML pour protéger de toute sorte ...
if(!defined('IN_PEEL')) db_connect(&$database_object, $database_name=null, $serveur_mysql=null, $utilisateur_mysql=null, $mot_de_passe_mysql=null, $continue_if_error=false)
db_connect()
microtime_float()
microtime_float()
real_escape_string($value)
real_escape_string()
query($query, $die_if_error=false, $database_object=null, $silent_if_error=false, $security_sql_filter=true)
The query() function is meant to be called anywhere you want to make a query.
get_table_field_types($table_name, $link_identifier=null, $silent_if_error=false)
get_table_field_types()
if(strlen($date2)== '10') if($type== 'users-by-age'&&a_priv('admin_users', true)) elseif($type== 'forums-count'&&a_priv('admin_content', true)) elseif($type== 'forums-categories'&&a_priv('admin_content', true)) elseif($type== 'users-count'&&a_priv('admin_users', true)) elseif($type== 'product-categories'&&a_priv('admin_products', true)) elseif($type== 'users-by-sex'&&a_priv('admin_users', true)) elseif($type== 'users-by-country'&&a_priv('admin_users', true)) elseif($type== 'sales'&&a_priv('admin_sales', true))
num_rows($query_result)
num_rows()
if(!defined('IN_PEEL')) send_email($to, $mail_subject= '', $mail_content= '', $template_technical_code=null, $template_tags=null, $format=null, $sender=null, $html_add_structure=true, $html_correct_conformity=false, $html_convert_url_to_links=true, $reply_to=null, $attached_files_infos_array=null, $lang=null, $additional_infos_array=array(), $attachment_not_sent_by_email=false)
Envoi d'un email à un utilisateur.
get_table_field_names($table_name, $link_identifier=null, $silent_if_error=false)
get_table_field_names()
fetch_object($query_result)
fetch_object()
fetch_assoc($query_result)
fetch_assoc()
create_sql_from_array($array)
create_sql_from_array()
$GLOBALS['page_columns_count']
a_priv($requested_priv, $demo_allowed=false, $site_configuration_modification=false, $user_id=null)
Renvoie true si l'utilisateur de la session a le privilège $requested_priv ou un droit supérieur Des ...
set_configuration_variable($frm, $update_if_technical_code_exists=false, $allow_create=true)
Ajoute la zone HTML dans la table peel_configuration.
db_close($database_object=null)
db_close()
static substr($string, $start, $length=null)
Returns the portion of string specified by the start and length parameters.
get_table_fields($table_name, $database_object=null, $silent_if_error=false)
get_table_fields()