• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Verzeichnisschutz per Captcha

Hmm, dann musst du absolut verlinken oder überall ein "aktuell2_140581" davorsetzen. Allerdings gibt es da ein Problem, denn bei jedem Aufruf kommt die Captchaprüfung, d.h. du kannst logo.jpg usw. nicht verwenden. Wenn du das allerdings trotzdem machen möchtest, musst du deinen gesamten Code umwerfen...
 
... d.h. du kannst logo.jpg usw. nicht verwenden. Wenn du das allerdings trotzdem machen möchtest, musst du deinen gesamten Code umwerfen...

Na super, dann sind wir wieder gaaaaaanz am Anfang :-(

Also von vorn: Wie kann ich ein Verzeichnis per Captcha schützen?

Und denkt bei Euren Lösungsvorschlägen (falls es denn welche gibt) doch bitte daran, daß ich von PHP wirklich gar keine Ahnung habe. Ich brauche also im Prinzip eine gut beschriebene Lösung und nicht nur Hinweise auf irgendwelche Befehle, mit denen es gehen könnte (wenn man sie denn richtig einzusetzen weiß).

Danke im Voraus für alles, was zum Ziel führt!
 
weiterer Vorschlag:
Du erstellst folgende Verzeichnisstruktur:
/dateien/geheim/.htaccess
/dateien/geheim/geschuetzte_datei.jpg
/dateien/index.php
/dateien/ausgabe.php
/dateien/captcha.php
/dateien/ueberpruefen.php
/.htaccess

wenn du auf eine geschützte dazei zugreifen willst, so verlinkst du auf /files/geschuetzte_datei.jpg
dabei sollte das verzeichnis /files/ NICHT vorhanden sein.
/.htaccess:
Code:
RewriteEngine On
RewriteRule files/(.*) dateien/index.php?name=$1&keinschummler=true
/dateien/geheim/.htaccess:
Code:
bliblablubhierstdhtirgendwasdamiteseinengrossenfehlergibtwenndateien/geheimaufgerufenwirdaberbeizugriffueberphpwirddiesedateinichtbeachtet

/dateien/index.php
PHP:
<?php
session_start();
$ks=false;
if(
    (isset($_SESSION["filename"])&&
    (isset($_GET["keinschummler"]))&&
    ($_GET["keinschummler"]==true))
  ){
    $ks=true;
    include("ueberpruefen.php");
    if($_SESSION["mensch"]==true){
        include("ausgabe.php");
    }
}
else{
    include("captcha.php")
}

/dateien/captcha.php:
PHP:
<?php
session_start();
if(!isset($ks)){
die "So geht das nicht! Da sollten sie nicht so viel mit der URL spielen!";
exit;
}
if(str_replace("./", "DIESMACHTKEINSINN", $_GET["name"])!=$_GET["name"]){
die "Hehehe, du willst doch nicht etwa das Verzeichnis verlassen, oder?";
exit;
}
if(!file_exists("geheim/"+$_GET["name"]){
die "Die Datei existiert nicht. Bitte, WENN DU NICHT AN DER URL GESPIELT HAST, den Administrator informieren!";
exit;
}
else{
$_SESSION["filename"]=$_GET["name"];
}
?>
<html>
<head>
<title>Bist du ein Mensch?</title>
</head>
<body>
<form action="/files/" method="post">

<?php*echo*file_get_contents("http://www.kostenloses-captcha.de/image.php?ref=".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."&rem=".$_SERVER['REMOTE_ADDR']."");*?>

<input type="submit" value="weiter">
</form>
</body>
</html>

/dateien/ueberpruefen.php:
PHP:
<?php
session_start();
if(!isset($ks)){
die "So geht das nicht! Da sollten sie nicht so viel mit der URL spielen!";
exit;
}
$_SESSION["mensch"]=$ngcvalidation*=*file_get_contents(str_replace("*",*"",*"http://www.kostenloses-captcha.de/validation.php?ngid=".$_POST['ngidtransfer']."&secr=".$_POST['SecR']."&secb=".$_POST['SecB']."&secg=".$_POST['SecG'].""));
header("Location: http://$_SERVER["SERVER_NAME"]/files/");
?>
<a href="/files/" onclick="document.reload();">Bitte hier klicken!</a>

/dateien/ausgabe.php:
PHP:
<?php
session_start();
if(!isset($ks)){
die "So geht das nicht! Da sollten sie nicht so viel mit der URL spielen!";
exit;
}
echo file_get_contents("geheim/"+$_SESSION["filename")];
?>

So, hier ist alles. Bitte durchtesten und eventuelle Fehlermeldungen hier posten. Es werden Cookies benötigt.

Verwendet habe ich den Captcha-Dienst von Kostenloses Captcha (free captcha) zur Abwehr von Bots und Spam

Gruß
Janm
 
Zurück
Oben