Oftmals steht man vor dem Problem auf seiner Website auch Inhalte für das Intranet anbieten zu wollen. Für folgenden Lösungsvorschlag sind diese Voraussetzungen zu erfüllen:
Inhalte die nur Intern sichtbar sein sollen sind über Menüs auf ein eigenes Template zu linken.
In dieses Template ist folgender Code einzufügen
PHP-Code:
<?php
//IP-Adresse lesen (funktioniert eigentlich bei jedem Server so)
if (isset($_SERVER['REMOTE_ADDR'])) $ip=$_SERVER['REMOTE_ADDR']; else $ip="0.0.0.0";
/**
* compare given ip with a range
* e.g. [0-255].[0-255].[0-255].[0-255] covers ip like 192.169.1.1
* e.g. [192].[168].[1].[0-255] cover ip like 192.168.1.0-255
* e.g. [192].[168].[1].[128] cover only ip 192.168.1.128
*
* @param string ip to check e.g. 192.168.0.1
* @param string range to check for e.g. [0-255].[0-255].[0-255].[0-255]
* @return bool
*/
function validateIpV4Range ($target, $range) {
$counter = (int) 0;
// explode target ip
$tip = explode ('.', $target);
// explode range ip
$rip = explode ('.', $range);
// run ip segments
foreach ($tip as $targetsegment) {
// get appropriate range segm.
$rseg = $rip[$counter];
// strip brackets
$rseg = preg_replace ('=(\[|\])=', '', $rseg);
// explode min max
$rseg = explode ('-', $rseg);
// no max value
if (!isset($rseg[1]))
$rseg[1] = $rseg[0];
// compare
if ($targetsegment < $rseg[0] || $targetsegment > $rseg[1])
return false;
$counter++;
}
return true;
}
// CHECK ACCESS if User is logged in
global $gid; // Joomla1.5
$gid = intval( $my->gid );
$username = $my->username;
if ( $gid == 2 ) // Adminaccess
{
echo "Sie sind ein Admin. Username = ";
echo $username;
echo ' OK. Proceeding ...';
echo $ip ;
?>
<br><br> <jdoc:include type="component" />
<?php
}
else if ( $gid == 1 ) // registered User
{
echo "Sie sind ein registrierter User";
echo $username;
echo ' OK. Proceeding ...';
echo $ip ;
?>
<br><br> <jdoc:include type="component" />
<?php
}
else if ( $gid == 0 ) // not logged in
{
echo "Sie sind ein nicht eingeloggter User. ";
?>
Prüfe IP :
<?php // proceed to check IP-Range
if (validateIpV4Range($ip, '[192-192].[168-168].[0-0].[0-255]')) //192.168.0.*
{
echo 'OK. Range 192.168.0.0-255 Internal. Proceeding ...';
echo $ip ;
?>
<br><br> <jdoc:include type="component" />
<?php
}
else if (validateIpV4Range($ip, '[192-192].[168-168].[1-1].[0-255]')) //192.168.1.*
{
echo 'OK. Range .48.0-255 Internal. Proceeding ...';
echo $ip ;
?>
<br><br> <jdoc:include type="component" />
<?php
}
else // IP Range not matching and no User logged in private Site
{
echo 'External : ';
echo ' OK. Proceeding ...';
echo $ip ;
?>
<br><br>
<h2>Interne Informatinen</h2>
Um diesen Bereich einsehen zu können müssen Sie sich anmelden.
<br><br>
<a href="{link zum anmelden}">Anmelden</a>
<?php
}
}
?>
*** END *** the following lines are after <jdoc:include type="component" /> in your Template an only an example ***
<jdoc:include type="modules" name="userx" />
</div>
<div class="clear"> </div>
</div>
</div>
<div id="footer">
<jdoc:include type="modules" name="bottom" style="rounded" />
</div>
</div>
</body>
Befindet man sich nun innerhalb des festgelegten IP-Bereichs (ich habe mal zwei angegeben) wird die Seite ausgeliefert.
Ruft man die Seite von ausserhalb auf wird überprüft ob der Aufrufer angemeldet ist und gibt eine entsprechende Meldung aus.
Bye
*****************************
Intranet - Addressenbeschränkung - Zugangskontrolle


LinkBack URL
About LinkBacks
Zitieren

Lesezeichen