ilch Forum » Ilch Clan 1.1 » Allgemein » Downloads

Geschlossen
  1. #1
    User Pic
    MadMetzi Mitglied
    Registriert seit
    26.09.2005
    Beiträge
    175
    Beitragswertungen
    1 Beitragspunkte
    Wenn man in den Downloadbereich geht und dort was runter laden möchte dann steht ja in der Adressleiste z.b. sowas hier 78.46.75.69/deadly/index.php?downloads-show-352. Wenn man dann auf den Downloadbutton klickt macht sich beim Firefox ja die kleine Box auf wo man speichern soll. Klickt man auf Speichern dann läuft der Download aber wenn man dann auf Downloadlink kopieren klickt und diesen einfügt hat man ja den wahren Pfad.
    78.46.75.69/deadly/include/downs/downloads/Custommaps.7z

    Kann man das nicht irgendwie verhindern? z.B. das man auch dort nur 78.46.75.69/deadly/index.php?downloads-show-352
    angezeigt bekommt? Also den wahren Pfad nie hinaus bekommt.

    Weil beim wahren Pfad ist es ja relativ einfach den DL auf einer anderen Page anzugeben.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
        case 'down' :
            $fid = intval($menu->get(2));
            $qry = db_query("SELECT d.url, IFNULL(c.`recht`,0) AS recht FROM `prefix_downloads` d LEFT JOIN `prefix_downcats` c ON c.`id` = d.`cat` WHERE d.`id` = $fid");
        	$row = db_fetch_assoc($qry);
    		$url = 'http://' . $_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . '/index.php?downloads';
    		if ($qry !== false and has_right($row['recht'])) {
    			db_query("UPDATE prefix_downloads SET downs = downs +1 WHERE id = " . $fid);
        		if (file_exists($row['url'])) {
    				header('Content-type: application/octet-stream');
    				header('Content-Disposition: attachment; filename="' . basename($row['url']) . '"');
    				readfile($row['url']);
        			exit;
    			} else {
    				$url = iurlencode($row['url']);
    			}
        		$error = false;
    		}
            header('Location: ' . $url);
            break;


    Hier mal der Codeausschnitt aus der contents/downloads.php (Zeile 271+), (bis case 'upload' ersetzen).
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    MadMetzi Mitglied
    Registriert seit
    26.09.2005
    Beiträge
    175
    Beitragswertungen
    1 Beitragspunkte
    Tja das klappt schon aber wenn man den Link einfügt kann man trotzdem downloaden.
    Sprich , vorher sah der DL so aus 78.46.75.69/deadly/include/downs/downloads/cod4_tchernobylf.zip und jetzt so 78.46.75.69/deadly/index.php?downloads-show-297
    aber bei beiden kann man den Link direkt so verwenden. Vor der Änderung kam man bei 78.46.75.69/deadly/index.php?downloads-show-297 wieder auf die Page und jetzt nicht, jetzt lädt er direkt.

    Vielleicht habe ich mich falsch ausgedrückt , der User soll nur so einen Link angezeigt bekommen 78.46.75.69/deadly/index.php?downloads-show-297 und wenn er diesen Link in einem Fenster einfügt oder als Link auf seiner HP soll man wieder auf der Ursprungseite landen.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ich weiß nicht ganz ob ich es richtig verstanden hab, aber wie wäre es mit.

        case 'show' :
    
            $fid = escape($menu->get(2), 'integer');
            $erg = db_query("SELECT prefix_downloads.cat,ssurl,surl,url,hits,vote_klicks,vote_wertung,prefix_downloads.name,version,creater,downs,descl,prefix_downloads.id,DATE_FORMAT(time,'%d.%m.%Y') as datum FROM prefix_downloads LEFT JOIN prefix_downcats ON prefix_downcats.id = prefix_downloads.cat WHERE prefix_downloads.id = " . $fid . " AND (" . $_SESSION['authright'] . " <= prefix_downcats.recht OR (prefix_downloads.cat = 0 AND prefix_downcats.recht IS NULL))");
            if (@db_num_rows($erg) != 1) {
                $title = $allgAr['title'] . ' :: Downloads ';
                $hmenu = '<a class="smalfont" href="?downloads">Downloads</a>';
                $design = new design ($title , $hmenu);
                $design->header();
                echo 'Der Download wurde nicht gefunden';
                $design->footer(1);
            }
    
            $row = db_fetch_assoc($erg);
            // umfrage einen hoch zaehlen ...
            if ($menu->getA(3) == 'z' AND is_numeric($menu->getE(3)) AND !isset ($_SESSION['downDoVote'][$row['id']]) AND loggedin()) {
                $_SESSION['downDoVote'][$row['id']] = 'o';
                $row['vote_wertung'] = round ((($row['vote_wertung'] * $row['vote_klicks']) + $menu->getE(3)) / ($row['vote_klicks'] + 1) , 3);
                $row['vote_klicks']++;
                db_query("UPDATE prefix_downloads SET vote_wertung = " . $row['vote_wertung'] . ", vote_klicks = " . $row['vote_klicks'] . " WHERE id = " . $row['id']);
            }
            if (!isset ($_SESSION['downDoKlick'][$row['id']])) {
                $_SESSION['downDoKlick'][$row['id']] = 'o';
                db_query("UPDATE prefix_downloads SET hits = hits +1 WHERE id = " . $fid);
            }
    		//Download erlauben
        	$_SESSION['download'][$fid] = true;
            $cid = $row['cat'];
            $erg1 = db_query("SELECT id,cat,name FROM prefix_downcats WHERE id = " . $cid);
            if (db_num_rows($erg1) > 0) {
                $row1 = db_fetch_assoc($erg1);
                $array = get_cats_array($row1['cat'], '');
                if (!empty($array)) {
                    $titelzw = get_cats_title($array);
                    $namezw = get_cats_urls($array);
                } else {
                    $titelzw = '';
                    $namezw = '';
                }
                $cattitle = ':: ' . $titelzw . $row1['name'] . ' :: ' . $row['name'] . ' ' . $row['version'];
                $catname = '<b> &raquo; </b>' . $namezw . '<a class="smalfont" href="?downloads-' . $row1['id'] . '">' . $row1['name'] . '</a><b> &raquo; </b>' . $row['name'] . ' ' . $row['version'];
            } else {
                $cattitle = '';
                $catname = '';
            }
            $tpl = new tpl ('downloads_show');
            $row['ssurl'] = ($row['ssurl'] != '' ? '<img src="' . $row['ssurl'] . '" alt="' . $row['name'] . ' ' . $row['version'] . '" title="' . $row['name'] . ' ' . $row['version'] . '" style="float:left; border: none; padding-right:5px;" />' : '');
            $row['surl'] = (empty($row['surl']) ? '' : '&nbsp;&nbsp;&nbsp; <a href="' . $row['surl'] . '" target="_blank">Demo/Screenshot</a>');
            $row['size'] = get_download_size($row['url']);
            $row['descl'] = bbcode($row['descl']);
            $row['version_kl'] = (empty($row['version'])?'':'(' . $row['version'] . ')');
            $title = $allgAr['title'] . ' :: Downloads ' . $cattitle;
            $hmenu = '<a class="smalfont" href="?downloads">Downloads</a>' . $catname;
            $design = new design ($title , $hmenu);
            $design->header();
            $tpl->set_ar_out($row, 0);
            $design->footer();
            break;
        case 'down' :
            $fid = intval($menu->get(2));
            if (!isset($_SESSION['download'][$fid])) {
            	header('Location: ' . 'http://' . $_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . '/index.php?downloads');
            	break;
            }
    		$qry = db_query("SELECT d.url, IFNULL(c.`recht`,0) AS recht FROM `prefix_downloads` d LEFT JOIN `prefix_downcats` c ON c.`id` = d.`cat` WHERE d.`id` = $fid");
        	$row = db_fetch_assoc($qry);
    		$url = 'http://' . $_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . '/index.php?downloads';
    		if ($qry !== false and has_right($row['recht'])) {
    			db_query("UPDATE prefix_downloads SET downs = downs +1 WHERE id = " . $fid);
        		if (file_exists($row['url'])) {
    				header('Content-type: application/octet-stream');
    				header('Content-Disposition: attachment; filename="' . basename($row['url']) . '"');
    				readfile($row['url']);
        			exit;
    			} else {
    				$url = iurlencode($row['url']);
    			}
        		$error = false;
    		}
            header('Location: ' . $url);
            break;
        case 'upload' :
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Vips Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    238
    Beitragswertungen
    0 Beitragspunkte
    mit deinem download script bringt das nichts weil die direkte download url im quellcode steht


    Zuletzt modifiziert von Vips am 10.06.2009 - 19:43:52
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Nö?
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Vips Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    238
    Beitragswertungen
    0 Beitragspunkte
    ein auszug aus dem quellcode der download show
    <form action="index.php?downloads-down-352" name="sform" method="post" onsubmit="return checkCheckBox(this)">
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    MadMetzi Mitglied
    Registriert seit
    26.09.2005
    Beiträge
    175
    Beitragswertungen
    1 Beitragspunkte
    Mairu
    Es geht immer noch nicht traurig
    Immer wenn man den Link außerhalb der Page aufruft dann kann man immer noch downloaden.
    78.46.75.69/deadly/index.php?downloads-down-297
    der soll dann wieder auf die Page springen im DL Bereich und nicht downloaden.
    Klar das ist so ne Art Schutz vor Hotlinking und es gibt ne htacces Option aber die klappt nicht so richtig obwohl ich alles installiert habe , von wegen mod rewrite etc.pp.
    Es geht aber mittels php wie beim phpbb zu sehen ist.

    Ohne Unverschämt zu werden aber ne Captcha abfrage im DL bereich wäre auch nicht schlecht. zwinker

    Beim phpbb gibt es diese Funktion standardmässig.
    Dort gibt er als DL Link nur openwarfaremod.com/owforum/downloads.php?view=load&df_id=221&modcp=0&cat_id=3
    das hier aus (als Beispiel) und man landet wieder im Downloadbereich der Page.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Naja wenn man ihn vorher auf der Seite angeklickt hat soll das auch gehen, versuchs einfach mal den Downloadlink in einem anderen Browser aufzurufen, mit dem du die Seite vorher nicht besucht hast.

    Also geplant hatte ich es so, dass wenn man die Downloadbeschreibung aufruft, den Download sozusagen für die Session (ca 30 - 60min, nach leztem refresh) freischaltet und ansonsten auf die Downloadhauptseite geleitet wird.

    Edit: bei dir ist das nicht der Fall, aber bei mir funktioniert es, du hast also den Code nicht richtig eingefügt oder so


    Zuletzt modifiziert von Mairu am 12.06.2009 - 19:07:42
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    MadMetzi Mitglied
    Registriert seit
    26.09.2005
    Beiträge
    175
    Beitragswertungen
    1 Beitragspunkte
    Sorry mein Fehler. Es geht , Vielen lieben Dank.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    MadMetzi Mitglied
    Registriert seit
    26.09.2005
    Beiträge
    175
    Beitragswertungen
    1 Beitragspunkte
    Noch was , könnte jemand mir ne Captcha Abfrage da noch mit einbauen?
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Vips Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    238
    Beitragswertungen
    0 Beitragspunkte
    nehm doch die aus der shoutbox


    Zuletzt modifiziert von Vips am 14.06.2009 - 14:46:50
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    MadMetzi Mitglied
    Registriert seit
    26.09.2005
    Beiträge
    175
    Beitragswertungen
    1 Beitragspunkte
    Ich könnte auch ne andere nehmen nur hab ich keinen Schimmer wie man sowas einbaut.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten