par
Hywan » 12 avr. 2008, 13:58
Hey,
ce script ne peut pas fonctionner parfaitement chez toi aux vues des erreurs que tu nous as rapporté. L'explication que je peux fournir au fait que les erreurs n'apparaissent pas sur ton serveur local est que
ton rapport d'erreur de PHP est très tolérant.
Qu'est-ce que le rapport d'erreur ? Les erreurs affichées par PHP sont classées selon différents niveaux critiques (
notice,
warning,
fatal etc.). Si tu demandes à PHP de n'afficher aucune erreur, alors il ne t'affichera rien, mais cela ne veut pas dire que les erreurs n'existent pas pour autant.
Je te conseille donc de re-fixer ton niveau d'erreur à E_ALL (toutes les erreurs) si tu es en PHP 4, sinon à E_STRICT si tu es en PHP 5. Pourquoi ? Tu peux
lire cette section du manuel de Hoa qui explique ce qu'apporte le niveau d'erreur E_STRICT et j'espère que ça saura te convaincre.
Maintenant, comment résoudre tes erreurs ? Qu'est-ce qu'elles veulent dire ?
Il te dit qu'il ne peut pas envoyer une session ou un cookie car l'en-tête a déjà été envoyée : et c'est parfaitement normal ! La fonction session_start() doit toujours s'utiliser en tête de fichier,
i.e. c'est la première chose que l'on doit voir apparaître dans le fichier (pour faire simple).
Donc déplace ta fonction session_start() en tout début de fichier et tu verras que ton problème va se résoudre.
Si je peux te donner des conseils quant à ton script, préfères mysql_fetch_assoc() à mysql_fetch_row(). Car si tu modifies ta table users, par exemple en insérant un nouvel attribut, tous les attributs suivant n'auront plus le même numéro attribué (on aura un décalage, donc plus le même ordre). Alors que si tu utilises mysql_fetch_assoc(), la notion d'ordre n'intervient pas. Tu repères tes attributs par leur nom et pas par leur position. Pas de problème quand tu modifieras ta table ou ton script.
Autre chose, ferme la connexion à la base de données (via mysql_close()) avant de rediriger et pas après.
Et enfin, attention à l'utilisation des simples guillemets et des doubles guillemets. L'utilisation des doubles guillemets est plus longue à interpréter que les simples. Je pense que tu sais faire la différence non ?
Donc dans tes comparaisons ($droit == "admin"), préfère utiliser des guillemets simples.