Ankündigung

Einklappen
Keine Ankündigung bisher.

Download abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Download abfrage

    Haltet mich für Blind oder auch nicht, ich habe jetzt 3 Tage lang, hier und woanders, gesucht und zwar einiges gefunden, aber nichts was mir weiterhilft.

    Ich bin mir auch nicht sicher ob meine hüüüüülfäääää Schrei jetzt hierhin oder zu MySql gehört!!!

    Kurze Beschreibung worum es eigentlich geht.

    Es geht darum, das ein Download für einen bestimmten Zeitraum bsp. 5 Tage freigegeben wird und dann nicht mehr.

    Die Eintragungen in der Datenbank sind, so weit, OK.
    Die Datumsangaben im Admin Bereich sind OK
    Die Datumsangaben in den eMails sind OK

    Klingt gut, ne.

    Wenn man jetzt allerdings den Downloadlink in der eMail anklickt kommt allerdings die Meldung das der Downloadlink NICHT aktiv ist.

    Obwohl auch in der Datenbank alle Eintragen sind die den Download ermöglichen sollen.

    Kann es vielleicht sein das es unter anderem daran liegt das mir in der Datenbank kein Datum sondern lediglich z.B.
    1182010481 - für das Startdatum
    &
    1182442616 - für das Enddatum
    angezeigt werden???
    Ich kann damit jedenfalls nichts anfangen.

    Die Daten werden in der DB mit INT 10 eingetragen.

    Ich füge mal den Code der Datei ein die den Download überwacht.
    Sprich die Download Datei anzeigt,
    oder eben die Meldung gibt das der Download nicht aktiev ist.

    Bitte denkt daran das wenn jemand Antworten sollte,
    das bitte so zu machen das auch ein Anfanger weis was gemeint ist bzw. was er machen soll.
    Danke
    ---
    PHP-Code:
    <?

    require_once("../conn.php");
    require_once("../includes.php");

    $k = $_GET["k"];

    $info = explode("|", $k);


    //check the exp date
    $q1 = "select ExpDate from dd_orders_info where OrderID = '$info[0]'";
    $result = mysql_query($q1);

    echo mysql_error();

    while ($res = mysql_fetch_row($result))

    {
        $exp = $res[0];
        $ItemID = $res[1];
    }

    if($exp < $t)
    {
        echo "


    <center><font face=verdana size=2 color=red>[b]Your download link is not active and
    you are not able to download this file!";

        exit();
    }



    //get the item
    $q1 = "select DownloadURL from dd_catalog where ItemID = '$info[1]' ";
    $r1 = mysql_query($q1);
    echo mysql_error();
    #or die(mysql_error());
    $a1 = mysql_fetch_array($r1);

    $q1 = "update dd_orders_content set download_status = 'y' where ItemID = '$info[1]' and OrderID = '$info[0]' ";
    mysql_query($q1);
    echo mysql_error();
    #or die(mysql_error());


    header("Location: $a1[0]");
    die();

    ?>


  • #2
    .... hüüüüülfäääää
    das habe ich mal entfernt, denn sicher hast du das in den Forenregeln nur überlesen, dass
    http://www.phpfriend.de/forum/forum1.html
    Selbsterniedrigende Formulierungen ("bin Vollnoob"), nichtssagende Betreff-Zeilen ("Hiiiiilfeee habe Problem") [..]
    nicht hilfreich sind.

    Dein Code wimmelt nur so vor don'ts.
    Woher kommt $t?
    Macht es Sinn, ein Ergebnis mittels Schleife abzuholen?
    Was soll $ItemID eigentlich zugewiesen werden, wenn du im SQL nur eine Spalte selektierst?
    Hast du schonmal von CSS gehört?
    Warum wechselst du zwischen mysql_fetch_row() und mysql_fetch_array()?
    Was sollen die nichtssagenden Variablen $t, $a1, $q1, $r1, $k?
    Warum nummerierst du sie durch, überschreibst sie dann aber später doch wieder?

    Alles in allem könnte man hier in fast jeder Zeile einen Mangel feststellen.
    Setz aber auf jeden Fall erstmal das Error-Reporting-Level mittels error_reporting(E_ALL); am Anfang des Skriptes ganz hoch und korrigier eventuelle Fehler.

    Zitat von mijoko
    Kann es vielleicht sein das es unter anderem daran liegt das mir in der Datenbank kein Datum sondern lediglich z.B.
    1182010481 - für das Startdatum
    &
    1182442616 - für das Enddatum
    angezeigt werden???
    Ich kann damit jedenfalls nichts anfangen.

    Die Daten werden in der DB mit INT 10 eingetragen.
    Das ist ein Unix-Zeitstempel (Timestamp), der die Sekunden seit dem 1.1.1970 angibt. Wie überall in der Mathematik musst du natürlich beim Rechnen auf das Format achten, sprich wenn du mit Unix-Timestamps rechnest, solltest du nicht noch ein "4. April 1998 16 Uhr 17" reinbraten. Das muss schon alles gleich sein.

    Trotz allem willkommen im Forum

    Kommentar


    • #3
      ich habe nicht alles durchgeschaut, aber nach menem Wissen soll in $ItemID gar nichts stehen, da du nur ein wert und zwar ExpDate selectierst.
      ausserdem verstehe ich nicht ganz warum du eine schleife machst?

      $hand=mysql_query("select ExpDate, X from dd_orders_info where OrderID = '$info[0]' and ExpDate>$t");
      if(mysql_num_rows($hand)<=1)
      die(deine fehlermeldung);

      .
      Slava
      http://bituniverse.com

      Kommentar


      • #4
        Zitat von Slava
        ich habe nicht alles durchgeschaut, aber nach menem Wissen soll in $ItemID gar nichts stehen, da du nur ein wert und zwar ExpDate selectierst.
        ausserdem verstehe ich nicht ganz warum du eine schleife machst?

        $hand=mysql_query("select ExpDate, X from dd_orders_info where OrderID = '$info[0]' and ExpDate>$t");
        if(mysql_num_rows($hand)<=1)
        die(deine fehlermeldung);

        .
        Ich sagte doch das ich ein "soll man ja nicht sagen" bin.

        Habe es jetzt mal auf diese art geändert:
        PHP-Code:
        <?
        error_reporting(E_ALL);
        require_once("../conn.php");
        require_once("../includes.php");

        $hand=mysql_query("select ExpDate, from dd_orders_info where OrderID = '$info[0]' and ExpDate>$t");
        if(mysql_num_rows($hand)<=1)
        echo mysql_error();

        {
            echo "


        <center><font face=verdana size=2 color=red>[b]Your download link is not active and
        you are not able to download this file!";

            exit();
        }



        //get the item
        $q1 = "select DownloadURL from dd_catalog where ItemID = '$info[1]' ";
        $r1 = mysql_query($q1);
        echo mysql_error();
        #or die(mysql_error());
        $a1 = mysql_fetch_array($r1);

        $q1 = "update dd_orders_content set download_status = 'y' where ItemID = '$info[1]' and OrderID = '$info[0]' ";
        mysql_query($q1);
        echo mysql_error();
        #or die(mysql_error());


        header("Location: $a1[0]");
        die();

        ?>
        und dann kommen diese Meldungen:

        Notice: Undefined variable: info in /var/www/web13/html/test/dl/index.php on line 6

        Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web13/html/test/dl/index.php on line 7

        You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from dd_orders_info where OrderID = '' and ExpDate>1182171043' a

        Your download link is not active and
        you are not able to download this file!


        Ich blicke da echt nicht durch.
        Denn wie gesagt, alles andere, einträge in die DB usw. funktioniert einwandfrei.

        Kommentar


        • #5
          select ExpDate, from
          Was soll das denn jetzt? Das ist doch kein gültiger SQL-Code.

          Mach es doch einfach so:
          PHP-Code:
          <?php
          $sql 
          sprintf('SELECT `download_path`, IF (NOW() BETWEEN `start_date` AND `end_date`, 1, 0) AS `downloadable` FROM `downloads` WHERE `download_id` = %u LIMIT 1', @$_GET['download_id']);
          $res mysql_query($sql) or die(mysql_error());
          if (
          mysql_num_rows($res) != 1) {
            
          // angeforderte download-id existiert nicht
            
          exit;
          }
          $dat mysql_fetch_assoc($res);
          if (
          $dat['downloadable'] == 0) {
            
          // ungültiger Zeitraum, Download nicht erlaubt
            
          exit;
          }
          if (!
          file_exists($dat['download_path'])) {
            
          // Datei existiert nicht, aussteigen
            
          exit;
          }
          $sql sprintf('UPDATE `downloads` SET `downloaded` = `downloaded` + 1 WHERE `download_id` = %u LIMIT 1', @$_GET['download_id']);
          $res mysql_query($sql) or die(mysql_error());
          // header
          readfile($dat['download_path']);
          ?>
          Such die Datei in der Datenbank, berechne gleich mit ob der Zeitraum gültig ist, analysiere das Ergebnis, erhöhe den Download-Counter um eins und schicke die Datei an den Browser zurück. Davor solltest du noch einige header() setzen, mehr dazu im Manual zu dieser Funktion.

          Wenn du einfach eine Weiterleitung auf die Datei machst (download_url), kann sich diese URL jeder merken und sie unterliegt damit keiner Beschränkung mehr.

          Kommentar

          Lädt...
          X