Page 1 sur 1

BLocaque IP

Posté : 13 mars 2006, 15:03
par xflagg
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.

Posté : 13 mars 2006, 15:16
par mario
regarde du coté d'httpd.conf (fichier de configuration d'APACHE) pour la restriction.

Posté : 13 mars 2006, 15:20
par xflagg
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 !

Posté : 13 mars 2006, 15:21
par ephemere
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...

Posté : 13 mars 2006, 15:25
par zigz4g
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.

Posté : 13 mars 2006, 16:44
par xflagg
oups désolé intraterre = intranet Armée de Terre

Posté : 13 mars 2006, 17:10
par xflagg
a quel endroit dans ma page je mets :

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

Posté : 13 mars 2006, 17:25
par zigz4g
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 :)

Posté : 13 mars 2006, 17:28
par xflagg
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

Posté : 13 mars 2006, 17:45
par mere-teresa
output started at /var/www/rcr601/celinfo_acc_tmp2.php:2
L'erreur est là !

Posté : 13 mars 2006, 18:12
par xflagg
je ne suis pas (encore ) un adepte du php ! Pouvez vous m'aiguiller ? merci

Posté : 13 mars 2006, 18:26
par mere-teresa
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

Posté : 14 mars 2006, 11:46
par xflagg
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.

Posté : 15 mars 2006, 09:43
par xflagg
J'ai réussi à faire tout ce que je voulais :
Merci à tous pour le coup de pouce !!