BLocaque IP

Eléphanteau du PHP | 24 Messages

13 mars 2006, 15:03

Bonjour,

je suis désigné pour réaliser le site intraterre de mon entreprise !
Je dois limiter l'accès à certaine page par rapport au masque de l'adresse IP
ex toutes les adresse du types 192.168.10.* ont accès à la page

J'ai récupéré ce script :


<?php
$ip = getenv("REMOTE_ADDR");
?>
<html>
<head>
<script language="javascript">
function r(){
var mavariable='<?php echo $ip ?>';
switch (mavariable){
case '192.168.10.*':
alert("CLiquer pour continuer");
document.location="http://www.monsite.com/suite";
break;
default :
alert("Vous n'êtes pas autorisé à visiter cette page, vous allez être redirigé !");
document.location="http://www.monsite.com/defaut";
}
}
</script>
<title>Redirection</title>
</head>
<body onLoad="r()">
</body>
</html>


Mon problème est que je n'arrive pas à appliquer le script au masque 192.168.10.*
Je suis obligé de saisir un adresse complète !
j'ai essayé
case '192.168.10.' :
case '192.168.10' :
case '192.168.10.*' :
mais ca ne marche pas !
Auriez vous une solution à me proposer ? Où un autre script !
J'ai mis ce script dans une page appellée rediction.php
Quand je clique sur mon lien, cette page est appellée, et la redirection doit se faire toute seule.
Un grand merci d'avance.

Mammouth du PHP | 768 Messages

13 mars 2006, 15:16

regarde du coté d'httpd.conf (fichier de configuration d'APACHE) pour la restriction.
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphanteau du PHP | 24 Messages

13 mars 2006, 15:20

Le site n'est pas hébergé sur un de mes serveurs !
Il est hébergé par la direction centrale de mon établissement !
Je n'ai donc pas accès au fichier de config !

Eléphant du PHP | 124 Messages

13 mars 2006, 15:21

Comme je l'ai dit sur mon post je suis tres tres mauvais en php (pour l(instant) mais je te tente quand même d'apporter mon aide...ça coute rien
Peut être pourrais tu inserrer une variable à la place de la 4ème suite de chiffre et tout simplement autoriser le passage tant que la variable est comprise entre 0 et 255...

Mammouth du PHP | 684 Messages

13 mars 2006, 15:25

Salut.

Pas mal le nouveau nom 'intraterre', je ne connaissais pas :) .

Pour sécuriser ton site, je te déconseilles un script javascript. Tu es peux être dans une réseau local mais si quelqu'un de ta boite desactive son javascript, il risque de savoir comment passer outre.

Tu peux avec la récupération de l'ip en PHP faire une redirection vers une page de ton choix.
//index.php
<?php
$ip = getenv("REMOTE_ADDR");
if ($ip == '192.168.10.1') {
    header('Location: http://www.monsite.com/page_index_admis.php');
}
else {
    echo 'Vous n\'êtes pas autorise a aller sur les pages suivantes.';
}
?>
Pour faire un bloque d'adresses IP, tu peux faire une regexp (voir la documentation sur ereg).
<?php
$ip = getenv("REMOTE_ADDR");
if (ereg ("(192)\.(168)\.(10)\.([0-9]{1,3})", $ip)) {
    header('Location: http://www.monsite.com/page_index_admis.php');
}
else {
    echo 'Vous n\'êtes pas autorise a aller sur les pages suivantes.';
}
?> 
Pour déboguer ton script javascript, tu dois aussi faire une regexp sur ta chaîne qui correspond a ton ip.
Zigz4g

Eléphanteau du PHP | 24 Messages

13 mars 2006, 16:44

oups désolé intraterre = intranet Armée de Terre

Eléphanteau du PHP | 24 Messages

13 mars 2006, 17:10

a quel endroit dans ma page je mets :

echo '<pre>';print_r($mavar);echo '</pre>'; ?
merci

Mammouth du PHP | 684 Messages

13 mars 2006, 17:25

Re.

Tu peux mettre le bout de code que je donne dans ma signature partout ou tu as besoin de déboguer du code php.

C'est plus une aide au développement qu'une solution a ton problème. C'est d'ailleur pour cela que je le mets dans ma signature :)
Zigz4g

Eléphanteau du PHP | 24 Messages

13 mars 2006, 17:28

J'ai voulu faire un essai

//index.php
<?php
$ip = getenv("REMOTE_ADDR");
if ($ip == '192.168.10.232')
{
    header ('Location: http://www.monsite.terre.defense.gouv.fr/mapage.php');
}
else
{
    echo 'blablabla';
}
?>
<html>
<head>
<title>Redirection</title>
</head>
<body>
</body>
</html>
Voilà le message qui s'affiche
//index.php
Warning: Cannot modify header information - headers already sent by (output started at /var/www/rcr601/celinfo_acc_tmp2.php:2) in /var/www/rcr601/celinfo_acc_tmp2.php on line 5

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 mars 2006, 17:45

output started at /var/www/rcr601/celinfo_acc_tmp2.php:2
L'erreur est là !
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 24 Messages

13 mars 2006, 18:12

je ne suis pas (encore ) un adepte du php ! Pouvez vous m'aiguiller ? merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 mars 2006, 18:26

N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
Quand on débute, il faut lire la documentation, elle est riche :) http://fr3.php.net/manual/fr/function.header.php et si elle est trop complexe, il reste les tutos PHPFrance : http://www.phpfrance.com/tutoriaux/inde ... edirection
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 24 Messages

14 mars 2006, 11:46

Ok ca marche pour la redirection !
J'aurais une dernière question !
Avant la redirection je voudrais afficher une boite de dialogue qui informera l'utilisateur qu'il a accès ( ou non ) à la page suivante !
Quelle formule je peux utiliser ?
Merci d'avance.

Eléphanteau du PHP | 24 Messages

15 mars 2006, 09:43

J'ai réussi à faire tout ce que je voulais :
Merci à tous pour le coup de pouce !!