Erreur...encore et toujours

Eléphant du PHP | 124 Messages

15 mars 2006, 10:12

Salut à tous, ce post fait suite a celui d'hier ("c'est quoi le mieux")...j'en reste exactement au même point...
je récapitule:

j'essai de créer une sécurité login/password relié à une BD contenant entre autre une table user et deux types de champs: Login_user et Password_user

Je vous donne le code entier de la page:
<?php
$login = $_POST['login'];
$password = $_POST['password'];

$sql = "SELECT Login_user, Password_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql)or die(mysql_error());
if (mysql_num_rows($req) === 1)
{
   echo 'Bienvenue '.$login;
}
else
{
   echo 'Login inconnu';
}
?>
<form id="form1" name="form1" method="post" action="">
  <label>
  LOGIN
  <input name="login" type="text" id="login" />
  </label>
  <p>
    <label>
    PASSWORD
    <input name="password" type="text" id="password" />
    </label>
    </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Envoyer" />
    </label>
  </p>
</form>
j'obtient systématiquement le message d'erreur suivant:
Access denied for user 'ODBC'@'localhost' (using password: NO)
1-Mes paramètres de mots de passe sont bon (pour preuve la connection fonctionne tres bien sous dreamweaver)
2-Je ne travaille pas en localhost, j'ai un serveur distant (de 10 mètres) répondant au doux nom de Odin

jcomprend pô.. :?

HELP ME !

Mammouth du PHP | 768 Messages

15 mars 2006, 10:50

Quel SGBD utilises - tu ?
MySQL, SQL Server, Oracle, Sybase, ....?
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

15 mars 2006, 11:11

MySQL.
En fait je ne crois pas que le problème vienne de la connection à la base elle même...j'ai supprimé ma connection à ma base..le problème reste identique.

Quand je clique sur affichage des données dynamique sous dream il maffiche une fenêtre avec le même message d'erreur mais avec en plus un onglet "plus d'info" qui m'envoi là:
http://www.macromedia.com/cfusion/knowl ... d=tn_18848

Alor la je suppose qu'il faut aller voir du coté de ODBC error...mais apres j'ai un peu de mal étant donné que l'anglais...c'est pas vraiment mon truc :roll: !

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

15 mars 2006, 12:28

Où est-le fichier qui te permet de te connecter à ta BDD ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 19672 Messages

15 mars 2006, 12:34

Comme le demande avec justesse mere-teresa, où est la connexion ?
Access denied for user 'ODBC'@'localhost' (using password: NO)
Ce message indique une chose: à défaut d'un script de connexion, ton système essaye de se connecter via ODBC, or cette possibilité n'étant pas prévue, l'accès est bien entendu refusé

Avant d'exécuter une requête avec mysql_query, il faut commencer par te connecter au serveur : mysql_connect() et ensuite sélectionner la base de données appropriés : mysql_select_sb()
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 124 Messages

15 mars 2006, 13:27

exact cyrano j'me suis pris la tête à trouver ça tout seul alors que tu me donnais la solution...m'enfin c'est pas grave.
voici le code mis à jour:
<?php
$login = $_POST['login'];
$password = $_POST['password'];
$req = mysql_connect("odin","root","*********") or die(mysql_error());

$sql = "SELECT Login_user, Password_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($req) == 1)
{
   echo 'Bienvenue '.$login;
}
else
{
   echo 'Login inconnu';
}
?>
alors bien entendu le message précédent a disparu mais uniquement pour céder la place à un nouveau:
"No database selected",
et c'est logique puisque je n'indique nulle part le nom de ma base. Je suppose qu'il faut le spécifier dans ma requète sql mais je ne connait pas la syntaxe..c'est ça ou je me trompe (encore)?

Mammouth du PHP | 19672 Messages

15 mars 2006, 13:32

Attention à ne pas afficher tes codes d'accès ici, j'ai édité et remplacé par des "*", fais attention.

Pour ton code, il y a un progrès : tu es connecté au serveur, mais il manque toujours la sélection de la base avec mysql_select_db()
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 124 Messages

15 mars 2006, 14:29

yesyesyesyesyesyesyesyesyes!!! CA MARCHE!
c'est bête mais ça me rend heureux!

grand merci à cyrano...comme souvent!

PS: j'avais vu pour mon mot de passe mais étant donné que personne n'a accès au serveur ou est hébergée ma base ça m'était égal...

voici le code définitif pour ceux que ça pourrait aider:
<?php
//récupération des données saisies dans le formulaire
$login = $_POST['login'];
$password = $_POST['password'];

//connection au serveur hébergeant la BD
$req = mysql_connect("nom_du_serveur","nom_utilisateur","mot_de_passe") or die(mysql_error());
//séléction de la BD
$req = mysql_select_db("nom_BD");

//requète sql et éxécution de la requète
$sql = "SELECT champ_login, champ_password FROM nom_de_table WHERE champ_login = '".$login."' AND champ_password = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

//conditions pour 1 résultat corrècte
if (mysql_num_rows($req) == 1)
{
   echo 'Bienvenue '.$login;
}
//sinon
else
{
   echo 'Login inconnu';
}
?>
voila!
maintenant il me reste à faire les redirections vers les différents types de pages en fonction du statut de mes utilisateurs...
comme d'hab j'essaye de faire tout seul mais si ça marche pas...vous le saurez bien asser tôt :wink:

Mammouth du PHP | 19672 Messages

15 mars 2006, 14:36

Excellent, un petit [Résolu] par dessus tout ça et ce sera parfait :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 124 Messages

15 mars 2006, 15:44

j'ai essayé de modifier ma condition de la manière suivante:
$sql = "SELECT Login_user, Password_user, Fonction_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($req) == 1 and "Fonction_user" == 1)
mais la condition ne se remplit jamais...ai je le droit d'inclure la valeur d'un champ dans une condition comme j'ai essayé de le faire?

Eléphant du PHP | 59 Messages

15 mars 2006, 16:30

Tu peux essayer ça, ça doit marcher:
$sql = "SELECT Login_user, Password_user, Fonction_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

for($i = 0; $i < mysql_num_rows($req); $i++){
    $line = mysql_fetch_object($req);

    if ( $line->Fonction_user == 1)

}