[aide] script controler IP

Eléphant du PHP | 51 Messages

31 mars 2010, 17:49

salut tout le monde, je commence a m'habituer a ce forum et la super aide de tout le monde alors je poste car je sait qu'au moins on pourra m'aider ^^

En gros la je souhaite réguler mes inscription sur mon jeu, donc ajouter un truc pour que l'on puisse que crée deux compte par IP , et aussi si il était possible de pouvoir s'inscrire que si l'on possede une IP Française : ça c'est moins sur ^^

en tout cas voici mon script inscription, je sait pas si vous sauriez quoi ajouter pour que cela fonctionne :
<center><BLINK><font color="black">!IMPORTANT! Un compte par IP (Je vérifie les Ip )</font></BLINK><br><br>
	<form action="reg.php" method="post">
		Nom de compte: <br>
		<input type="text" name="user" size="30"><br>
		Mot de passe: <br>
		<input type="password" name="pw1" size="30"><br>
		Répété Mot de passe: <br>
		<input type="password" name="pw2" size="30"><br>
		Code effacement: <br>
		<input type="text" name="code" maxlenght="7" size="30"><br>
	<input type="submit" name="reg" value="Confirmation">
</center>

<?php

if(isset($_POST['reg']) && $_POST['reg'] == 'Confirmation') {

include('inc/config.php');
	mysql_select_db('account');

	$user = mysql_real_escape_string($_POST['user']);
	$pw1 = mysql_real_escape_string($_POST['pw1']);
	$pw2 = mysql_real_escape_string($_POST['pw2']);
	$code = $_POST['code'];
	
		if(strlen($code) == 7) {
		
			if($pw1 == $pw2) {
			
			$create = "INSERT into account set login = '" . $user . "', password = PASSWORD('" . $pw1 . "'), social_id = '" . $code . "', coins = '100'";
			$query = mysql_query($create);
			
				if($query) {
				echo "Compte créé avec succés!";
				} else { echo "Le compte n'a pu se créé"; }
				
			}
			else { echo "Les deux mot de passe ne correspondent pas."; }
			
			}
			else { echo "Le code effacement doit contenir 7 Charactères."; }
			
}


?>

Merci d'avance !

Eléphant du PHP | 428 Messages

31 mars 2010, 18:03

... donc ajouter un truc pour que l'on puisse que crée deux compte par IP
Je ne sais pas si en France c'est la même chose qu'en Belgique, mais en Belgique les 90% des internautes ne disposent pas d'adresse ip fixe (càd qui ne change jamais). Ils possèdent une IP dynamique.

Donc si un internaute viens sur ton site avec un ip dynamique, il pourra s'inscrire autant de fois qu'il veux dès le moment ou il redémarre son routeur.

Je sais ça ne résoud pas ton problème mais au moins tu es au courant des implications de gestion d'un système de login par adresses IP.

@+
raph
Modifié en dernier par visualight le 31 mars 2010, 18:05, modifié 1 fois.

Mammouth du PHP | 672 Messages

31 mars 2010, 18:04

Quelques bases pour ce que tu veux faire :
- $_SERVER['REMOTE_ADDR'] te donne a priori l'IP du client.
- Sur cette page du manuel PHP tu peux trouver, dans les commentaires, une fonction pour trouver le pays à partir de l'IP.

ATTENTION :
C'est fiable jusqu'à un certain point...
Il y a moyen de contourner un contrôle par 'REMOTE_ADDR', et l'IP ne correspond pas toujours au pays d'origine.
(Sans compter ceux qui ont une IP dynamique, effectivement)

Eléphant du PHP | 428 Messages

31 mars 2010, 18:07

Une piste ...
		function get_ip() { 
			if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
			 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
			} elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
			 $ip = $_SERVER['HTTP_CLIENT_IP'];
			} else { 
			 $ip = $_SERVER['REMOTE_ADDR'];
			} 
		 return $ip;
		}

Eléphant du PHP | 51 Messages

31 mars 2010, 18:21

Une piste ...
		function get_ip() { 
			if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
			 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
			} elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
			 $ip = $_SERVER['HTTP_CLIENT_IP'];
			} else { 
			 $ip = $_SERVER['REMOTE_ADDR'];
			} 
		 return $ip;
		}
ok merci mais j'ajoute ça directement, ya rien a modif dedans ? et ça donnera koi ?

Mammouth du PHP | 985 Messages

31 mars 2010, 18:32

La fonction plus haut est censée trouver la véritable IP d'un utilisateur même si il est derrière un proxy.
Hors, elle fonctionnera peut-être 1 fois sur 1000 et encore...

De plus, utilisée de cette façon, elle est au final beaucoup moins fiable qu'un simple: $_SERVER['REMOTE_ADDR'].

Donc pour ce que tu veux faire, mon avis est qu'il est surement préférable d'utiliser simplement:
// $ip correspondant à l'adresse IP de l'utilisateur
$ip = $_SERVER['REMOTE_ADDR'];
Ensuite à toi de décider ce que tu vas faire de cette information :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 51 Messages

31 mars 2010, 21:01

ok pour savoir leur Ip et sinon j'ai trouver ceci :
<?php
if($_SERVER["HTTP_ACCEPT_LANGUAGE"] == 'fr')
{
//Le visiteur est français, on lance l'inscription
}
else
{
echo 'Vous devez être français pour pouvoir vous inscrire';
}
?>
es que ça peut marcher ?

Mammouth du PHP | 985 Messages

31 mars 2010, 21:06

Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 51 Messages

31 mars 2010, 21:08

Pour ce que j'ai trouver sert soit disans a ce que seul les français puissent s'inscrire c'est vrai ou pas ? car la en ce moment j'ai bcp d'etranger qui vienne sur mon site et je veu pas car il font crasher mon serveur

Mammouth du PHP | 985 Messages

31 mars 2010, 21:12

Ce ne sont pas les étrangers qui viennent crasher ton serveur :!:
Crois moi les français sont très fort dans ce domaine.

Et regarde les liens que j'ai donné plus haut au lieu de me donner l"impression que je les ai donné pour rien :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 428 Messages

31 mars 2010, 21:17

Pour ce que j'ai trouver sert soit disans a ce que seul les français puissent s'inscrire c'est vrai ou pas ? car la en ce moment j'ai bcp d'etranger qui vienne sur mon site et je veu pas car il font crasher mon serveur
Non du tout, si je ne me trompe pas, le code que tu as donné c'est pour controler le langage du navigateur.
Ex.: Si un anglophone utilise un navigateur en francais, il aura accès à ton site.

Pour éviter de te faire hacker, je te conseille ce tuto qui est à utiliser en complément d'une protection existante :
php-debutant/securiser-proteger-son-sit ... 52325.html
Ce ne sont pas les étrangers qui viennent crasher ton serveur :!:
Crois moi les français sont très fort dans ce domaine.
Disons que ce ne sont pas QUE ;) les étranger mais bon, si tu tiens absolument a avoir uniquement des visiteurs français ...

Autoriser seulement les ip francaise dans le Htaccess :
http://www.rentabilisez.com/forum/index ... opic=40360


A+
raph

Eléphant du PHP | 51 Messages

31 mars 2010, 21:44

En faite il s'inscrire et font n'importe quoi ingame cela fait crasher le serveur, je cherche juste comment eviter qu'il viennent s'inscrire ^^

donc j'utilise ceci : ?
RewriteCond %{REMOTE_ADDR} ^41\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^81\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^196\.[0-9]+\.[0-9]+\.[0-9]+
RewriteRule .* - [F] 
mais je l'ajoute a la fin seulement ? (du script )


sinon Droke j'ai bien été voir tes sites merci j'a regarder un peu mais c'est surtout un script que je recherche

Eléphant du PHP | 428 Messages

31 mars 2010, 21:49

mais je l'ajoute a la fin seulement ? (du script )
NON, dans un fichier .htaccess que tu places dans la racine de ton site.
Je t'avais proposé d'utiliser les conditions htaccess de Enycu dans le lien que je t'ai donné
php-debutant/securiser-proteger-son-sit ... 52325.html

Mais si tu veux, tu peux utiliser CrawlProtect qui est basé sur les codes htaccess de Enycu mais avec une interface d'administration.
Ca me parait plus simple pour toi.

http://www.crawlprotect.com/fr/

Ce que fait CrawlProtect

-stop les injections de code
-stop les injections sql
-stop les aspirateurs de site
-facilite la gestion des chmod
-informe si un fichier est modifié

@+
raph
Modifié en dernier par visualight le 31 mars 2010, 21:54, modifié 2 fois.

Mammouth du PHP | 985 Messages

31 mars 2010, 21:51

Si ton site crash -> c'est de ta faute.

Tant que tu n'auras pas compris ça, il nous sera difficile de t'aider.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 51 Messages

31 mars 2010, 21:58

Pour le crachage ba si j'ai 100 inscrit en 10min et que ce sont tous des polonais et que dans le jeu il font tous "yes server crash" tu peut te dire qu'il te faut vite trouver un moyen pour ne plus qu'il joue non ?


sinon merci tout le monde, je vais regarder tous les lien et cherche un bon script


bonne soirée