connexion base impossible !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : connexion base impossible !

par Cyrano » 16 mai 2005, 00:04

Salut
Vire le [ pseudo=$+POST['pseudo'] ] : si c'est un pseudonyme provenant d'un formulaire d'identification, ça ne veut pas dire qu'il a pour autant les droits d'Accès à MySQL alors que celui défini dans ton fichier de configuration en principe a ce droit.

j'ajoute que j'ai opbservé dans le code au dessus des bizarreries:
$requete=mysql_db_query($bdd,"SELECT * from membres where pseudo='$pseudo'") or die(mysql_error());
$num = mysql_num_rows($result);
D'ou sort donc cette variable $result dans la seconde ligne?? logiquement, je me serais attendu à trouver :
$requete=mysql_db_query($bdd,"SELECT * from membres where pseudo='$pseudo'") or die(mysql_error());
$num = mysql_num_rows($requete);
Ensuite, tu utilises une fonction obsolète:
$requetem = mysql_db_query($bdd,"select * from membres where email='$email'",$db) or die(mysql_error());
$numm = mysql_num_rows($requetem);
Tu peux utiliser mysql_query au lieu de mysql_db_query() cependant, la syntaxe peut alors être simplifiée en supprimant le premier paramètre. Mais utilises les bonnes variables: ta variable $db sort du néant, tu vas te faire encore jeter par PHP avec un warning pour variables indéfinie.
En clair, ça devrait plutôt ressembler à ceci :
$requetem = mysql_query("select * from membres where email='". $email ."'",$bdd) or die(mysql_error());
$numm = mysql_num_rows($requetem);
Ensuite, tu as une façon un peu rapide pour chercher une adresse ip :
$ip = $REMOTE_ADDR;
Essayes donc avec :
    $ip = $_SERVER['REMOTE_ADDR'];
Encore un peu en dessous, tu utilises une variables $fichier qui n'est définie nulle part... là, je n'ai pas trouvé comment corriger.

Allez, regarde bien ton code et raisonne avec logique, ce n'est pas très compliqué.

par YVES » 15 mai 2005, 23:18

Faut que je modifie quoi alors :? :oops:
(ca marchait il y a qq mois...)

par Xenon_54 » 15 mai 2005, 22:58

Conflit de variables : $pseudo est défini à deux endroits.
Dans le fichier de config
$pseudo = "root";
Dans le script
$pseudo=($_POST['pseudo']);
:twisted:

par YVES » 15 mai 2005, 22:37

Bon, après quelques recherches :shock: et une modif du code revoici donc les deux scripts litigieux?

<?php
$host = "localhost";
$pseudo = "root";
$passe = "";
$bdd = "medieland";
mysql_connect("$host","$pseudo","$passe") or die("problème host, pseudo ou mdp !");
mysql_select_db("$bdd") or die("Impossible de se connecter à la base");
?>

<?php
require_once("config.php");
$pseudo=($_POST['pseudo']);
$email=($_POST['email']);
$passe=($_POST['passe']);
$predef=($_POST['predef']);
$typeava=($_POST['typeava']);
$metier=($_POST['metier']);
$sexe=($_POST['sexe']);
$age=($_POST['age']);
mysql_connect("$host","$pseudo","$passe") or die("Impossible de se connecter à la base de données !");
mysql_select_db("$bdd") or die("Impossible de se connecter à la base");
$requete=mysql_db_query($bdd,"SELECT * from membres where pseudo='$pseudo'") or die(mysql_error());
$num=mysql_num_rows($result);
if($num!=0)
{
echo"Ce pseudo est déjà pris.<center>onClick='history.back()'>Retour</a></center>";
exit;
}

$requetem=mysql_db_query($bdd,"select * from membres where email='$email'",$db) or die(mysql_error());
$numm=mysql_num_rows($requetem);

if($numm!=0)
{
echo"cet email est déjà pris.<a href=\'javascript:history.back()\'>retour</a>";
exit;
}

else
{
$ip = $REMOTE_ADDR;
$date = time();
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$smartid.=substr($lettres,(rand()%(strlen($lettres))),1);
}
$sql = "INSERT INTO membres (id, pseudo, passe, email, avatar, metier, sexe, age, date_reg, ip) VALUES
('$smartid',
'$pseudo',
'$passe',
'$email',
'$fichier',
'$sexe',
'$metier',
'$age',
'$date',
'',
'$ip')
";
mysql_query ($sql);
$expire = 365*24*3600;
setcookie("pseudo","$pseudo",time()+$expire,"/","");
setcookie("smartid","$smartid",time()+$expire,"/","");
session_start();
session_register('pseudo');
session_register('smartid');
header("Location: bravo.php");
}
?>

Quelqu'un pourrait-il me dire POURQUOI cela ne fonctuionne plus alors que cela marchait avec easy php 1.7 ??? je testais en local en simulant avec divers pseudos et cela allait très bien :shock: :(

voici le mess d'erreur:

Warning: mysql_connect(): Accès refusé pour l'utilisateur: 'Yves'@localhost' (mot de passe: OUI) in c:\program files\easyphp1-8\www\medieland\ins.php on line 11
Impossible de se connecter à la base de données !

J'ai été voir dans "privilèges" et je n'y comprends rien !

par YVES » 15 mai 2005, 21:07

Mais heu, me dispute pas :oops:
ce script fonctionnait avant ! (enfin je crois) je m'étais beaucoup inspiré du site du zéro (mondialement connu :shock: )...........
Bon, je vais revoir tout cela :roll: aie, aie, aie !
et si pb, je reposte ici-meme. merci pour les infos :wink:

par Xenon_54 » 15 mai 2005, 03:57

Conflit de variables : $pseudo est défini à deux endroits.
Dans le fichier de config
$pseudo = "root";
Dans le script
$pseudo=($_POST['pseudo']);
mysql_select_db("$bdd") or die("Impossible de se connecter à la base"); 
$num=mysql_num_rows($requete);
if($num!=0)
{
echo"Ce pseudo est déjà pris.<center>onClick='history.back()'>Retour</a></center>";
exit;
} 
À quoi correspond $requête? Où vas-tu chercher ça? On ne peut pas calculer le nombre de résultats retournée sur une requête qui n'a jamais existée...
$requetem=mysql_db_query($bdd,"select * from membres where email='$email'",$db) or die(mysql_error()); 
$db sort d'où? Normalement, c'est la variable contenant la ressource de connexion MySQL. Or, tu ne l'as jamais récupérée.
Tu aurais du faire : $db = mysql_connect(...);


Commentaire final : Révise entièrement ton code car je vais te dire franchement, c'est pas beau à voir.
Enlève les () autour des variables, c'est inutile. :arrow: $passe=($_POST['passe']);
Enlève les " autour des variables, c'est inutile. :arrow: "$passe"

Vraiment, je te conseille de tout réviser et d'essayer de comprendre ce que tu fais. De plus, une lecture des tutoriels disponibles sur phpdebutant ou phpfrance.com ne te ferait pas de tort.

par YVES » 15 mai 2005, 01:19

je sais, je ne comprends rien, j'ai tout virer et tout réinstallé de sfois que :roll:
voici mon fichier de config:
<?php
$host = "localhost";
$pseudo = "root";
$passe = "";
$bdd = "medieland";
mysql_connect("$host","$pseudo","$passe") or die("Impossible de se connecter à la base de données !");
mysql_select_db("$bdd") or die("Impossible de se connecter à la base");
?> 
et ensuite le fichier d'inscrition à la base de données (la ligne 12 est colorée pour vous repérer)
<?php
require_once("config.php");	
$pseudo=($_POST['pseudo']);
$email=($_POST['email']);
$passe=($_POST['passe']);
$predef=($_POST['predef']);
$typeava=($_POST['typeava']);
$metier=($_POST['metier']);
$sexe=($_POST['sexe']);
$age=($_POST['age']);
mysql_connect("$host","$pseudo","$passe") or die("Impossible de se connecter à la base de données !");
mysql_select_db("$bdd") or die("Impossible de se connecter à la base");
$num=mysql_num_rows($requete);
	if($num!=0)
	{
	echo"Ce pseudo est déjà pris.<center>onClick='history.back()'>Retour</a></center>";
	exit;
	}
	
	$requetem=mysql_db_query($bdd,"select * from membres where email='$email'",$db) or die(mysql_error());
	$numm=mysql_num_rows($requetem);

	if($numm!=0)
	{
	echo"cet email est déjà pris.<a href=\'javascript:history.back()\'>retour</a>";
	exit;
	}

	else
	{
	$ip = $REMOTE_ADDR;
	$date = time();	
	$taille = 20;
	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
	srand(time());
	for ($i=0;$i<$taille;$i++)
	{
	$smartid.=substr($lettres,(rand()%(strlen($lettres))),1);
	}
	$sql = "INSERT INTO membres (id, pseudo, passe, email, avatar, metier, sexe, age, date_reg, ip) VALUES 
	('$smartid',
	'$pseudo', 
	'$passe', 
	'$email',
	'$fichier',
	'$sexe',
	'$metier',
	'$age', 
	'$date',
	'',
	'$ip')
	";
	mysql_query ($sql);
	
	
	$expire = 365*24*3600; 
	setcookie("pseudo","$pseudo",time()+$expire,"/","");
	setcookie("smartid","$smartid",time()+$expire,"/","");    
	
	session_start();
	session_register('pseudo');
	session_register('smartid');
	header("Location: bravo.php");
	

}
?>

par Epeda » 15 mai 2005, 01:04

Peux-tu montrer ton code stp ?
Ce message d'erreur indique un probleme de variable, et non de connexion à la base de données. Donc il n'y a, à priori aucun rapport avec ton précédent problème.

par YVES » 15 mai 2005, 01:01

ca ne fonctionne toujours pas, toujours les memes messages d'erreur. :evil:

Notice: Undefined variable: requete in c:\program files\easyphp1-8\www\medieland\ins.php on line 12

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\medieland\ins.php on line 12

Notice: Undefined variable: db in c:\program files\easyphp1-8\www\medieland\ins.php on line 19

Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in c:\program files\easyphp1-8\www\medieland\ins.php on line 19

Le premier mess erreur en vert, me dit que la variable n'est pas reconnue !
pourtant c'est bien référence à ma base de données :roll:

par YVES » 13 mai 2005, 22:26

J'ai peut-etre résolu SEUL le pb :P
dans la base.... login au lieu de "pseudo" ?
je réinstalle tout et vous tient au courant :P

par YVES » 11 mai 2005, 22:21

ripat ou les autres, je suis désolé mais cela merde toujours :oops:
les messages d'erreur ont changé mais semblent toujours etre du meme registre....

Notice: Undefined variable: requete in d:\program files\easyphp1-8\www\medieland\ins.php on line 12

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\program files\easyphp1-8\www\medieland\ins.php on line 12

Notice: Undefined variable: db in d:\program files\easyphp1-8\www\medieland\ins.php on line 19

Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in d:\program files\easyphp1-8\www\medieland\ins.php on line 19

mon fichier qui valide les inscritions (ins.php)

<?php
include_once("config.php");
$pseudo=($_POST['pseudo']);
$email=($_POST['email']);
$passe=($_POST['passe']);
$predef=($_POST['predef']);
$typeava=($_POST['typeava']);
$metier=($_POST['metier']);
$sexe=($_POST['sexe']);
$age=($_POST['age']);
//connexion à la base de données:
mysql_connect("$host","$pseudo","$passe") or die("Impossible de se connecter à la base de données !");
mysql_select_db("$bdd") or die("Impossible de se connecter à la base");
$num=mysql_num_rows($requete);
if($num!=0)
{
echo"Ce pseudo est déjà pris.<center>onClick='history.back()'>Retour</a></center>";
exit;
}
$requete=mysql_db_query($bdd,"select * from membres where email='$email'",$db) or die(mysql_error());
$num=mysql_num_rows($requete);

if($num!=0)
{
echo"cet email est déjà pris.<a href=\'javascript:history.back()\'>retour</a>";
exit;
}

else
{
$ip = $REMOTE_ADDR;
$date = time();
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$smartid.=substr($lettres,(rand()%(strlen($lettres))),1);
}
$sql = "INSERT INTO membres (id, pseudo, passe, email, avatar, metier, sexe, date_reg, ip) VALUES
('$smartid',
'$pseudo',
'$passe',
'$email',
'$fichier',
'$sexe',
'$metier',
'$age',
'$date',
'',
'$ip')
";
mysql_query ($sql);
$expire = 365*24*3600;
setcookie("pseudo","$pseudo",time()+$expire,"/","");
setcookie("smartid","$smartid",time()+$expire,"/","");
session_start();
session_register('pseudo');
session_register('smartid');
header("Location: bravo.php");
}
?>

et mon fichier "config.php" que voilà:

<?php
session_start();
$host = "localhost";
$pseudo = "root";
$passe = "";
$bdd = "medieland";
mysql_connect($host, $pseudo, $passe);
mysql_select_db($bdd);
?>

je tiens à dire que ces scripts fonctionnaient avec easyphp 7 et le mysql qui allait avec....

par Ripat » 06 mai 2005, 10:13

J'ajouterais pour finir? :oops: qu'il me semble avoir lu (il y a longtemps) que c'était une histoire de fichier à configurer convenablement, mais lequel?
Les accès au serveur MySQL sont définis soit dans le fichier d'option my.ini ou my.cnf comme relevé par Cyrano, soit "en dur" dans la base de donnée mysql. Plus particulièrement dans la table users. Ces accès (niveau bdd) sont régis par:
  • user
    password
    host
Dans le fichier d'option tu trouveras les codes d'accès (en clair!) sous la section [client]. Personnellement je trouve la solution en dur plus sécuritaire.

As-tu essayé en ligne de commande:

Code : Tout sélectionner

c:\> mysql -u root -p Enter password:
Si tu as oublié tous les mots passe y compris celui de root, il y a une solution mais je te préviens, ce n'est pas simple.

par Cyrano » 06 mai 2005, 09:16

Théoriquement, tu vas trouver ça dans un fichier my.ini, soit dans le répertoire de MySQL, soit dans C:/WINDOWS

par YVES » 06 mai 2005, 00:17

J'ajouterais pour finir? :oops: qu'il me semble avoir lu (il y a longtemps) que c'était une histoire de fichier à configurer convenablement, mais lequel?

par YVES » 06 mai 2005, 00:16

Warning: mysql_connect(): Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in d:\program files\easyphp1-7\www\medieland\config.php on line 6
Impossible de se connecter à la base de données

C'est quasiment le meme mess d'erreur apres avoir virer "root" du fichier config :(

Je ne comprends pas, ce programme fonctionnait avant (depuis, j'ai du réinstallé le pc et tous les logiciels avec dont easy php mysql.....) :roll: