dolibarr 25.0.0-alpha
filefunc.inc.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2003 Xavier Dutoit <doli@sydesy.com>
4 * Copyright (C) 2004-2025 Laurent Destailleur <eldy@users.sourceforge.net>
5 * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
6 * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
7 * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com>
8 * Copyright (C) 2005 Simon Tosser <simon@kornog-computing.com>
9 * Copyright (C) 2006 Andre Cianfarani <andre.cianfarani@acdeveloppement.net>
10 * Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
11 * Copyright (C) 2015 Bahfir Abbes <bafbes@gmail.com>
12 * Copyright (C) 2024-2026 MDW <mdeweerd@users.noreply.github.com>
13 * Copyright (C) 2024-2026 Frédéric France <frederic.france@free.fr>
14 * Copyright (C) 2026 Nathan Pixodeo <nathan@pixodeo.net>
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 3 of the License, or
19 * (at your option) any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this program. If not, see <https://www.gnu.org/licenses/>.
28 */
29
38require_once 'version.inc.php'; // Define the DOL_VERSION
39
40// Dolibarr must always work with numeric in english format when they are in memory (example: 1234.56)
41setlocale(LC_NUMERIC, 'C');
42
43// Define syslog constants
44if (!defined('LOG_DEBUG')) {
45 if (!function_exists("syslog")) {
46 // For PHP versions without syslog (like running on Windows OS)
47 define('LOG_EMERG', 0);
48 define('LOG_ALERT', 1);
49 define('LOG_CRIT', 2);
50 define('LOG_ERR', 3);
51 define('LOG_WARNING', 4);
52 define('LOG_NOTICE', 5);
53 define('LOG_INFO', 6);
54 define('LOG_DEBUG', 7);
55 }
56}
57
58// End of common declaration part
59if (defined('DOL_INC_FOR_VERSION_ERROR')) {
60 return;
61}
62
63
70{
71 session_start();
72}
73
80{
81 return session_regenerate_id();
82}
83
91function dol_session_rotate($sessionname = '')
92{
93 //$oldsessionid = session_id();
94
95 // Backup the current session
96 $session_backup = $_SESSION;
97
98 // Set current session to expire in 1 minute
99 $_SESSION['OBSOLETE'] = true;
100 $_SESSION['EXPIRES'] = time() + 60;
101
102 // Close the current session
103 session_write_close();
104
105 // Set a new session id and start the session
106 session_name($sessionname);
108
109 // Restore the previous session backup
110 $_SESSION = $session_backup;
111
112 // Clean up
113 unset($session_backup);
114 unset($_SESSION['OBSOLETE']);
115 unset($_SESSION['EXPIRES']);
116
117 //$newsessionid = session_id();
118 //var_dump("oldsessionid=".$oldsessionid." - newsessionid=".$newsessionid);
119}
120
121
122
123// Define localization of conf file
124// --- Start of part replaced by Dolibarr packager makepack-dolibarr
125$conffile = "conf/conf.php";
126$conffiletoshow = "htdocs/conf/conf.php";
127// For debian/redhat like systems
128//$conffile = "/etc/dolibarr/conf.php";
129//$conffiletoshow = "/etc/dolibarr/conf.php";
130
131
132// Include configuration
133// --- End of part replaced by Dolibarr packager makepack-dolibarr
134
135// Include configuration
136// @phpstan-ignore-next-line
137$result = @include_once $conffile; // Keep @ because with some error reporting mode, this breaks the redirect done when file is not found
185/*
186 * Redirect if install not done
187 */
188
189if (!$result && !empty($_SERVER["GATEWAY_INTERFACE"])) { // If install not done and we are in a web session
190 if (!empty($_SERVER["CONTEXT_PREFIX"])) { // CONTEXT_PREFIX and CONTEXT_DOCUMENT_ROOT are not defined on all apache versions
191 $path = $_SERVER["CONTEXT_PREFIX"]; // example '/dolibarr/' when using an apache alias.
192 if (!preg_match('/\/$/', $path)) {
193 $path .= '/';
194 }
195 } elseif (preg_match('/index\.php/', $_SERVER['PHP_SELF'])) {
196 // When we ask index.php, we MUST BE SURE that $path is '' at the end. This is required to make install process
197 // when using apache alias like '/dolibarr/' that point to htdocs.
198 // Note: If calling page was an index.php not into htdocs (ie comm/index.php, ...), then this redirect will fails,
199 // but we don't want to change this because when URL is correct, we must be sure the redirect to install/index.php will be correct.
200 $path = '';
201 } else {
202 // If what we look is not index.php, we can try to guess location of root. May not work all the time.
203 // There is no real solution, because the only way to know the apache url relative path is to have it into conf file.
204 // If it fails to find correct $path, then only solution is to ask user to enter the correct URL to index.php or install/index.php
205 $TDir = explode('/', $_SERVER['PHP_SELF']);
206 $path = '';
207 $i = count($TDir);
208 while ($i--) {
209 if (empty($TDir[$i]) || $TDir[$i] == 'htdocs') {
210 break;
211 }
212 if ($TDir[$i] == 'dolibarr') {
213 break;
214 }
215 if (substr($TDir[$i], -4, 4) == '.php') {
216 continue;
217 }
218
219 $path .= '../';
220 }
221 }
222
223 header("Location: ".$path."install/index.php");
224
225 /*
226 print '<br><center>';
227 print 'The conf/conf.php file was not found or is not readable by the web server. If this is your first access, <a href="'.$path.'install/index.php">click here to start the Dolibarr installation process</a> to create it...';
228 print '</center><br>';
229 */
230
231 exit;
232}
233
234// Force PHP error_reporting setup (Dolibarr may report warning without this)
235if (version_compare(phpversion(), '8.4', '<')) {
236 if (!empty($dolibarr_strict_mode)) {
237 error_reporting(E_ALL | E_STRICT);
238 } else {
239 error_reporting(E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED));
240 }
241} else {
242 // E_STRICT is deprecated since PHP 8.4
243 if (!empty($dolibarr_strict_mode)) {
244 error_reporting(E_ALL);
245 } else {
246 error_reporting(E_ALL & ~(E_NOTICE | E_DEPRECATED));
247 }
248}
249
250// Disable php display errors
251if (!empty($dolibarr_main_prod)) {
252 ini_set('display_errors', 'Off');
253}
254
255// Clean parameters
256$dolibarr_main_data_root = (empty($dolibarr_main_data_root) ? '' : trim($dolibarr_main_data_root));
257$dolibarr_main_url_root = trim(preg_replace('/\/+$/', '', empty($dolibarr_main_url_root) ? '' : $dolibarr_main_url_root));
258$dolibarr_main_url_root_alt = (empty($dolibarr_main_url_root_alt) ? '' : trim($dolibarr_main_url_root_alt));
259$dolibarr_main_document_root = (empty($dolibarr_main_document_root) ? '' : trim($dolibarr_main_document_root));
260$dolibarr_main_document_root_alt = (empty($dolibarr_main_document_root_alt) ? '' : trim($dolibarr_main_document_root_alt));
261
262if (!isset($dolibarr_main_db_port)) {
263 $dolibarr_main_db_port = 3306; // For compatibility with old configs, if not defined, we take 'mysql' type
264}
265if (empty($dolibarr_main_db_type)) {
266 $dolibarr_main_db_type = 'mysqli'; // For compatibility with old configs, if not defined, we take 'mysql' type
267}
268
269// Mysql driver support has been removed in favor of mysqli
270if ($dolibarr_main_db_type == 'mysql') {
271 $dolibarr_main_db_type = 'mysqli';
272}
273if (empty($dolibarr_main_db_prefix)) {
274 $dolibarr_main_db_prefix = 'llx_';
275}
276if (empty($dolibarr_main_db_character_set)) {
277 $dolibarr_main_db_character_set = ($dolibarr_main_db_type == 'mysqli' ? 'utf8' : ''); // Old installation
278}
279if (empty($dolibarr_main_db_collation)) {
280 $dolibarr_main_db_collation = ($dolibarr_main_db_type == 'mysqli' ? 'utf8_unicode_ci' : ''); // Old installation
281}
282if (empty($dolibarr_main_db_encryption)) {
283 $dolibarr_main_db_encryption = 0;
284}
285if (empty($dolibarr_main_db_cryptkey)) {
286 $dolibarr_main_db_cryptkey = '';
287}
288if (empty($dolibarr_main_limit_users)) {
289 $dolibarr_main_limit_users = 0;
290}
291if (empty($dolibarr_main_limit_sessions_per_user)) {
292 $dolibarr_main_limit_sessions_per_user = 0;
293}
294if (empty($dolibarr_mailing_limit_sendbyweb)) {
295 $dolibarr_mailing_limit_sendbyweb = 0;
296}
297if (empty($dolibarr_mailing_limit_sendbycli)) {
298 $dolibarr_mailing_limit_sendbycli = 0;
299}
300if (empty($dolibarr_mailing_limit_sendbyday)) {
301 $dolibarr_mailing_limit_sendbyday = 0;
302}
303if (empty($dolibarr_strict_mode)) {
304 $dolibarr_strict_mode = 0; // For debug in php strict mode
305}
306
307if (!defined('DOL_DOCUMENT_ROOT')) {
308 define('DOL_DOCUMENT_ROOT', $dolibarr_main_document_root); // Filesystem core php (htdocs)
309}
310
311// @phpstan-ignore-next-line if.alwaysTrue
312if (empty(DOL_DOCUMENT_ROOT) || !file_exists(DOL_DOCUMENT_ROOT."/core/lib/functions.lib.php")) {
313 print "Error: Dolibarr config file content seems to be not correctly defined";
314 if (empty($dolibarr_main_document_root)) {
315 print " (dolibarr_main_document_root can't be unknown).<br>\n";
316 } else {
317 print " (file ".DOL_DOCUMENT_ROOT."/core/lib/functions.lib.php not found).<br>\n";
318 }
319 print "Please run dolibarr setup by calling page <b>/install</b>.<br>\n";
320 exit(1);
321}
322
323
324// Included by default (must be before the CSRF check so wa can use the dol_syslog)
325include_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
326include_once DOL_DOCUMENT_ROOT.'/core/lib/html.lib.php';
327include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php';
328include_once DOL_DOCUMENT_ROOT.'/blockedlog/lib/securitycore.lib.php';
329//print memory_get_usage();
330
331
332// Security: CSRF protection
333// This test check if referrer ($_SERVER['HTTP_REFERER']) is same web site than Dolibarr ($_SERVER['HTTP_HOST'])
334// when we post forms (we allow GET and HEAD to accept direct link from a particular page).
335// Note about $_SERVER[HTTP_HOST/SERVER_NAME]: http://shiflett.org/blog/2006/mar/server-name-versus-http-host
336// See also CSRF protections done into main.inc.php
337if (!defined('NOCSRFCHECK') && isset($dolibarr_nocsrfcheck) && $dolibarr_nocsrfcheck == 1) { // If $dolibarr_nocsrfcheck is 0, there is a strict CSRF test with token in main
338 if (!empty($_SERVER['REQUEST_METHOD']) && !in_array($_SERVER['REQUEST_METHOD'], array('GET', 'HEAD')) && !empty($_SERVER['HTTP_HOST'])) {
339 $csrfattack = false;
340 if (empty($_SERVER['HTTP_REFERER'])) {
341 $csrfattack = true; // An evil browser was used
342 } else {
343 $tmpa = parse_url($_SERVER['HTTP_HOST']);
344 $tmpb = parse_url($_SERVER['HTTP_REFERER']);
345 if ((empty($tmpa['host']) ? $tmpa['path'] : $tmpa['host']) != (empty($tmpb['host']) ? $tmpb['path'] : $tmpb['host'])) {
346 $csrfattack = true;
347 }
348 }
349 if ($csrfattack) {
350 //print 'NOCSRFCHECK='.defined('NOCSRFCHECK').' REQUEST_METHOD='.$_SERVER['REQUEST_METHOD'].' HTTP_HOST='.$_SERVER['HTTP_HOST'].' HTTP_REFERER='.$_SERVER['HTTP_REFERER'];
351 // Note: We can't use dol_escape_htmltag here to escape output because lib functions.lib.ph is not yet loaded.
352 dol_syslog("--- Access to ".(empty($_SERVER["REQUEST_METHOD"]) ? '' : $_SERVER["REQUEST_METHOD"].' ').$_SERVER["PHP_SELF"]." refused by CSRF protection (Bad referrer).", LOG_WARNING);
353 print "Access refused by CSRF protection in main.inc.php. Referrer of form (".htmlentities(empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'], ENT_COMPAT, 'UTF-8').") is outside the server that serve this page (with method = ".htmlentities($_SERVER['REQUEST_METHOD'], ENT_COMPAT, 'UTF-8').").\n";
354 print "If you access your server behind a proxy using url rewriting, you might check that all HTTP headers are propagated (or add the line \$dolibarr_nocsrfcheck=1 into your conf.php file to remove this security check).\n";
355 die;
356 }
357 }
358 // Another test is done later on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on.
359}
360if (empty($dolibarr_main_db_host) && !defined('NOREQUIREDB')) {
361 print '<div class="center">Dolibarr setup is not yet complete.<br><br>'."\n";
362 print '<a href="install/index.php">Click here to finish Dolibarr install process</a> ...</div>'."\n";
363 die;
364}
365if (empty($dolibarr_main_url_root) && !defined('NOREQUIREVIRTUALURL')) {
366 print 'Value for parameter \'dolibarr_main_url_root\' is not defined in your \'htdocs\conf\conf.php\' file.<br>'."\n";
367 print 'You must add this parameter with your full Dolibarr root Url (Example: http://myvirtualdomain/ or http://mydomain/mydolibarrurl/)'."\n";
368 die;
369}
370
371if (empty($dolibarr_main_url_root_alt)) {
372 $dolibarr_main_url_root_alt = '/custom';
373}
374if (empty($dolibarr_main_document_root_alt)) {
375 $dolibarr_main_document_root_alt = $dolibarr_main_document_root.'/custom';
376}
377
378if (empty($dolibarr_main_data_root)) {
379 // If directory not defined, we use the default hardcoded value
380 $dolibarr_main_data_root = str_replace("/htdocs", "", $dolibarr_main_document_root);
381 $dolibarr_main_data_root .= "/documents";
382}
383
384// Define some constants
385define('DOL_CLASS_PATH', 'class/'); // Filesystem path to class dir (defined only for some code that want to be compatible with old versions without this parameter)
386define('DOL_DATA_ROOT', $dolibarr_main_data_root); // Filesystem data (documents)
387// Try to autodetect DOL_MAIN_URL_ROOT and DOL_URL_ROOT when root is not directly the main domain.
388// Note: autodetect works only in case 1, 2, 3 and 4 of phpunit test CoreTest.php. For case 5, 6, only setting value into conf.php will works.
389$tmp = '';
390$found = 0;
391$real_dolibarr_main_document_root = str_replace('\\', '/', realpath($dolibarr_main_document_root)); // A) Value found into config file, to say where are store htdocs files. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs
392if (!empty($_SERVER["DOCUMENT_ROOT"])) {
393 $pathroot = $_SERVER["DOCUMENT_ROOT"]; // B) Value reported by web server setup (not defined on CLI mode), to say where is root of web server instance. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs
394} else {
395 $pathroot = 'NOTDEFINED';
396}
397$paths = explode('/', str_replace('\\', '/', $_SERVER["SCRIPT_NAME"])); // C) Value reported by web server, to say full path on filesystem of a file. Ex: /dolibarr/htdocs/admin/system/phpinfo.php
398// Try to detect if $_SERVER["DOCUMENT_ROOT"]+start of $_SERVER["SCRIPT_NAME"] is $dolibarr_main_document_root. If yes, relative url to add before dol files is this start part.
399$concatpath = '';
400$tmp3 = '';
401foreach ($paths as $tmppath) { // We check to find (B+start of C)=A
402 if (empty($tmppath)) {
403 continue;
404 }
405 $concatpath .= '/'.$tmppath;
406 //if ($tmppath) $concatpath.='/'.$tmppath;
407 //print $_SERVER["SCRIPT_NAME"].'-'.$pathroot.'-'.$concatpath.'-'.$real_dolibarr_main_document_root.'-'.realpath($pathroot.$concatpath).'<br>';
408 if ($real_dolibarr_main_document_root == @realpath($pathroot.$concatpath)) { // @ avoid warning when safe_mode is on.
409 //print "Found relative url = ".$concatpath;
410 $tmp3 = $concatpath;
411 $found = 1;
412 break;
413 }
414 //else print "Not found yet for concatpath=".$concatpath."<br>\n";
415}
416
417//print "found=".$found." dolibarr_main_url_root=".$dolibarr_main_url_root."\n";
418if (!$found) {
419 // There is no subdir that compose the main url root or autodetect fails (Ie: when using apache alias that point outside default DOCUMENT_ROOT).
421} else {
422 // Note:when using ip: $_SERVER["SERVER_NAME"] contains 'localhost' when $_SERVER["HTTP_HOST"] contains '192.168.0.1' but $_SERVER["HTTP_HOST"] is forged by client and not reliable.
423 // so we prefer use the $_SERVER["SERVER_NAME"] even if not similar to url of user.
424 $tmp = 'http'.((!isHTTPS() && (empty($_SERVER["SERVER_PORT"]) || $_SERVER["SERVER_PORT"] != 443)) ? '' : 's').'://'.$_SERVER["SERVER_NAME"].((empty($_SERVER["SERVER_PORT"]) || $_SERVER["SERVER_PORT"] == 80 || $_SERVER["SERVER_PORT"] == 443) ? '' : ':'.$_SERVER["SERVER_PORT"]).($tmp3 ? (preg_match('/^\//', $tmp3) ? '' : '/').$tmp3 : '');
425}
426
427//print "tmp1=".$tmp1." tmp2=".$tmp2." tmp3=".$tmp3." tmp=".$tmp."\n";
428if (!empty($dolibarr_main_force_https)) {
429 $tmp = preg_replace('/^http:/i', 'https:', $tmp);
430}
431
432define('DOL_MAIN_URL_ROOT', $tmp); // URL absolute root (https://sss/dolibarr, ...)
433$uri = preg_replace('/^http(s?):\/\//i', '', constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http*
434$suburi = strstr($uri, '/'); // $suburi contains url without domain:port
435if (empty($suburi) || $suburi === '/') {
436 $suburi = ''; // If $suburi is null or /, it is now ''
437}
438if (!defined('DOL_URL_ROOT')) {
439 define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...)
440}
441//print DOL_MAIN_URL_ROOT.'-'.DOL_URL_ROOT."\n";
442
443// Define prefix MAIN_DB_PREFIX
444define('MAIN_DB_PREFIX', $dolibarr_main_db_prefix);
445
446
447/*
448 * Define PATH to external libraries
449 * To use other version than embedded libraries, define here constant to path. Use '' to use include class path autodetect.
450 */
451// Path to root libraries
452if (!defined('TCPDF_PATH')) {
453 define('TCPDF_PATH', (empty($dolibarr_lib_TCPDF_PATH)) ? DOL_DOCUMENT_ROOT.'/includes/tecnickcom/tcpdf/' : $dolibarr_lib_TCPDF_PATH.'/');
454}
455if (!defined('TCPDI_PATH')) {
456 define('TCPDI_PATH', (empty($dolibarr_lib_TCPDI_PATH)) ? DOL_DOCUMENT_ROOT.'/includes/tcpdi/' : $dolibarr_lib_TCPDI_PATH.'/');
457}
458if (!defined('NUSOAP_PATH')) {
459 define('NUSOAP_PATH', (!isset($dolibarr_lib_NUSOAP_PATH)) ? DOL_DOCUMENT_ROOT.'/includes/nusoap/lib/' : (empty($dolibarr_lib_NUSOAP_PATH) ? '' : $dolibarr_lib_NUSOAP_PATH.'/'));
460}
461if (!defined('PHPEXCELNEW_PATH')) {
462 define('PHPEXCELNEW_PATH', (!isset($dolibarr_lib_PHPEXCELNEW_PATH)) ? DOL_DOCUMENT_ROOT.'/includes/phpoffice/phpspreadsheet/src/PhpSpreadsheet/' : (empty($dolibarr_lib_PHPEXCELNEW_PATH) ? '' : $dolibarr_lib_PHPEXCELNEW_PATH.'/'));
463}
464if (!defined('ODTPHP_PATH')) {
465 define('ODTPHP_PATH', (!isset($dolibarr_lib_ODTPHP_PATH)) ? DOL_DOCUMENT_ROOT.'/includes/odtphp/' : (empty($dolibarr_lib_ODTPHP_PATH) ? '' : $dolibarr_lib_ODTPHP_PATH.'/'));
466}
467if (!defined('ODTPHP_PATHTOPCLZIP')) {
468 define('ODTPHP_PATHTOPCLZIP', (!isset($dolibarr_lib_ODTPHP_PATHTOPCLZIP)) ? DOL_DOCUMENT_ROOT.'/includes/odtphp/zip/pclzip/' : (empty($dolibarr_lib_ODTPHP_PATHTOPCLZIP) ? '' : $dolibarr_lib_ODTPHP_PATHTOPCLZIP.'/'));
469}
470if (!defined('JS_CKEDITOR')) {
471 define('JS_CKEDITOR', (!isset($dolibarr_js_CKEDITOR)) ? '' : (empty($dolibarr_js_CKEDITOR) ? '' : $dolibarr_js_CKEDITOR.'/'));
472}
473if (!defined('JS_JQUERY')) {
474 define('JS_JQUERY', (!isset($dolibarr_js_JQUERY)) ? '' : (empty($dolibarr_js_JQUERY) ? '' : $dolibarr_js_JQUERY.'/'));
475}
476if (!defined('JS_JQUERY_UI')) {
477 define('JS_JQUERY_UI', (!isset($dolibarr_js_JQUERY_UI)) ? '' : (empty($dolibarr_js_JQUERY_UI) ? '' : $dolibarr_js_JQUERY_UI.'/'));
478}
479// Other required path
480if (!defined('DOL_DEFAULT_TTF')) {
481 define('DOL_DEFAULT_TTF', (!isset($dolibarr_font_DOL_DEFAULT_TTF)) ? DOL_DOCUMENT_ROOT.'/includes/fonts/Aerial.ttf' : (empty($dolibarr_font_DOL_DEFAULT_TTF) ? '' : $dolibarr_font_DOL_DEFAULT_TTF));
482}
483if (!defined('DOL_DEFAULT_TTF_BOLD')) {
484 define('DOL_DEFAULT_TTF_BOLD', (!isset($dolibarr_font_DOL_DEFAULT_TTF_BOLD)) ? DOL_DOCUMENT_ROOT.'/includes/fonts/AerialBd.ttf' : (empty($dolibarr_font_DOL_DEFAULT_TTF_BOLD) ? '' : $dolibarr_font_DOL_DEFAULT_TTF_BOLD));
485}
486
487
488/*
489 * Decode values read in conf file
490 */
491
492// If password is encoded, we decode it. Note: When page is called for install, $dolibarr_main_db_pass may not be defined yet.
493if ((!empty($dolibarr_main_db_pass) && preg_match('/(dolcrypt|crypted):/i', $dolibarr_main_db_pass)) || !empty($dolibarr_main_db_encrypted_pass)) {
494 if (!empty($dolibarr_main_db_pass) && preg_match('/crypted:/i', $dolibarr_main_db_pass)) {
495 $dolibarr_main_db_pass = preg_replace('/crypted:/i', '', $dolibarr_main_db_pass);
496 $dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass; // We need to set this so we can use it later to know the password was initially encrypted
497 $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_pass);
498 } elseif (!empty($dolibarr_main_db_pass) && preg_match('/dolcrypt:/i', $dolibarr_main_db_pass)) {
499 $dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass; // We need to set this so we can use it later to know the password was initially encrypted
500 $dolibarr_main_db_pass = dolDecrypt($dolibarr_main_db_pass, (empty($dolibarr_main_dolcrypt_key) ? (empty($dolibarr_main_instance_unique_id) ? '' : $dolibarr_main_instance_unique_id) : $dolibarr_main_dolcrypt_key));
501 } else {
502 $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
503 }
504}
global $dolibarr_main_url_root
if(!defined('LOG_DEBUG')) if(defined( 'DOL_INC_FOR_VERSION_ERROR')) dol_session_start()
Replace session_start()
dol_session_regenerate_id()
Replace session_regenerate_id()
$conffile
dol_session_rotate($sessionname='')
Destroy and recreate a new session without losing content.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_decode($chain, $key='1')
Decode a base 64 encoded + specific delta change.
dolDecrypt($chain, $key='', $patterntotest='')
Decode a string with a symmetric encryption.
isHTTPS()
Return if we are using a HTTPS connection Check HTTPS (no way to be modified by user but may be empty...