Débuggage divers sur un petit site [SOS] - PHP - Programmation
Marsh Posté le 19-06-2012 à 00:16:41
Ta variable $db est vide a première vue je dirais non?
Surtout que dans ta page principale ton instance PDO s'appelle $bdd
J'aurai plus vu (après c'est mon avis) un :
Code :
|
Marsh Posté le 19-06-2012 à 00:27:01
disons que cette partie;
Code :
|
est testée et fonctionelle sur tout le site...
de meme, bizarement en mettant en en tete d'autres pages mon
Code :
|
ça fopnctionne correctement (enfin pas d'erreurs renvoyées...)
Je comprend pas les modification que tu as fait en ligne 15, ça va plus me connecter a mon fichier contenant mes fonctions ça ?
Marsh Posté le 19-06-2012 à 00:35:44
La variable $GLOBALS contient toutes les variables disponibles, ca permet de savoir un peu ce qu'on fait avec des variables globales comme tu le fais.
http://php.net/manual/fr/reserved. [...] lobals.php
Cependant dans ton cas j'ai peine à croire qu'une variable globale $bdd puisse être appelée dans les fonctions via un simple global $db (à la rigueur global $bdd).
D'ailleurs l'erreur que tu donnes dans ton 1er post est assez explicite, $db dans la fonction getUserInfo() n'est pas une instance PDO donc tu ne peux pas lui appliquer de méthode prepare.
POur la ligne 15 de mon code, elle doit remplacer avec "ma méthode", la ligne 3 de ton premier bout de code.
Bref, 2 solutions:
- en conservant ta méthode
Code :
|
- avec "ma méthode"
Code :
|
et
Code :
|
Marsh Posté le 19-06-2012 à 00:46:38
J'ai pris ta méthode
Testée un peu avant que tu edit, marche niquel
Vais voir pour son fonctionnement maintenant... (enfin pour les fonctionnement de la connection et tout quoi , c'est le module session/identification pour ceux qui avait pas remarqué )
Tu geres
Marsh Posté le 19-06-2012 à 00:59:26
xaeon a écrit : De rien, ca sent les PTIs non? BTS? |
DEUSt, projet de site marchand que je complique un peu comme un con
bon nouveau souci, au niveau de la reconaissance des variables je pense.
erreur rencontrée; aucune identification possible, meme avec le bon mdp et bon email ça me renvoie le message prevu pour un echec d'identification...
je met les deux pages conpletes là;
Code :
|
Code :
|
Marsh Posté le 19-06-2012 à 01:05:10
J'ai fait un peu de nettoyage quand meme, le reste posera pas souci...
Marsh Posté le 19-06-2012 à 01:20:14
Ligne 73 de ton code, ça me semble étrange:
Code :
|
Je ne sais pas si le placement du NOT (!) est correct ici je l'aurai mis sur un niveau superieur de parenthèse
Code :
|
Mais je ne pense pas que ca vienne d'ici, je regarderai demain quand j'aurai les yeux en face des trous, néanmoins il y a déjà un endroit où tu fais un test inutile:
Code :
|
tu appliques à $mdp la fonction md5, donc même si la chaine $mdp est vide à la base et bien tu vas obtenir une hashage correspondant à une chaine vide, et donc on ne rentrera jamais dans le test testant si $mdp est vide.
Marsh Posté le 19-06-2012 à 01:21:57
Merci
Vais chercher sur tes piste, voir ce que ça donne
EDIT; essayé pour le niveau de parenthese, ça a rien changé en effet, mais a prior tu as raison
Nettoyé pour le test inutile, je vais voir si je le met au dessus du coup...
Marsh Posté le 19-06-2012 à 03:14:25
Bon dodo, sinon demain je pourrais rien faire...
Marsh Posté le 19-06-2012 à 09:52:14
Bon, on va déplier le code parties par parties:
- ligne 38 :
Code :
|
Ta fonction getUserInfo() renvoie soit un tableau associatif soit FALSE, je pense que tu devrais plutôt revoir ta fonction ainsi
Code :
|
Ta fonction renvoie ainsi des valeurs logiques, soit un tableau associatif, soit null et correspond donc mieux à son nom. If faudra donc changer le test précédemment cité pour qu'il vérifie la "non-nullité".
- ligne 44 :
Code :
|
Comment $_POST peut valoir FALSE? Je ne sais même pas comment tu peux ou non rentrer dans cette partie. J'aurai plus vu un :
Code :
|
Je pense qu'en regardant déjà ça tu auras les idées plus claires
Marsh Posté le 19-06-2012 à 11:47:41
testé, avec
if (!is_null($userdata))
et avec
if (is_null($userdata)) //du coup en inversant les concequences bien sur...
mais ça me renvoie
Notice: Undefined variable: userdata in C:\wamp\www\Serveur internet\Site Internet projet\CV Edge\CV.org\Site\Contenu\FR\Global\connection.php on line 94
L94 c'est la ligne de mon if
Marsh Posté le 19-06-2012 à 14:53:14
Après ton session start, tu fais un $userdata = getUserInfo(); et dans le test un if(!is_null($userdata)) et ça devrait permettre de résoudre une bonne partie de ton problème.
Encore une fois, comme mis en commentaire (ligne 4) de mon poste précédent, PHP est tolérant, mais pas tant que ca, ici il voit que tu fais un test sur une variable qui n'a jamais été valorisée... forcement il crache une erreur
Marsh Posté le 19-06-2012 à 15:29:54
Je regarde en rentrant à 17h30 , j'ai pas ma bdd sur cette machine.
Marsh Posté le 19-06-2012 à 17:57:00
ça me renvoie
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'userid' cannot be null'
et
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'userid' cannot be null
ligne 15 incrimmiée...
j'ai mis, tout le reste du code étant identique;
Code :
|
Marsh Posté le 19-06-2012 à 18:28:08
Tu pourrais me faire un dump de ton schéma de base de données histoire que je teste de mon coté? Les données à la rigueur je m'en fou mais au moins le schéma ^^'
Marsh Posté le 19-06-2012 à 18:29:48
ouaip.
je te fais ça de suite
Marsh Posté le 19-06-2012 à 18:50:00
Bon alors perso j'arrive à me connecter
A première vue les passwords qui sont dans ta base de donnée ont été insérés avec la fonction MySQL : PASSWORD('chaine'), cependant à la connection tu demandes un hash MD5
MySQL :
Code :
|
Marsh Posté le 19-06-2012 à 19:04:23
Je dégage cette entrée, je les met en text directement?
(enfin vais tester comme ça )
Marsh Posté le 19-06-2012 à 19:39:16
no result, toujours bloqué
c'est le fonction opensession qui aime pas le userdata en false, je evrait peurt etre la mettre en userdata='0'?
Marsh Posté le 19-06-2012 à 19:40:10
Nope je finis de manger et je te fais un topo, tu peux me confirmer que toi tu n'arrives pas à te connecter?
Marsh Posté le 19-06-2012 à 19:41:21
ouaip j'arrive meme pas a afficher le formulaire...
Je taff sur le reste en attendant, y reste deux trois choses a boucler... mais je veux pas me lancer sur le panier avant d'avoir des sessiosn actives
Marsh Posté le 19-06-2012 à 20:16:23
Alors voila ce que j'ai dans mes fichiers personnellement en conservant ton architecture:
accueil.php
Code :
|
fonctions_sessions.php
Code :
|
De plus j'ai ajouté l'entrée suivante dans la BDD :
Code :
|
En me connectant avec xaeon@hfr.com + 123456 ca fonctionne
Marsh Posté le 19-06-2012 à 20:28:31
tu as modifié quoi de la page d'identification?
Marsh Posté le 19-06-2012 à 20:43:33
incomprehenssible, ça marchait pas avec ceux déja enregistré, mais en ajoutant ton entrée dans la bbd ça passe
Marsh Posté le 19-06-2012 à 20:44:36
Si tu parles de accueil.php rien hormis que j'ai changer les identifiants pour la BDD pour qu'elle fonctionne chez moi.
Edit ::
pour ton post juste au dessus oui tu as entré tes utilisateurs avec le mot de passe chiffré par la fonction PASSWORD() et non MD5()
Marsh Posté le 19-06-2012 à 20:50:56
faut pas changer les userdata= false des autres fonctions aussi pendant qu'on y est?
Marsh Posté le 19-06-2012 à 21:01:12
Sisi Mais je te laisse libre de faire ce que tu souhaites
Marsh Posté le 19-06-2012 à 21:04:12
ok
on continue la série
je remplace dans mes pages la div id="compte" par
Code :
|
Le probleme, c'est qu'en y cliquant, ça me renvoi un beau forbidden
You don't have permission to access /Serveur internet/Site Internet projet/CV Edge/CV.org/Site/Contenu/FR/Global/< on this server.
de plus ça deconnecte pas
Marsh Posté le 19-06-2012 à 21:08:39
Alors là je te conseille de faire un script php dédié à la déconnexion avec redirection vers la page de login parce que à la ligne 10 tu appelles une fonctions comme lien et forcement ca peut pas le faire
Marsh Posté le 19-06-2012 à 21:11:42
xaeon a écrit : Alors là je te conseille de faire un script php dédié à la déconnexion avec redirection vers la page de login parce que à la ligne 10 tu appelles une fonctions comme lien et forcement ca peut pas le faire |
Pourtant c'est sencé etre possible non?
je veux appeler une des fonctions du fonction_sessions.php...
Marsh Posté le 19-06-2012 à 21:14:40
Non tu peux appeler un fichier (script) php qui va executer ta fonction mais tu ne peux pas appeler ta fonction comme cible d'un lien.
Marsh Posté le 19-06-2012 à 21:16:07
Bon je vois pas trop comment faire, je vais faire un truc sale avec une variable
edit;
du coup ça donne ça;
Code :
|
mais je doit me tromper quelque part dans mon lien, parce que ça veux pas
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'
Marsh Posté le 19-06-2012 à 21:21:07
tu fais simplement un fichier deconnexion.php
Code :
|
Et ta page
Code :
|
Marsh Posté le 19-06-2012 à 21:24:35
Oui mais je prend ta solution, je termine sur quelle page finalement?
ouai ça reste bloqué sur la page deconection comme je le pensait, vu que la dernier action de closesession c'est d'actualiser la page sur laquelle elle s'execute
Marsh Posté le 19-06-2012 à 21:36:03
Alors simplement dans deconnexion.php tu ajoutes à la fin un :
include('accueil.php');
Et tu enleves le rafraîchissement du closeSession
Marsh Posté le 19-06-2012 à 22:16:10
ça me renvoie des trucs bizares
ça m'écris;
3 0.0078 735520 session_start ( ) ..\accueil.php:18
en haut de ma page...
PS; ma page de connection c'est connection.php pas accueil.php
Marsh Posté le 19-06-2012 à 22:50:45
Hum a aucun moment tu n'appelles connection.php dans ton code il me semble...
Edit :: J'ai rien dit
Marsh Posté le 19-06-2012 à 22:58:25
J'ai un peu travaillé ma page, de façon qu'apres deconnection ça renvoie sur la page d'accueil générale;
Code :
|
Tout s'execute bien, ça renvoie bien sur ma page, dans les temps qu'il faut pour voir le message.
par contre, ça deconnecte pas...
Marsh Posté le 18-06-2012 à 23:54:56
Salut les geek
premier site internet, du coup j'ai deux trois c**illes a droite a gauche, je me propose de vous les exposer ici, histoire de voir si vous avez le remede miracle.
J'essaie autant que possible de m'en sortir tout seul, mais parfois je vois vraiment pas...
Je tiens dispo le code complte/bdd aux ames de bonne volonté bien sur..
PS; deadline; jeudi soir
premier probleme;
J'ai une erreur qui doit correspondre à ce bout de code;
Il est mis en require_once 'fonctions_sessions.php'; sur une autre page; et lors de l'affichage de cette page, j'obtiens
Fatal error: Call to a member function prepare() on a non-object
1 0.0010 685336 {main}( ) ..\connection.php:0
2 0.0042 720512 getUserInfo( ) ..\connection.php:94
enfin je suppose que c'est au niveau de la fonction
Par ce que mon code sur la page, pour tout ce qui est avant la ligne 53; c'est;
Message édité par TheMartel le 18-06-2012 à 23:55:33
---------------
[VDS]Ventes stock d’entreprise divers IT - 600€ les + de 2400€ de matériel