Mysql_fetch_array()

Résolu/Fermé
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 - 20 juin 2009 à 02:47
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 20 juin 2009 à 16:30
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

12 réponses

Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
20 juin 2009 à 02:49
c'est laquelle la ligne 25 ?
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 02:51
Dlé, la voici : $row = mysql_fetch_array($resultat) or die ("Erreur de connexion");
Merci pour votre reponse
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 02:56
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();

}

}

}

?>
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 12:36
Bonjour, je reviens avec mon soucis espérant avoir une solution ce matin.
Merci
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
20 juin 2009 à 14:06
:/ je m'y connais pas assez pour t'aider, désolé...
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 14:10
Ok merci bien d'avoir essayé
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 14:16
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.
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 14:30
Ok, je vous envoi le resultat de suite. Merci, je renomme $result par $sql, C'est une bonne remarque
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 14:34
bool(false)
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/p/g/a/pgaliba/html/TOUTAOUAGA/emploi/Copie de inscription/mon-cv.php on line 21
Erreur de connexion
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 14:40
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"); 
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 15:04
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920 > djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015
20 juin 2009 à 15:15
je vois pas l'intérêt de crypter l'identifiant.
tu mets le champ du mot de passe en "PASSWORD", le reste t'as pas besoin de le crypter.
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 14:49
non
J'avai oublié quelque chose:
Voici l'erreur
string(62) "SELECT * FROM Comptes_Utilisateurs WHERE Clef_Activation = 19;" Erreur de connexion
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 14:50
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;
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
20 juin 2009 à 15:00
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
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 15:09
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 !
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 15:27
ok, ca me met erreur de connexion
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920 > djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015
20 juin 2009 à 15:32
bon on arrête tout et on reprend le problème depuis le début, on avance à l'aveuglette, ça rime à rien !

en premier faut savoir ce que tu veux faire et pourquoi tu veux as besoin de ce champ "clé d'activation".
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
20 juin 2009 à 15:44
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?
0
legranddamas Messages postés 3 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 20 juin 2009
20 juin 2009 à 15:21
je pense ke le site du zero peu être la solution a tn problème.
www.siteduzero.com
0
legranddamas Messages postés 3 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 20 juin 2009
20 juin 2009 à 15:40
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
?>
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 15:42
il le fait déjà, le problème ne vient pas de là…

lire la discussion avant de répondre, ça peut aider à comprendre le problème.
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
20 juin 2009 à 15:48
Justement, mon problème ne reside pas à la connexion de la base.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 15:55
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 ?
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 16:01
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
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 16:15
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é.
0
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
20 juin 2009 à 16:22
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é.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 juin 2009 à 16:30
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.
0