[RESOLU] Message depuis passage à php 7

Eléphanteau du PHP | 11 Messages

19 juin 2020, 09:53

Bonjour, sur mon site, j'héberge un forum phpBB et je me sers de l'inscription à celui-ci pour autoriser certains utilisateurs de mon site à remplir des formulaires de saisie. J'ai passé le serveur de mon site de php 5.x à php 7 et depuis, j'ai un message qui apparait lorsque l'utilisateur n'est pas inscrit au forum.

Voici le message :

[phpBB Debug] PHP Warning: in file /home/collecti/www/gestion/html/proposer_lien.php on line 10: Use of undefined constant Anonymous - assumed 'Anonymous' (this will throw an Error in a future version of PHP)


et le code :

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './../../phpBB3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$request->enable_super_globals();
if($user->data['username'] == Anonymous)
{
echo('Vous devez &ecirc;tre inscrit et connect&eacute; au forum pour ajouter un lien');
echo'<br/><br/><a href="http://www.yyyyy.fr/phpBB3/ucp.php?mode ... xxxxxx">Me connecter ou m\'enregistrer au forum</a>';
}
else
{
?>


ce code est en début du fichier php affichant (ou pas) le formulaire.

Je poste dans php débutant, car même si j'utilise php depuis longtemps, mon niveau est basique.

Merci de votre aide.

Avatar du membre
Mammouth du PHP | 1609 Messages

19 juin 2020, 11:35

Salut, la constante Anonymous n'est pas définie. Normalement tu devrais avoir quelque part un define('Anonymous', valeur) ce qui semble ne pas être le cas.
Développeur web depuis + de 20 ans

Mammouth du PHP | 1967 Messages

19 juin 2020, 11:37

php t'indique que tu utilise une constante qui n'éxiste pas et que tu appelle Anonymous

et à la ligne 10 f($user->data['username'] == Anonymous)
ne devrais tu pas écrire f($user->data['username'] == 'Anonymous')
???
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Mammouth du PHP | 1609 Messages

19 juin 2020, 11:50

J'ai jeté un oeil sur le repo git et dans la dernière version sur git la constante ANONYMOUS (tout en majuscules) est définie dans plusieurs fichiers comme ceci :
define('ANONYMOUS', 1);
J'ai bien l'impression aussi de ce que j'ai pu voir vite fait qu'il y a une sorte de user Anonymous dont le username serait bien Anonymous et dont le user_id serait égale à 1 (la valeur de la constante ANONYMOUS).
Donc dans ton code, il faudrait à priori faire comme Spols le suggère et comparer le username à la chaine Anonymous et non à une constante Anonymous inexistante.
Pour le moment ton code doit fonctionner car la constante inexistante est alors considérée comme une chaine de caractère mais il est bien précisé que dans une futur version de php cela lèvera une erreur, sous entendu bloquante à mon sens.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 11 Messages

19 juin 2020, 12:05

Bonjour à tous et surtout merci

en suivant ce que dit spols, c'est impeccable.

voilà un souci de résolu.

Bonne journée