Einmal Link

Anwendungen für Webseiten. Künstliche Intelligenz verwenden.
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Einmal Link

Ungelesener Beitrag von Volker »

Ihr sehr ich bin sehr fleißig wie ihr seht :D

Meine Idee: Einen Link zu senden , per mail z.B. der nur einmal verwendbar ist. Quasi ein Einmal Link.
Z.B. wenn ich ein Script verkaufe und der Empfänger es runter laden soll, aber eben nicht so oft er will oder den Link weitergeben usw.

Mein Ansatz: Ein PHP Script was einen token an die Datei hängt und über ein downloadscript runter ladbar ist.
token.png
Hier mal ein Test: https://www.niederastroth.de/token/down ... 60e70c4939

Das ist das Bild was hier zu sehen ist. Es kann nur einmal runter geladen werden. wer danach auf den Link klickt bekommt eine Fehlermeldung :-)

Ich glaube das kann man brauchen :D oder?

Ja da hat es schon jemand runter geladen ..sehe ich in meinem Dashboard:
token2.png
https://www.niederastroth.de/token/down ... 7fc80aa841

https://www.niederastroth.de/token/down ... df24000030

https://www.niederastroth.de/token/down ... 4b0367ca04
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7758
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Einmal Link

Ungelesener Beitrag von Tommy Herrmann »

Moin,

ich müsste darüber nachdenken. Es könnte nützlich sein, ist aber wahrscheinlich eher lästig. Schnell hat man etwas verlegt oder versehentlich gelöscht. Besonders wenn man für etwas bezahlt hat, sollte man weiterhin Zugang zum Download haben.

Meiner Meinung nach gehören solche Downloads in ein geschütztes Verzeichnis, auf das nur der berechtigte Nutzer Zugriff hat.

Am Ende des Tages muss man ein Script nicht erneut herunterladen, um es unerlaubt und gesetzeswidrig an Dritte weiterzugeben; stattdessen reicht es, das eigene Script einfach zu kopieren. Aus diesem Grund verkaufen die meisten Softwarefirmen, darunter auch Mobirise, ihre Scripts nicht mehr direkt, sondern kontrollieren die Nutzung über eine gültige Lizenz.
Benutzeravatar
zen2cool
Mitglied (Level 6)
Mitglied (Level 6)
Beiträge: 55
Registriert: Do 24. Dez 2020, 14:01
Wohnort: Belgium
Kontaktdaten:

Re: Einmal Link

Ungelesener Beitrag von zen2cool »

Hallo

Ich habe einen ähnlichen Code, der aber lediglich eine IPN-Rückmeldung von PayPal in einer Datenbank speichert und zeitlich begrenzten Zugriff auf ein Verzeichnis gewährt.

https://forums.mobirise.com/discussion/ ... ent_122108

Code: Alles auswählen

<?php
// Ce script reçoit les notifications IPN de PayPal
// et met à jour la base de données si le paiement est validé

require_once "config.php";

// Lire les données brutes de PayPal
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
  $keyval = explode('=', $keyval);
  if (count($keyval) == 2) {
    $myPost[$keyval[0]] = urldecode($keyval[1]);
  }
}

// Ajouter 'cmd=_notify-validate'
$req = 'cmd=_notify-validate';
foreach ($myPost as $key => $value) {
  $value = urlencode($value);
  $req .= "&$key=$value";
}

// Poster la requête de validation à PayPal
$ch = curl_init('https://ipnpb.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . '/cert/cacert.pem');
$res = curl_exec($ch);
curl_close($ch);

if (strcmp($res, "VERIFIED") == 0) {
    // Paiement validé par PayPal
    $payer_email = $_POST['payer_email'];
    $custom = $_POST['custom']; // Contient l'id de l'utilisateur
    $payment_status = $_POST['payment_status'];

    if ($payment_status === 'Completed') {
        $stmt = $conn->prepare("UPDATE pdfsecure SET has_paid = 1 WHERE id = ?");
        $stmt->bind_param("i", $custom);
        $stmt->execute();
    }
} else {
    // Erreur ou tentative frauduleuse
    file_put_contents("ipn_error.log", date("Y-m-d H:i:s") . " : Échec IPN
", FILE_APPEND);
}
?>

Code: Alles auswählen

<?php
session_start();
require_once "config.php";

if (!isset($_SESSION["user_id"])) {
    die("Accès refusé.");
}

$id = $_SESSION["user_id"];
$stmt = $conn->prepare("SELECT has_paid, date_achat FROM pdfsecure WHERE id = ?");
$stmt->bind_param("i", $_SESSION["user_id"]);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();

if (!$user["has_paid"]) {
    die("Vous n'avez pas accès au téléchargement.");
}

// Calcul expiration
$date_achat = strtotime($user["date_achat"]);
$now = time();
$diff = $now - $date_achat;

if ($diff > DOWNLOAD_VALIDITY_DURATION) {
    // Optionnel : désactive l'accès
    $stmt = $conn->prepare("UPDATE pdfsecure SET has_paid = 0 WHERE id = ?");
    $stmt->bind_param("i", $_SESSION["user_id"]);
    $stmt->execute();

   $date_expiration = date("d/m/Y H:i", strtotime($user["date_achat"]) + DOWNLOAD_VALIDITY_DURATION);
die("Your link expired on $date_expiration. Contact support");
}


$allowed_files = ['ebook.pdf', 'ebook2023.pdf', 'ebook2024.pdf'];
$file = basename($_GET['file']);

if (!in_array($file, $allowed_files)) {
    die("Unauthorized file.");
}

$path = __DIR__ . '/fichiers/' . $file;

if (!file_exists($path)) {
    die("File not found.");
}

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile($path);
exit;
Dies ist ein Add-on, das ich gerade für mein Admin-Panel (digitaler Einkauf) fertigstelle.
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
Benutzeravatar
zen2cool
Mitglied (Level 6)
Mitglied (Level 6)
Beiträge: 55
Registriert: Do 24. Dez 2020, 14:01
Wohnort: Belgium
Kontaktdaten:

Re: Einmal Link

Ungelesener Beitrag von zen2cool »

Schauen Sie sich hier den digitalen Shop an, ich bin gerade dabei, ihn fertigzustellen. Sie werden ein Beispiel für einen Shop und auch den Verwaltungsteil haben

https://www.unsitepourtous.be/mobi/Addo ... npanel.php
Visit my website !
zen2cool pack V2.1 updated 09/01/2021
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste