connexion base impossible !

Eléphant du PHP | 250 Messages

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:

Eléphant du PHP | 250 Messages

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 !

Mammouth du PHP | 1885 Messages

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:
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 250 Messages

15 mai 2005, 23:18

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

Mammouth du PHP | 19672 Messages

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é.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: