[RESOLU] script qui ne marche pas

Eléphanteau du PHP | 12 Messages

26 mars 2014, 15:45

Bonjour,

Quelqu'un à une idée pourquoi ce script ne marche pas, ça me renvoie toujours en local
l'IP est bien celle du serveur

Code : Tout sélectionner

if($_SERVER['REMOTE_ADDR']==trim('94.247.etc)) { //connection au serveur distant $cnx=mysql_connect("localhost","tim","xxxx") or die("Impossible de se connecter : " . mysql_error()); $db=mysql_select_db('base') } else { //connexion en local }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mars 2014, 17:05

salut,

as tu vérifié ce que retourne $_SERVER['REMOTE_ADDR'] ?

le trim est inutile si tu indique la valeur ;)

pourquoi te baser sur l'ip du visiteur et pas simplement sur le nom du l'host du serveur ? ($_SERVER['SERVER_NAME'])
c'est une info plus fiable (même si faut modifier quand tu change de machine s'il ne s'appel pas localhost ;) ) que l'adresse ip ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

26 mars 2014, 20:39

avec $_SERVER['SERVER_NAME'] ça ne marche pas non plu ??
if($_SERVER['SERVER_NAME']=='timbres.com' )
{
	//connection au serveur distant
$cnx=mysql_connect("localhost","timb","xxx") or die("Impossible de se connecter : " . mysql_error());
$db=mysql_select_db('base');
}
else
{
  //connection au serveur local
}

Mammouth du PHP | 2278 Messages

26 mars 2014, 21:18

Une idée simple de débogage:
remplacer
if($_SERVER['SERVER_NAME']=='timbres.com' )
par
$serveur = $_SERVER['SERVER_NAME'];
print "<br > $serveur <br ./>";
if ($serveur === "timbres.com")

En règle générale, il faut faire afficher les variables quand le comportement n'est pas celui qu'on attend. Elles n'ont pas toujours la valeur qu'on croyait.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

27 mars 2014, 11:31

bonjour et merci de vous préoccuper de mon problème

j'ai modifié comme suggéré et ça ne marche toujours pas
La réponse de l'echo est bien : france-timbre.fr
$cnx="";$db="";
$serveur=$_SERVER['SERVER_NAME'];
echo $serveur;
if($serveur=='france-timbre.fr')
{
	//connection au serveur distant
$cnx=mysql_connect("localhost","timb","xxxx") or die("Impossible de se connecter : " . mysql_error());
$db=mysql_select_db('base');
	//l'adresse de connexion
$_SESSION['adresse_site']="http://www.france-timbre.fr/";
}
else
{  
  //connection au serveur local
}

Petit nouveau ! | 3 Messages

27 mars 2014, 12:10

Si j'ai bien compris ton script, tu cherches à interroger une BDD locale ou distante en fonction de l origine de la requete.
Ton probleme vient, selon moi de ta méthode de connexion à la BDD.
//connection au serveur distant
    $cnx=mysql_connect("localhost","tim","xxxx") or die("Impossible de se connecter : " . mysql_error());
Même si ta condition est vérifiée, tu ne pourras te connecter à une base de données distante avec "localhost" ;)
Si ta requete pour te connecter à ta BDD locale est la même c'est à dire :
//connection au serveur local
    $cnx=mysql_connect("localhost","xx","xxxx") or die("Impossible de se connecter : " . mysql_error());
Et bien tu te connecteras à la même BDD. Il te faut donc remplacer localhost par l'ip du serveur BDD distant et vérifier si ton serveur de bdd distant accepte les connexions ..... distantes ( dsl pas trouvé d autre mot :p ).

Si j'ai mal compris ton script/demande, ignore ma réponse, elle doit être erronée.

Eléphanteau du PHP | 12 Messages

27 mars 2014, 12:48

Re-bonjour,

J'ai résolu mon problème voici la solution

en fait sur certaines pages $_SERVER['SERVER_NAME'] répond 'france-timbre.fr'
et sur d'autres pages $_SERVER['SERVER_NAME'] répond 'www.france-timbre.fr'

Je ne comprend pas pourquoi mais je le constate

Voila, merci à tous