Mysql_fetch_array()
Résolu
djimson
Messages postés
217
Statut
Membre
-
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, Voici mon erreur quand je veux me connecter à ma base de données :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/p/g/a/xxxxxxxx/html/xxxxxxx/xxxxxxxx/xxxxxxxxx/mon-cv.php on line 25
Erreur de connexion*
Que dois je faire?
Voici le code :
<?
if($_GET['Clef_Activation'])
{
$id_user = $_GET['Clef_Activation'];
// Connexion à la base de données
/* Parametre de connexion à la base de donnée et au serveur*/
$connect = mysql_connect('localhost','root',"") or die ("Ereur de connexion");
$db = mysql_select_db('ouaga_db', $connect) or die ("Erreur de connexion");
// Sélection de l'utilisateur concerné
$result =("
SELECT *
FROM Comptes_Utilisateurs
WHERE Clef_Activation =$id_user;
");
$resultat = mysql_query($result);
$row = mysql_fetch_array($resultat) or die ("Erreur de connexion");
// Fermeture de la connexion à la base de données
mysql_close();
?>
Merci pour l'aide
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/p/g/a/xxxxxxxx/html/xxxxxxx/xxxxxxxx/xxxxxxxxx/mon-cv.php on line 25
Erreur de connexion*
Que dois je faire?
Voici le code :
<?
if($_GET['Clef_Activation'])
{
$id_user = $_GET['Clef_Activation'];
// Connexion à la base de données
/* Parametre de connexion à la base de donnée et au serveur*/
$connect = mysql_connect('localhost','root',"") or die ("Ereur de connexion");
$db = mysql_select_db('ouaga_db', $connect) or die ("Erreur de connexion");
// Sélection de l'utilisateur concerné
$result =("
SELECT *
FROM Comptes_Utilisateurs
WHERE Clef_Activation =$id_user;
");
$resultat = mysql_query($result);
$row = mysql_fetch_array($resultat) or die ("Erreur de connexion");
// Fermeture de la connexion à la base de données
mysql_close();
?>
Merci pour l'aide
Configuration: Windows XP Firefox 3.0.11
12 réponses
-
-
-
Auparavant pr se connecter, voici le scrip. C'est la que je recupere la variable: Ca peut aider surement
<?
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE['CLE_ACTIVATION']))
{
$id_user = $_COOKIE['CLE_ACTIVATION'];
// Redirection de l'utilisateur
header("Location: mon-cv.php?Clef_Activation=$id_user");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 6 caractères";
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("xxxxxxxxx", "xxxxxx", "xxxxxxx");
mysql_select_db("xxxxxxxx");
// Sélection de l'utilisateur concerné
$result = mysql_query("
SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active, Clef_Activation
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de la tentative de connexion";
}
else
{
// Si aucun utilisateur n'a été trouvé
if(mysql_num_rows($result) == 0)
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
}
else
{
// Récupération des données
$row = mysql_fetch_array($result);
// Si le compte n'a pas été activé
if($row["Compte_Active"] == 0)
{
$message = "Votre compte utilisateur n'a pas été activé";
}
else
{
// Vérification du mot de passe
if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
{
$message = "Votre mot de passe est incorrect";
}
else
{
// Définition du temps d'expiration des cookies
$expiration =
empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
// Création des cookies
setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration,"/"); setcookie("CLE_ACTIVATION", $row["Clef_Activation"], $expiration, "/");
// Redirection de l'utilisateur
// Fermeture de la connexion à la base de données
mysql_close();
header("Location: mon-cv.php?Clef_Activation=$id_user");
// Redirection de l'utilisateur
// header("Location: mon-cv.php?ID_Utilisateur=$id_user");
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close();
}
}
}
?>
-
-
Bonjour, je reviens avec mon soucis espérant avoir une solution ce matin.
Merci -
:/ je m'y connais pas assez pour t'aider, désolé...
-
salut,
à tous les coups c'est que ta variable est pas encadrée d'apostrophes.
vire les parenthèse autour de la définition de la requête et ajoute un dump_var() pour savoir à quoi ressemble ta requête et copie/colle nous le résultat, stp :$result ="SELECT * FROM Comptes_Utilisateurs WHERE Clef_Activation = $id_user;"; $resultat = mysql_query($result); var_dump($result); $row = mysql_fetch_array($resultat) or die ("Erreur de connexion");
PS : drôle d'idée de nommer ta variable $result alors que c'est une requête SQL.
tu ferais mieux de la nommer $sql.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
heu doit y avoir une c***lle dans le potage…
il peut pas te retourner false sur une chaîne !
tu as bien :$sql ="SELECT * FROM Comptes_Utilisateurs WHERE Clef_Activation = $id_user;"; var_dump($sql); $resultat = mysql_query($sql); $row = mysql_fetch_array($resultat) or die ("Erreur de connexion");-
voici le post qui parlais d'abord du cryptage avec MD5
http://www.commentcamarche.net/forum/affich 12963423 crypter id dans base de donnee avec md5?#2
-
-
non
J'avai oublié quelque chose:
Voici l'erreur
string(62) "SELECT * FROM Comptes_Utilisateurs WHERE Clef_Activation = 19;" Erreur de connexion-
fais un copier/coller de cette requête dans PHPMyAdmin et vois si il l'exécute sans problème.
SELECT * FROM Comptes_Utilisateurs WHERE Clef_Activation = 19;
- Non, meme message : string(62) "SELECT * FROM Comptes_Utilisateurs WHERE Clef_Activation = 19;" Erreur de connexion
Au fait, la requete marche quand je n'utilise pas Clef_Activation. En utilisant ID_Utilisateur, j'ai aucun probleme a part que je veux pas qu'on voit l'ID de la base. J'ai voulu la cryper avec MD5 mais j(y suis pas arrivé, c'est ce qui m'a améné a utilisé Clef_Activation
-
-
le type du champ "Clef_Activation" ce serait pas "string" par hasard ?
essaie :$sql ="SELECT * FROM `Comptes_Utilisateurs` WHERE `Clef_Activation` = '$id_user';";
si ça ne fonctionne pas, explique-nous ton histoire d'identifiant de md5() et compagnie, ça me parait pas clair !
-
- Ok, je veux crypter mon ID dans la base en utilisant ceci:
<?
if(isset($_COOKIE['ID_UTILISATEUR']))
{
$id_user = md5($_COOKIE['ID_UTILISATEUR']);
// Connexion à la base de données
mysql_connect("xxxxxxx", "xxxxx", "xxxxxx");
mysql_select_db("xxxxxxx");
// Sélection de l'utilisateur concerné
$sql =("
SELECT *
FROM Comptes_Utilisateurs
WHERE ID_Utilisateur =$id_user;
");
$sql ="SELECT * FROM `Comptes_Utilisateurs` WHERE `Clef_Activation` = '$id_user';";
$resultat = mysql_query($sql);
$row = mysql_fetch_array($resultat) or die ("Erreur de connexion");
// Fermeture de la connexion à la base de données
mysql_close();
?>
Es-ce possible?
-
-
je pense ke le site du zero peu être la solution a tn problème.
www.siteduzero.com -
bon si vous ne voulez pas allé sur le siteduzero exécuté ces codes
<?php
//connection a la base de donnée
mysql_connect("localhost","root","");
//selection de la base de donnée
mysql_select_db("le_de_le_base_de_donnée");
//tu peux effectuer les différentes requêtes now
?> -
on reprend en bas.
oui c'est possible en théorie mais la première question c'est pourquoi coder cet identifiant (à priori ça ne sert à rien).
(désolé d'insister mais mieux vaut se simplifier la vie pour éviter les bugs…)
en plus si tu veux faire une requête en utilisant un identifiant crypté, faut qu'il soit déjà crypté dans la BDD, est-ce le cas ?
-
Non il n'es pas crypté dans ma base. Au fait, j'ai constaté une grande faille et je voulais la corrigé en passant pas le cryptage.
Exple: http://www.xxxxxxxx/xxxxxx/xxxxxxxxx/mon-cv.php?ID_Utilisateur=Y
En remplacant Y par une valeur, on arrive a accéder aux données de l'utilisateur dont l'ID es Y.
Dc je voulais y remedié en cryptant les ID_Utilistateur depuis la base si possible.
Merci
-
-
on arrive a accéder aux données de l'utilisateur dont l'ID es Y.
c'est ça qu'il faut corriger !
revois ta gestion des sessions et empeche l'affichage des infos si le visiteur n'est pas authentifié ou si l'ID du visiteur authentifié est différent de l'ID demandé.
-
ok, je viens de corrigé ca.
Maintenant, je veux savoir comment crypter le champs ID_Utilisateur dans ma base pendant l'insertion de l'utilisateur ou directement dans la base(chose impossible parait-il avec mysql).
Voila comment se passe l'inscription :
Es-ce depuis la je peux crypté l'ID_Utilisateur comme on a crypté le mot de passe?
Je précise que le scrypt ne vient pas de moi. J'essaye de l'adapter pour mon site
<?
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE['ID_UTILISATEUR']))
{
$id_user = $_COOKIE['ID_UTILISATEUR'];
// Redirection de l'utilisateur
header("Location: index.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{4,20}$", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-Za-z0-9]{4,}$", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}
elseif($_POST["TB_Mot_de_Passe"] != $_POST["TB_Confirmation_Mot_de_Passe"])
{
$message = "Votre mot de passe n'a pas été correctement confirmé";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",
$_POST["TB_Adresse_Email"]))
{
$message = "Votre adresse e-mail n'est pas valide";
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("xxxxxxxxx", "xxxxxxxxxxxxxxxx", "xxxxxxxxxxxx");
mysql_select_db("xxxxxxxxxxxxxxxxxx");
// Vérification de l'unicité du nom d'utilisateur et de l'adresse e-mail
$result = mysql_query("
SELECT Nom_Utilisateur
, Adresse_Email
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
OR Adresse_Email = '" . $_POST["TB_Adresse_Email"] . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la vérification d'unicité";
}
else
{
// Si un enregistrement est trouvé
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
if($_POST["TB_Nom_Utilisateur"] == $row["Nom_Utilisateur"])
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"];
$message .= "est déjà utilisé";
}
elseif($_POST["TB_Adresse_Email"] == $row["Adresse_Email"])
{
$message = "L'adresse e-mail " . $_POST["TB_Adresse_Email"];
$message .= "est déjà utilisée";
}
}
}
else
{
// Génération de la clef d'activation
$caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$caracteres_aleatoires = array_rand($caracteres, 8);
$clef_activation = "";
foreach($caracteres_aleatoires as $i)
{
$clef_activation .= $caracteres[$i];
}
// Création du compte utilisateur
$result = mysql_query("
INSERT INTO Comptes_Utilisateurs(
Nom_Utilisateur
, Mot_de_Passe
, Adresse_Email
, Date_Inscription
, Clef_Activation
, civilite
, nom
, prenoms
, journaiss
, moisnaiss
, annaiss
, matrimoniale
, enfant
, nationalite
, telfix
, telport
, adrpostale
, secteur
, nivetude
, formation
, specialite
, experience
, divers
)
VALUES(
'" . $_POST["TB_Nom_Utilisateur"] . "'
, '" . md5($_POST["TB_Mot_de_Passe"]) . "'
, '" . $_POST["TB_Adresse_Email"] . "'
, '" . time() . "'
, '" . $clef_activation . "'
, '" . $_POST["civilite"] . "'
, '" . $_POST["nom"] . "'
, '" . $_POST["prenoms"] . "'
, '" . $_POST["journaiss"] . "'
, '" . $_POST["moisnaiss"] . "'
, '" . $_POST["annaiss"] . "'
, '" . $_POST["matrimoniale"] . "'
, '" . $_POST["enfant"] . "'
, '" . $_POST["nationalite"] . "'
, '" . $_POST["telfix"] . "'
, '" . $_POST["telport"] . "'
, '" . $_POST["adrpostale"] . "'
, '" . $_POST["secteur"] . "'
, '" . $_POST["nivetude"] . "'
, '" . $_POST["formation"] . "'
, '" . $_POST["specialite"] . "'
, '" . $_POST["experience"] . "'
, '" . $_POST["divers"] . "'
)
");
// Si une erreur survient
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la création du compte utilisateur";
}
else
{
// Envoi du mail d'activation
$sujet = "Activation de votre compte utilisateur";
$message = "Pour valider votre inscription, afin de pouvoir vous connectez \n, merci de cliquer sur le lien suivant :\n";
$message .= "http://" . $_SERVER["SERVER_NAME"];
$message .= "/emploi/inscription/activer-compte-utilisateur.php?id=" . mysql_insert_id();
$message .= "&clef=" . $clef_activation;
// Si une erreur survient
if(!@mail($_POST["TB_Adresse_Email"], $sujet, $message))
{
$message = "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
}
else
{
// Message de confirmation
$message = "Votre compte utilisateur a correctement été créer<br />\n";
$message .= "Un email vient de vous être envoyer afin de l'activer";
$message .= " Afin de pouvoir vous connecter sur notre cvthèque et dèy modifier votre CV, n'oubliez \n surtout pas de cliquer sur le lien d'activation qui vous a été envoyer. Merci pour \n votre fidélisation à TOUTAOUAGA";
// On masque le formulaire
$masquer_formulaire = true;
}
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close();
}
}
?>
Vraiment merci Dalida pour votre disponibilité.
-
-
si tu as corrigé ta faille de sécurité ça ne sert plus à rien de hacher l'identifiant !
il faut le faire pour le mot de passe (dont tu définis le champ comme "PASSWORD" dans la BDD et que tu insères avec une requête qui utilises simple la fonction PASSWORD de SQL) mais pour l'identifiant ça ne sert strictement à rien.