CCDMD / netquizweb

Netquiz Web est une application multilingue, multiplateforme et multiutilisateur qui permet de constituer une banque d'items de 14 types différents et de publier des exercices formatifs, des jeux-questionnaires ou des tests d'un simple clic. Dans tous les types d'items, il est possible d'insérer des images, des textes, des sons et des séquences vidéos et de personnaliser de nombreux paramètres. On peut également ajouter un glossaire, de sorte que des termes et expressions s'affichent en relief dans le questionnaire, permettant aux répondants d'obtenir leur définition sous forme de texte, d'image, de vidéo, de son ou de liens.
Other
5 stars 3 forks source link

Erreur premier demarrage #1

Closed Sebseb01 closed 10 years ago

Sebseb01 commented 10 years ago

Bonjour,

Lors du premier lancement de l'application j'ai rencontrer l'erreur suivante : Call to a member function setProjetCourant() on a non-object in app/init.php

Pour contourner le problème, j'ai commenter la ligne : $session->set("projetActif", $idProjetActif . " - " . $projetActif->get("titre"));

Car le $session->set écrase l'objet projetActif

(Ce n'est probablement pas une bonne solution)

RichardDumoulin commented 10 years ago

Bonjour Sebseb01!

En fait le problème vient de la 2e ligne de code ici :

// Ajouter le projet à la session
$session->set("projetActif", $idProjetActif . " - " . $projetActif->get("titre"));
$projetActif->setProjetCourant($idProjetActif);

$projetActif ne pointe pas à un objet de type projet.

Par curiosité, après avoir exécuté le SQL, avez-vous complété l'installation en créant un administrateur et un projet (avec app/install.php)?

Je vous recommande de ne pas commenter la ligne précédente ($session->set...), elle n'a rien à voir avec le problème et je peux témoigner de son innocence dans le cas qui nous intéresse :)

Merci et A+

Sebseb01 commented 10 years ago

Oui, après le problème de SQL, j'ai bien exécuté l'installation avec app/install.php !

Le souci est qu'après la ligne $session->set("projetActif", $idProjetActif . " - " . $projetActif->get("titre")); la variable $projetActif est une string ! Donc la ligne suivante est vouée à l'echec.

RichardDumoulin commented 10 years ago

Bonsoir!

Est-ce possible SVP de préciser à quelle endroit vous voyez $projetActif utilisez comme une string?

Il y a effectivement $idProjetActif qui est une string mais pas $projetActif....

Merci et A+

Sebseb01 commented 10 years ago
// Ajouter le projet à la session
$session->set("projetActif", $idProjetActif . " - " . $projetActif->get("titre"));

var_dump($projetActif);

$projetActif->setProjetCourant($idProjetActif);

Ce code m'affiche

string(7) "1 - PAO" 

Alors que placé avant le $session->set, il affiche

object(Projet)#8 (4) {... un tas de variable et objet ...}
RichardDumoulin commented 10 years ago

Comme ceci ?

// Ajouter le projet à la session
var_dump($projetActif);
$session->set("projetActif", $idProjetActif . " - " . $projetActif->get("titre"));
var_dump($projetActif);
$projetActif->setProjetCourant($idProjetActif);
Sebseb01 commented 10 years ago

Oui

RichardDumoulin commented 10 years ago

Chez moi ça affiche dans les 2 cas l'objet Projet tel qu'attendu... Peux-tu STP essayer avec le code ci-haut? Par contre, si j'affiche le contenu de $session->get("projetActif"), c'est effectivement une string mais c'est normal.

Merci de ta collaboration! A+

Sebseb01 commented 10 years ago

J'ai compris, mon hébergeur active par défaut register_global ! Donc le fait que la variable de session porte le même nom est un problème.

J'ai donc modifier le comportement de php via le .htaccess ... et effectivement, ça marche (Un point à ajouter à la documentation ?)

RichardDumoulin commented 10 years ago

Ahhh! Voilà la raison! En plus cette configuration n'est pas sécuritaire, ça permet d'écraser la valeur de variables internes via des paramètres (ouch!).

Je transmets l'information à la personne qui s'occupe de la documentation afin d'ajouter ce point. Je vais aussi ajouter une vérification et possiblement un .htaccess pour prévenir le problème dans une prochaine version.

Merci de votre collaboration pour éclaircir le mystère!! :+1: