Nous sommes actuellement le 04 Juil 2026, 13:59

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 10 message(s) ] 
Auteur Message
 Sujet du message: Petits problèmes de login PHP
MessagePublié: 04 Sep 2005, 21:23 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 15 Jan 2004, 23:36
Message(s) : 133
Localisation : Rouyn-Noranda
Bonjour,

j'essais de me programmer un login avec mot de passe en php pour permettre aux gens d'accéder à une section membre sur mon site mais j'ai un petit bug et je ne comprends pas trop le message d'erreur:

Citer:
Could not match data because You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'where username = '' and password = ''' at line 1


Lorsqu'il est mentionné qu'il y a un message d'erreur dans ma syntaxe SQL, est ce que cela veut dire que ma base de données n'est pas correct ou bien que mon script pour me connecter possède une erreur? (cette partie la en autre d'après le message d'erreur)
Code :
$match = "select id from $table where username = '".$_POST['username']."' and password = '".$_POST['password']."';";


Je suis nouveau en php donc svp, soyez tolérant face à mon ignorance... :oops:

Voilà le code en entier pour le php:

Code :

<?php
ob_start();

// Connection a la bd
print "<br><br><br><br><br><br><br>";
$link = mysql_connect("nomduserveur", "loginserveur", "passserveur")
or die ("Could not connect to mysql because ".mysql_error());

// Selection de la database

mysql_select_db("test")
or die ("Could not select database because ".mysql_error());
   
$match = "select id from $table where username = '".$_POST['username']."'
and password = '".$_POST['password']."';";

$qry = mysql_query($match)
or die ("Could not match data because ".mysql_error());
$num_rows = mysql_num_rows($qry);

if ($num_rows <= 0) {
echo "Désolé, il n'y a pas de nom d'utilisateur $username associé au mot de passe inscrit.<br>";
echo "<a href=connectionquiz_form.htm>Réessayez de nouveau</a>";
echo "<a href=inscriptionquiz_form.htm>Inscription</a>";
exit;
} else {

setcookie("loggedin", "TRUE", time()+(3600 * 24));
setcookie("mysite_username", "$username");
echo "Vous êtes maintenant connecté. Bienvenue $username !<br>";
echo "Pour poursuivre, cliquez sur la <a href=quiz01.html>section membre</a>";
}

//FIN DE LA VERIFICATION.

ob_end_flush();

mysql_close($dbh);

?>


Je vous remercie à l'avance de votre aide.

_________________
SaM


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 04 Sep 2005, 21:35 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

Inscription : 27 Juin 2002, 01:12
Message(s) : 458
Localisation : Québec
$match = "select id from $table where username = '".$_POST['username']."' and password = '".$_POST['password']."';";

T'as mis $table comme si c'était une variable PHP. c'est surement ça le problème. Vérifie le nom de la table.

De plus, dans ton where, tu concatène un espace avant et après le username/password. Ca pourrait causer un problème s'il ne trouve jamais l'utilisateur.

_________________
Mon site personnel


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 04 Sep 2005, 21:54 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 15 Jan 2004, 23:36
Message(s) : 133
Localisation : Rouyn-Noranda
Ok, là j'ai changé $table par le nom de ma table mais j'ai maintenant un autre message d'erreur:

Citer:
Could not match data because Unknown column 'id' in 'field list'


Pourtant, les champs de mon formulaires sont bel et bien nommé... À moins que ce soit autre choses...

_________________
SaM


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 04 Sep 2005, 22:47 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
ta table SQL elle a un champ id ?

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Sep 2005, 01:00 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
Un petit conseil, utilisé plutot Like à la place de =, j'ai déjà des bugs bizarres à cause de ça.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Sep 2005, 13:03 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 15 Jan 2004, 23:36
Message(s) : 133
Localisation : Rouyn-Noranda
Jump a écrit:
ta table SQL elle a un champ id ?


:oops: Merci c'était ça le problème...

La ça fonctionne bien, merci de votre aide!!! :wink:

_________________
SaM


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Sep 2005, 19:20 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

Inscription : 18 Déc 2001, 22:16
Message(s) : 1404
Localisation : Cap-Rouge, Québec
Je ne connais pas beaucoup le PHP, mais en ASP, cette requête pourrait être "injectée".

Mais de mémoire, le PHP gère les apostrophes, il faudrait qu'un spécialiste PHP le confirme.

_________________
Frédéric Gignac Chroniqueur Jeux | Modérateur Jeux PC & Mac | Modérateur Consoles
Webmaster de HardGamers.com


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Sep 2005, 20:03 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
En effet n'utilise jamais le contenu du post ou du get directement, il pourrait y avoir n'importe quoi !

Tu peux commencer par prendre une longeur maximale
après tu peux mettre ta requete dans une string et passer celle-ci dans une fonction qui va la formater correctement pour ta base de données

$strUser = mysql_real_escape_string($_POST['username']);
$strPswd = mysql_real_escape_string($_POST['password']);
$strSql = "select id from table where username = '$strUser' and password = '$strPswd'";

va voir ici pour plus de détails et un exemple d'injection de SQL

(tu pourrais aussi encrypter les mot de passes, md5(''), crypt(''), ...)

Mieux encore serait de te faire des requêtes paramétrées. PEAR DB permet de faire ça.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 06 Sep 2005, 15:44 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
j'oubliais, avant d'accéder au post tu devrais regarder s'il y a quelque chose:

Code :
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (isset($_POST['username'] and isset($_POST['password']) {
    //...
  } else {
    //...
  }
} else {
  //...
}

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 09 Sep 2005, 23:16 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 15 Jan 2004, 23:36
Message(s) : 133
Localisation : Rouyn-Noranda
D'accord, merci pour les précieux conseils! :wink:

_________________
SaM


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 10 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site