script de connexion et d'inscription
mes script de connexion et d'inscrption en marches pas et je ne comprend pas pourquoi ( c'est pour mon projet de fin d'année je suis en terminal stg gsi)
alors je vous montre mon script de connexion
Réponses apportées à cette discussion
Salut,
commence par virer les "@" devant tes fonctions : quand on développe, on a besoin de voir les erreurs, donc il ne faut pas les masquer. Cette manière de faire est un cache-misère qui devrait être banni systématiquement.
Ensuite, dans ta requête d'insertion, il manque une virgule entre les deux dernières valeurs.
Enfin, si tu as des erreurs mais que tu ne nous montres pas les messages correspondant, on peut difficilement t'aider.
oui daccord j'ai retiré les "@"
alors pr le scripts de connexion ca me donnex comme msg d'erreur :
Notice: Undefined index: pseudo in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 8
Notice: Undefined index: passe in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 9****Warning: mysql_connect() [function.mysql-connect]: Accès refusé pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON) in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 11****Warning: mysql_select_db() [function.mysql-select-db]: Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 12****Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 12****Notice: Undefined variable: passe in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 14****Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in J:\Program Files\EasyPHP 3.0\www\connexion.php on line 15
erreur d'identification
et pour le script d'inscriptin ca me donne:
Notice: Undefined index: id in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 9****Notice: Undefined index: prenom in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 10****Notice: Undefined index: nom in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 11****Notice: Undefined index: adresse in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 12****Notice: Undefined index: cp in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 13****Notice: Undefined index: ville in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 14****Notice: Undefined index: telephone in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 15****Notice: Undefined index: email in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 16Bonjour ,Warning: mysql_connect() [function.mysql-connect]: Accès refusé pour l'utilisateur: 'clifringues'@'@localhost' (mot de passe: OUI) in J:\Program Files\EasyPHP 3.0\www\inscription.php on line 21
Impossible de se connecter au serveur de bases de données.
Bonjour !
Bonjour,
Tout d'abord moi aussi je suis en terminale GSI et je te souhaite bon courage pour ton projet de fin d'année.
Alors tout d'abord au vue de tes erreurs je pense avoir trouvé ton problème (pour le moment occupons nous seulement de ta page de connexion).
Si on regarde bien les deux premières "Notice" on peut voit que tes variables pseudo et passe ne sont pas définies au moment de l'affectation c'est à dire que tes $_POST[' '] sont vides ! Cela viens certainement des "name" dans ton formulaire HTML qui n'ont pas le même nom que ceux que tu appel dans ton $_POST.
Ensuite tu as l'aire d'avoir un problème de connexion à ta base de données est tu sûr de tes paramètres de connexion ?
De plus à quoi te servent les 4 premières variables $BD_etc tu ne les appelles jamais.
Enfin pour ta requête SQL je te propose cette syntaxe que jutilise et qui marche car tu as peut être des problèmes au niveaux de tes quotes (guillemets) .
$requete = ("SELECT * FROM `user` WHERE pseudo='".$pseudo."' AND passe='".$passe."';");
Bien sûr, tu n'utiliseras surtout pas cette requête SQL qui ouvre une faille de sécurité par injection SQL énormissime sir les apostrophes magiques sont désactivées sur ton serveur. De plus, à quoi servent ces parenthèses inutiles pour encadrer la requêtes ?
Pour exécuter proprement des requêtes SQL, il faut faire appel soit à MySQLi ou bien à PDO en prenant soin d'utiliser les requêtes préparées (prepared statements). Voilà ce que cela donne avec la requête ci-dessus :
<?php try{ $pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'user', 'password'); $stmt = $pdo->prepare('SELECT COUNT(*) AS nb FROM member WHERE login = :login AND password = :password LIMIT 1'); $stmt->bindValue(':login', $_POST['login'], PDO::PARAM_STR); $stmt->bindValue(':password', $_POST['password'], PDO::PARAM_STR); $stmt->execute(); echo '<pre>'; var_dump($stmt->fetch(PDO::FETCH_ASSOC); echo '</pre>';}catch (PDOException $e){ echo 'PDO Error : ', $e->getMessage();}
++
Bonjour Emacs,
Je ne sais pas si tu connais la terminale STG GSI comme l'est jass922 mais ce projet que nous devons présenter au Bac est loin d'être aussi poussé. Bien entendu que ton script à l'air "blindé" mais on ne nous en demande pas tant. Premièrement la programmation orienté objet n'est pas à notre programme et de toutes façons ce site que nous devon réaliser est plus là pour faire "joujou" avec PHP et ne sera de toutes façons jamais en production, donc jamais menacé par les injections. J'ai bien l'impression que si jass922 présente ton code au BAC il va avoir 0.
Peut être que ça t'insupporte de voire du code de débutant ou peut être as tu mal lu 1er message de jass922 mais en tout cas je lui déconseille fortement de mettre ton code pour le Bac.
++
Bonjour adrien,
Je connais la filière STG de manière générale mais pas la spécialité GSI. Je n'ai, de plus, pas lu le message original de jass922 dans la mesure où ce dernier est complètement hors charte. J'aurais pu le supprimer sans état d'âme comme je le fais habituellement mais Cyrano ayant pris le temps de lui répondre je ne l'ai pas fait.
J'ai un avis partagé par rapport à ta remarque. Je suis conscient que les professeurs ne vous en demande pas tant et ne s'attendent seulement qu'à voir une application qui fonctionne, dénuée de toute conception logicielle et sécurité. Surtout à un niveau baccalauréat. Ces problématiques de conception logicielle n'étant enseignées qu'à partir d'un Bac+2. Néanmoins, ma remarque sur la sécurité et la POO n'est pas anodine puisqu'elle a pour objectif de te montrer à toi comme à lui une autre manière d'aborder la manipulation d'une base de données. Il est inutile de reprendre ce bout de code tel quel pour le présenter si vous ne le comprenez pas ni n'êtes capables de l'expliquer. En revanche, si vous en comprenez la syntaxe et la signification, vous êtes entièrement en droit de le présenter à vos professeurs. Ils ne peuvent pas vous réprimander l'utilisation d'un code que vous maîtrisez.