Downloadlinks unendlich lange gültig

Hallo,

ich habe leider bei Download-Verkäufen das Problem, dass die erzeugten Downloadlinks entgegen der Angaben in den Stammeinstellungen unendlich lange gültig zu sein scheinen. Die eingesetzte Shopversion ist CE 4.8.5.

Im Kundenkonto eines registrierten Kunden scheint alles normal auszusehen: Nach der in den Stammdaten festgelegten Anzahl der Downloads oder dem Zeitablauf erscheint die Meldung “Downloadlink abgelaufen oder maximale Anzahl der Downloads erreicht.”

Die per eMail zugestellten Downloadlinks scheinen jedoch unendlich lange und beliebig oft nutzbar zu sein. Entgegen den Einstellungen in den Stammdaten (nur 1 Download erlaubt, 1 Stunde Gültigkeit) lässt sich die Datei durch den E-Mail Link auch nach Tagen noch herunterladen und auch der Zugriff von verschiedenen Rechnern aus war kein Problem.

Das Problem mit der beliebig häufigen Nutzbarkeit des Downloadlinks scheint beim hier gezeigten Demoshop ebenso aufzutreten. Die Nutzbarkeit außerhalb des Download konnte ich dort nicht Testen, da der Shop vor Zeitablauf wieder zurückgesetzt wurde.

Gibt es etwas, was man dagegen unternehmen kann?

Hallo @ais,

ja. Wenn dieses ungewünschte und undokumentierte Verhalten auch im Demoshop auftritt, kannst Du einen Bugeintrag erstellen. Du weisst, wie das geht?

Gruß

Ich kann es gerne eintragen.
Ich wollte mich mit dem Post hier im Forum nur einmal schlau machen, ob ich nicht vielleicht etwas vergessen haben könnte, da ich mich erst seit kurzer Zeit mit Oxid beschäftige und bei Schwierigkeiten sich das Problem auch gerne mal vor dem Bildschirm befindet.

In den Einstellungen und in der Dokumentation habe ich jedoch keine anderen Hinweise finden können.

Hi ais,

habe das mal getestet und kann das Problem bestätigen (CE 4.8.5) . Kannst es also in den Bugtracker eintragen.

Ich hab jetzt mal auf die Schnelle und ohne großartig über die ganze Sache nachzudenken, folgendes in der Datei \application\controllers\download.php Zeile 47 bis 76, geändert:


    public function render()
    {
        $sFileOrderId = oxRegistry::getConfig()->getRequestParameter('sorderfileid');

        if ( $sFileOrderId ) {
            $oArticleFile = oxNew('oxFile');
            try {
                $oOrderFile = oxNew('oxOrderFile');
                if ( $oOrderFile->load($sFileOrderId) ) {
                    $sFileId = $oOrderFile->getFileId();
                    if ( $sFileId && $oArticleFile->load($sFileId) && $oArticleFile->exist() && $oOrderFile->oxorderfiles__oxvaliduntil->value > date("Y.m.d")) {
                        $oOrderFile->processOrderFile();
                        $oArticleFile->download();
                    } else {
                        $sError = "ERROR_MESSAGE_FILE_DOESNOT_EXIST";
                    }
                }
            } catch (oxException $oEx) {
                $sError = "ERROR_MESSAGE_FILE_DOWNLOAD_FAILED";
            }
        } else {
            $sError = "ERROR_MESSAGE_WRONG_DOWNLOAD_LINK";
        }
        if ( $sError ) {
            $oEx = new oxExceptionToDisplay();
            $oEx->setMessage( $sError );
            oxRegistry::get("oxUtilsView")->addErrorToDisplay( $oEx, false );
            oxRegistry::getUtils()->redirect( oxRegistry::getConfig()->getShopUrl() . 'index.php?cl=account_downloads');
        }
    }

Neu ist einfach eine Abfrage, ob der Tag “Download gültig bis” größer als der aktuelle Tag ist.
Bei mir hilft das erstmal, teste es bitte einfach mal bei dir im Shop.
Wenn es funktioniert, machen wir noch schnell ein Modul daraus :slight_smile:

Hi,

habe das auch geprüft und kann den Fehler bestätigen (CE 4.8.5) . Kannst es also in den Bugtracker eintragen.

Ohne großartig über die ganze Sache nachzudenken, habe ich in der Datei \application\controllers\download.php Zeile 57 folgendermaßen geändert:


if ( $sFileId && $oArticleFile->load($sFileId) && $oArticleFile->exist() && $oOrderFile->oxorderfiles__oxvaliduntil->value >= date('Y-m-d H:i:s') ) {

Das behebt den Fehler bei mir offenbar, teste es bitte auch mal in deinem Shop.

Das scheint zu helfen.

Vielen Dank.