Avatar billede chainweb Nybegynder
05. marts 2006 - 15:03 Der er 9 kommentarer og
1 løsning

Banne system til php Hjææælp!

Jeg har prøvet lave et lille ban til min php side, men vil meget gerne udvide den..

I toppen har jeg sat:

<?php
$banned_ip = array();
$banned_ip[] = 'xxx.xxx.xxx.xxx';

foreach($banned_ip as $banned) {
    $ip = $_SERVER['REMOTE_ADDR'];
    if($ip == $banned){
        echo "You have been banned!";
        exit();
    }
}
// resten af PHP Script her!
?>

hvor xxx.xxx.xxx.xxx bestemmer hvem der skal bannes.

Men hvordan gør jeg så jeg kan banne flere på en gang. og kunne godt tænke mig at når man er banned så man bliver linket til en anden side.. f.eks. "Banned.html".

Kan jeg evt. lave en formular så evt. admin's kan gå ind og banne brugere?

Nogen der evt. har et script som jeg evt. kan få / downloade?

Jeg er meget dårlig til php.. men på forhånd tak!
Avatar billede backside Nybegynder
05. marts 2006 - 15:19 #1
Du kan banne flere ved at adskille med ´,´ :
<?php
$ban_ip = ("xxx.xxx.100,xxx.xxx.200");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$ip_list = explode(",", $ban_ip);
foreach($ip_list as $ip)
{
if($visitor_ip == $ip)
{
die("Du er uønsket her!");
}
}

?>
Avatar billede backside Nybegynder
05. marts 2006 - 15:22 #2
Prøv evt. dette:
http://www.hotscripts.com/Detailed/51820.html
Har ikke selv prøvet det.
Avatar billede chainweb Nybegynder
05. marts 2006 - 17:51 #3
ok.. Men hvordan får jeg så siden til at gå videre til en anden side der f.eks hedder "Ban.php"...?
Avatar billede saucer Nybegynder
05. marts 2006 - 18:23 #4
Du kan hente et færdig script der kan alt dit på min hjemmeside under scripts.

www.saucer.dk
Avatar billede chainweb Nybegynder
06. marts 2006 - 13:14 #5
Jeg vil godt bruge det enkelte script jeg har skrevet en gang.. Så stiller spørgsmålet igen:

Hvordan får jeg så siden til at gå videre til en anden side der f.eks hedder "Ban.php"...?
Avatar billede backside Nybegynder
06. marts 2006 - 18:48 #6
Har ikke testet den. Men prøv lige.
(er ikke php nørd endnu)

<?php
$banned_ip = array();
$banned_ip[] = ('xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx');

foreach($banned_ip as $banned) {
    $ip = $_SERVER['REMOTE_ADDR'];
    if($ip == $banned){
    header('Location: http://blabla.dk/banned.php');
exit();
    }
}
// resten af PHP Script her!
?>
Avatar billede chainweb Nybegynder
06. marts 2006 - 18:57 #7
Med det script bliver man slet ikke banned?
Avatar billede backside Nybegynder
06. marts 2006 - 21:22 #8
<?php
$fBan = "ban.txt";
$aBannedIp = file($fBan);
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$userIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$userIp = $_SERVER['REMOTE_ADDR'];
}
if (in_array($userIp, $aBannedIp)) {
header('Location: http://blabla.dk/banned.php');
exit();
}
?>


Og så en ban.txt der indeholder dine IP adresser, ny linie for hver banned IP.
Kan ikke selv teste da jeg pt. ikke kan uploade, men den skal virke.
Avatar billede backside Nybegynder
06. marts 2006 - 21:37 #9
En anden mulighed:
<? 
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$user_ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
else { $user_ip=$_SERVER['REMOTE_ADDR']; }
if($user_ip=="xxx.xxx.xxx1"||$user_ip=="xxx.xxx.xxx2") { 
header('Location: http://blabla.dk/banned.php');
exit;
}
?>

Men hvis du VIL bruge dit eget script burde header() funktionen virke.
Avatar billede cybermike Nybegynder
07. marts 2006 - 08:27 #10
Okay hvad sker der lige for folks kendskab til php her? Scriptet er jo netop skrevet til at kunne banne flere adresser: (tvivler på chainweb selv har skrevet det når han spørger om sådan noget)

<?php
$banned_ip = array();
$banned_ip[] = 'xxx.xxx.xxx.xxx';

foreach($banned_ip as $banned) {
    $ip = $_SERVER['REMOTE_ADDR'];
    if($ip == $banned){
        echo "You have been banned!";
        exit();
    }
}
// resten af PHP Script her!
?>

For det første er koden dårlig skrevet , men, $banned_ip er et array som loopes hvor hver enkelt vaerdi tjekkes, det vil sige vi kan bare udvide arrayet, som f.ek.:

<?php
$banned_ip = array();
$banned_ip[] = 'xxx.xxx.xxx.xxx';
$banned_ip[] = 'xxx.xxx.xxx.yyy';
$banned_ip[] = 'xxx.xxx.yyy.yyy';
$banned_ip[] = 'xxx.yyy.yyy.yyy';

foreach($banned_ip as $banned) {
    $ip = $_SERVER['REMOTE_ADDR'];
    if($ip == $banned){
        echo "You have been banned!";
        exit();
    }
}
// resten af PHP Script her!
?>

Og det kan du sådan set blive ved med, mht at viderestille til en anden side så er det heller ikke noget problem, sørg for at php koden står øverst på din side (der må ikke blive skrevet noget ud før scriptet køres, dvs ingen metatags eller linieskift før <?

<?php
$banned_ip = array();
$banned_ip[] = 'xxx.xxx.xxx.xxx';
$banned_ip[] = 'xxx.xxx.xxx.yyy';
$banned_ip[] = 'xxx.xxx.yyy.yyy';
$banned_ip[] = 'xxx.yyy.yyy.yyy';

foreach($banned_ip as $banned) {
    $ip = $_SERVER['REMOTE_ADDR'];
    if($ip == $banned){
        header("Location: ./banned.html");
        exit();
    }
}
// resten af PHP Script her!
?>


og læg så mærke til at dette script skal kaldes i toppen af alle dine php filer på siden ellers vil beskyttelsen være nytteløs, du bør også kalde dine billeder igennem et php script for at undgå at folk der er bannede f.eks. kan bookmarke dine billeder. Som f.eks.


billede.php:

<?
include("banip.php");  // Dit ban script
// Hvis vi kom hertil er brugeren ikke bannet
$billeder['logo']='../images/logo.gif';  // Læg billederne i en mappe uden for dit wwwdir
$billeder['topbanner']='../images/topbanner.gif';
header('Content-type: image/jpeg');
print file_get_contents($billeder[$_REQUEST['vis']]);
?>

(Det er ihvertfald principet i det , har ikke testet koden men det burde virke, tager forbeholde for smuttede paranteser, dollartegn mv.)

Principet er saa at du kalder <img src='./billede.php?vis=topbanner'>, dette vil saa kun virke hvis personen ikke er bannet. Samtidig med kan du eventuelt lave et check paa HTTP_REFER hvis du er traet af at folk linker til dine billeder (spare trafik mv.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester