Aller au contenu

[Résolu] [PHP]Problème avec les QuickForm de PEAR


Messages recommandés

Bonjour à tous,

Je vous soumet ici un problème que je rencontre actuellement.

Je développe un site. En le testant en local, tout marche correctement.

Je l'ai uppé chez mon hébergeur (One And One) et mon problème est apparu.

J'ai utilisé les QuickForm de Pear pour certains de mes formulaires. Alors qu'en local tout marche parfaitement, une fois chez mon hébergeur, rien ne marche.

Mon formulaire apparaît correctement mais j'ai beau appuyer sur le bouton "envoyer", rien ne se passe. Aucun chargement de page, aucune vérification des champs, rien...

Voici mon code :

set_include_path(get_include_path() . ":../Pear"); 
require_once "QuickForm.php"; // package HTML_COMMON
$form_id = new HTML_QuickForm('form_id', 'post');
$form_id->addElement('text', 'login_id', 'Login : ');
$form_id->addElement('password', 'mdp', 'Mot de passe : ');
$form_id->addElement('submit', 'send', 'Envoyer');
$form_id->addRule('login_id', 'Vous devez saisir un login', 'required');
$form_id->addRule('mdp', 'Vous devez saisir un mot de passe', 'required');
$form_id->setRequiredNote('<span style="size:8px; color:#ff0000;">*</span><span style="size:8px;"> champs obligatoires</span>');
if ($form_id->validate()) {
	include("./include/valid_id.inc.php");
	return;
}

Avez vous une idée de l'origine du problème ?

En vous remerciant par avance.

Lien vers le commentaire
Partager sur d’autres sites

Tu es sûr que ton serveur a bien PEAR, et donc le package requis?

J'ai installé moi même les packages de PEAR, de la même façon que je l'avais fait en local. Et si les pacakges de PEAR n'étaient pas présents, les lignes

set_include_path(get_include_path() . ":../Pear");  require_once "QuickForm.php"; 
// package HTML_COMMON

auraient retournées une erreur.

Puis un phpinfo() me donne

Configure Command '../configure' '--with-pear' '-- .......

Lien vers le commentaire
Partager sur d’autres sites

Le problème ne vient pas en fait de la fonction validate() mais du constructeur de QuickForm.

$form_id = new HTML_QuickForm('form_id', 'post');

Quand je construit mon formulaire, voici le code que j'obtiens en local :

<form action="/Sapratin/php/login.php" method="post" name="form_id" id="form_id">
[ .......]
</form>		

Or, en affichant la source de la page hébergée, j'obtiens le code suivant :

<formArray>
[.......]
</form>		

Les attributs du constructeur de QuickForm semblent être stockés dans un tableau.

La question est, pourquoi le même code ne marche-t-il pas chez mon hébergeur alors qu'il marche en local ?

(les mêmes fichiers inclus, mêmes versions etc...)

Lien vers le commentaire
Partager sur d’autres sites

Problème résolu.

J'expose la solution pour ceux qui rencontreraient un jour le même problème.

Les QuickForm ont besoin du package HTML_Common. L'erreur du <formArray> se produit lorsque la version du package HTML_Common est inférieure à 1.8.

La version du package que j'ai installé manuellement est plus récente.

Le problème vient de la ligne

set_include_path(get_include_path() . ":../Pear"); 

Cette ligne inclue le chemin spécifié en plus des fichiers déjà inclus.

Il semble que des packages PEAR étaient déjà inclus (ceux installés par l'hébergeur) mais que leur version était inférieure à la 1.8.

Pour résoudre celà, je modifie la ligne par

set_include_path(":../Pear");

Ainsi, les anciens fichiers ne sont plus inclus. Désormais , mes formulaires QuickForm marchent correctement.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...