[Corrigé 3.1.20] Apatrophe dans mail LDAP

Vous avez trouvé un bug dans l'application (dernière version stable ou bêta): Décrivez le ici afin que la correction soit intégrée a la prochaine version.
sabrinac
Gsup LEVEL 3
Messages : 86
Enregistré le : mar. 25 avr. 2017 11:11

Bonjour,

Je constate que lorsque le nom de famille contient une apostrophe dans l'AD, la synchronisation s'arrête.
Par ailleurs quand je créée une tache planifiée pour la synchronisation automatique de l'AD, j'ai l'erreur suivante loggué dans le fichier php_error.log : PHP Fatal error: Call to undefined function T_() in D:\Wamp64\www\core\ldap.php on line 86, pourriez-vous m'aider à résoudre ce problème?

Serveur w2012
Wamp 3.0.6
GestSup 3.1.19
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
Avatar du membre
Flox
Administrateur du site
Messages : 9605
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

pouvez vous nous donner la veresion affiché en haut du fichier ./core/ldap.php ?

Pourrez vous essayer de remplacer :

Code : Tout sélectionner

        //variable
	$_GET['ldap']='1';
	$_GET['action']='run';
	

Code : Tout sélectionner

//variable
	$_GET['ldap']='1';
	$_GET['action']='run';

	//locales
	$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
	if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
	else {$_GET['lang'] = 'en_US';}
	define('PROJECT_DIR', realpath('../'));
	define('LOCALE_DIR', PROJECT_DIR .'/locale');
	define('DEFAULT_LOCALE', '($_GET[lang]');
	require_once('../components/php-gettext/gettext.inc');
	$encoding = 'UTF-8';
	$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
	T_setlocale(LC_MESSAGES, $locale);
	T_bindtextdomain($_GET['lang'], LOCALE_DIR);
	T_bind_textdomain_codeset($_GET['lang'], $encoding);
	T_textdomain($_GET['lang']);
Pourrez vous vérifier que cette ligne est bien présente dans le fichier :

Code : Tout sélectionner

$sn = $db->quote($sn); 
est ce lors d'une mise à jour du nom ou à la création de l'utilisateur ?

Cdt
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
sabrinac
Gsup LEVEL 3
Messages : 86
Enregistré le : mar. 25 avr. 2017 11:11

Flox a écrit :Bonjour,

pouvez vous nous donner la veresion affiché en haut du fichier ./core/ldap.php ?

La version est 3.1.19

Pourrez vous essayer de remplacer :

Code : Tout sélectionner

        //variable
	$_GET['ldap']='1';
	$_GET['action']='run';
	

Code : Tout sélectionner

//variable
	$_GET['ldap']='1';
	$_GET['action']='run';

	//locales
	$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
	if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
	else {$_GET['lang'] = 'en_US';}
	define('PROJECT_DIR', realpath('../'));
	define('LOCALE_DIR', PROJECT_DIR .'/locale');
	define('DEFAULT_LOCALE', '($_GET[lang]');
	require_once('../components/php-gettext/gettext.inc');
	$encoding = 'UTF-8';
	$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
	T_setlocale(LC_MESSAGES, $locale);
	T_bindtextdomain($_GET['lang'], LOCALE_DIR);
	T_bind_textdomain_codeset($_GET['lang'], $encoding);
	T_textdomain($_GET['lang']);
La modification ne fonctionne pas

Pourrez vous vérifier que cette ligne est bien présente dans le fichier :

Code : Tout sélectionner

$sn = $db->quote($sn); 
Elle est bien présente

est ce lors d'une mise à jour du nom ou à la création de l'utilisateur ?

Lors de la création de l'utilisateur

Cdt
Cordialement
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
Avatar du membre
Flox
Administrateur du site
Messages : 9605
Enregistré le : jeu. 21 juin 2012 19:00

Pouvez vous modifier le fichier ./core/ldap.php avec:

Code : Tout sélectionner

if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $_SERVER['HTTP_ACCEPT_LANGUAGE']=0;

//call via external script for cron 
if(!isset($rparameters['ldap_user']))
{
	//database connection
	require_once(__DIR__."/../connect.php");
	
	//switch SQL MODE to allow empty values with lastest version of MySQL
	$db->exec('SET sql_mode = ""');
	
	//load parameters table
	$query=$db->query("SELECT * FROM tparameters");
	$rparameters=$query->fetch();
	$query->closeCursor();
	
	//variable
	$_GET['ldap']='1';
	$_GET['action']='run';
	
	//locales
	$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
	if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
	else {$_GET['lang'] = 'en_US';}
	define('PROJECT_DIR', realpath('../'));
	define('LOCALE_DIR', PROJECT_DIR .'/locale');
	define('DEFAULT_LOCALE', '($_GET[lang]');
	require_once(__DIR__.'/../components/php-gettext/gettext.inc');
	$encoding = 'UTF-8';
	$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
	T_setlocale(LC_MESSAGES, $locale);
	T_bindtextdomain($_GET['lang'], LOCALE_DIR);
	T_bind_textdomain_codeset($_GET['lang'], $encoding);
	T_textdomain($_GET['lang']);
}

Code : Tout sélectionner

Call to undefined function T_(
est toujours présente ?

Je ne reproduit pas le problème de mon coté pouvez vous activer le mode debug temporairement et nous donner les messages d'erreurs affichés ?

Cdt
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
sabrinac
Gsup LEVEL 3
Messages : 86
Enregistré le : mar. 25 avr. 2017 11:11

L'erreur n'est plus la même, voici ci-dessous les messages

[25-Apr-2017 13:22:50 Europe/Paris] PHP Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in D:\Wamp64\www\core\ldap.php on line 36
[25-Apr-2017 13:22:50 Europe/Paris] PHP Warning: require_once(../components/php-gettext/gettext.inc): failed to open stream: No such file or directory in D:\Wamp64\www\core\ldap.php on line 42
[25-Apr-2017 13:22:50 Europe/Paris] PHP Fatal error: require_once(): Failed opening required '../components/php-gettext/gettext.inc' (include_path='.;C:\php\pear') in D:\Wamp64\www\core\ldap.php on line 42
Je relance en mode debug le chargement ldap et vous poste le résultat

Cordialement
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
Avatar du membre
Flox
Administrateur du site
Messages : 9605
Enregistré le : jeu. 21 juin 2012 19:00

if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $_SERVER['HTTP_ACCEPT_LANGUAGE']=0;

//call via external script for cron
if(!isset($rparameters['ldap_user']))
{
//database connection
require_once(__DIR__."/../connect.php");

//switch SQL MODE to allow empty values with lastest version of MySQL
$db->exec('SET sql_mode = ""');

//load parameters table
$query=$db->query("SELECT * FROM tparameters");
$rparameters=$query->fetch();
$query->closeCursor();

//variable
$_GET['ldap']='1';
$_GET['action']='run';

//locales
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang=='fr') {$_GET['lang'] = 'fr_FR';}
else {$_GET['lang'] = 'en_US';}
define('PROJECT_DIR', realpath('../'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', '($_GET[lang]');
require_once(__DIR__.'/../components/php-gettext/gettext.inc');
$encoding = 'UTF-8';
$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
T_setlocale(LC_MESSAGES, $locale);
T_bindtextdomain($_GET['lang'], LOCALE_DIR);
T_bind_textdomain_codeset($_GET['lang'], $encoding);
T_textdomain($_GET['lang']);
}
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
sabrinac
Gsup LEVEL 3
Messages : 86
Enregistré le : mar. 25 avr. 2017 11:11

Voici le message d'erreur en mode debug lors de la synchronisation via le bouton

[25-Apr-2017 13:44:37 Europe/Paris] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'XXX@XXX.fr,'')' à la ligne 1' in D:\Wamp64\www\core\ldap.php:437
Stack trace:
#0 D:\Wamp64\www\core\ldap.php(437): PDO->exec('INSERT INTO tus...')
#1 D:\Wamp64\www\admin\user.php(903): include('D:\\Wamp64\\www\\c...')
#2 D:\Wamp64\www\admin.php(26): include('D:\\Wamp64\\www\\a...')
#3 D:\Wamp64\www\index.php(660): include('D:\\Wamp64\\www\\a...')
#4 {main}
thrown in D:\Wamp64\www\core\ldap.php on line 437
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
Avatar du membre
Flox
Administrateur du site
Messages : 9605
Enregistré le : jeu. 21 juin 2012 19:00

par hasard est ce que l'adresse mail en question possède également des apostrophes ?

Cdt
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
sabrinac
Gsup LEVEL 3
Messages : 86
Enregistré le : mar. 25 avr. 2017 11:11

l'@mail contient une apostrophe
ex : tutu.n'om@yahoo.fr
GestSup 3.1.33 Prod W2012 Wamp64 3.1.3 / Apache 2.4.27 /MySQL 5.7.14 / PHP 7.1.8
GestSup 3.1.34Test
Avatar du membre
Flox
Administrateur du site
Messages : 9605
Enregistré le : jeu. 21 juin 2012 19:00

ok c'est pour cela
GestSup: 3.2.53 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3 | https://doc.gestsup.fr/
Répondre