1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

$_POST prüfen bzw. wp_get_attachment_url aufrufen

Dieses Thema im Forum "Konfiguration" wurde erstellt von Variabel, 2. Mai 2013.

  1. Variabel

    Variabel Member

    Registriert seit:
    24. März 2009
    Beiträge:
    19
    Zustimmungen:
    0
    Servus Gemeinschaft!

    Zuerst die Beschreibung des Sachverhalts, dann meine bisherige Lösung (welche nicht recht funktionieren will und welche ich anpassen muss/will).

    Ich ermögliche einen Download von Bilddateien und biete sie wie folgt an:

    Ich habe Artikel mit Featured Image (welches zugleich das Downloadbild / die Datei ist). Mit einem Klick auf "Download" gelangt man auf die Anhangsseite der Datei - fein soweit. Auf der Anhangsseite habe ich einen weiteren Button "Download". Dieser Button erzwingt mir durch eine weitere Datei (download.php) den Download. Somit wird das Bild nicht im Browser angezeigt, sondern der Downloaddialog erzwungen.

    Der Button, welches den Download auslöst und zur download.php schaltet:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Es gibt nur eine einzige download.php. Ich kann nicht für jedes Bild eine extra download-xyz.php programmieren. Daher muss ich das zu downloadende Bild per $_POST übergeben. Das realisiere ich über ein hidden Input-Field, welches den Dateinamen als Wert inne hat. Das funktioniert auch. Jedoch sollte ich den Wert, welchen ich per $_POST übermittele, in der download.php prüfen, damit man nur Bilder runterladen kann und nicht etwa Systemdateien. Klar.

    Ok, die Überprüfung habe ich mir wie folgt gedacht: Ich bekomme ja den Dateinamen per $_POST ("datei") übermittelt. Nun wollte ich mir zusätzlich und zugleich die attachment_id der Datei übermitteln lassen ("aid"). Beides bekomme ich auch übermittelt. Damit könnte ich in der download.php den Pfad / den Dateinamen der Datei aufrufen. Somit habe ich zwei Variablen. Einmal den Wert der zu downloadenden Datei, weiter den Pfad bzw. den Dateinamen der existenten Datei. Da der zweite nur eine existente Datei (Attachment) sein kann, kann ich beide Werte miteinander vergleichen. SInd die Werte gleich, kann der Download ermöglicht werden. Sind beide werte nicht gleich, will mir jemand per Formularmanipulation eine andere Datei entwenden. Wenn ich mir Gedanken darüber mache, wäre das für die meisten simplen Manipulationen eine halbwegs sichere Lösung, da ja durch den zweiten Wert sichergestellt wird, das man nur ein Attachment downloaden kann.

    Der komplette Inhalt der download.php:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ok, alles klar soweit? Wie ich es beschrieben habe, so sollte es funzen. Tut es aber nicht. Wenn ich die Datei aufrufe, bekomme ich die Fehlermeldung:

    Fatal error: Call to undefined function wp_get_attachment_url() in /home/www/u15756/html_www.meinedomain.com/wp-content/uploads/download.php on line 4

    Das irritiert mich. Auch andere Varianten habe ich schon verwendet. Aber immer sagt er mir, er kenne die Funktion nicht... wie bekomme ich die Funktion zum laufen? Über Hilfestellung würde ich mich freuen, wie der Schneekönig im Puderschnee.

    Noch zwei Anmerkungen: Wenn ich die Überprüfung entferne, läuft der Script. Und nein, ich will kein Downloadmanager-Plugin verwenden - das macht die spätere Verwaltung nur zeitaufwändiger. Auch habe ich nur beschränkt Interesse, von der Entwicklungslust anderer abhängig zu sein.

    Wenn wer Fragen, Anregungen oder konstruktive Kritik hat, weil etwas unverständlich/unklar ist oder weitere Infos benötigt werden, stehe ich gerne zur Verfügung.

    Ich Grüße!
     
    #1 Variabel, 2. Mai 2013
    Zuletzt bearbeitet: 2. Mai 2013
  2. Variabel

    Variabel Member

    Registriert seit:
    24. März 2009
    Beiträge:
    19
    Zustimmungen:
    0
    Ok, habe die Gegebenheit gelöst, das die Funktion nicht erkannt wurde. Ich poste das, damit andere User davon Nutzen haben können. Aber schon vorab: es ist noch nicht fertig - ich bin nur einen Schritt weiter. Man kann also immernoch eine Lösung suchen. Was genau, schreibe ich gleich. Zuerst der Script, wie er nun wäre.

    Ich habe einfach die wp-load.php inkludiert. Mein Script nun:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ok, nun wird mir die nicht vorhandene Funktion nicht mehr bemängelt. Fein. Ihr seht die if-Abfrage? Diese soll ja, wie im ersten Post beschrieben, 2 Werte miteinander vergleichen. Das funzt noch nicht. Da muss ich mir noch die richtige Lösung hinfriemeln. Oder habt Ihr sie schon? Oder zumindest einen Vorschlag, eine Anregung? Irgendwie muss ich die beiden Werte miteinander vergleichen... ($datei und $aid) So wie es jetzt ist, bekomme ich aber ein false und somit nicht die Datei angeboten. Entferne ich die if-Abfrage oder sage "if not", bekomme ich die Datei...

    Grüße!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden