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

PHP-Skript auf WordPress-Seite einbinden

Dieses Thema im Forum "Allgemeines" wurde erstellt von h-u-g-o, 5. Februar 2009.

  1. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Guten Abend euch allen!

    Ich würde gerne auf einer WordPress-Seite ein PHP-Skript, das sich in einer separaten PHP-Datei befindet, einbinden. Ich habe es mit
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    versucht, aber leider funktioniert das nicht. Wisst ihr, wie das geht?

    Liebe Grüße
    Hugo
     
  2. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Im Inhaltseditor kannst du natürlich keinen PHP-Code einbinden. Wenn du das auf einer statischen Seite haben willst, dann nimm am besten ein Seitentemplate. Dort kannst du dann den include-Befehl ausführen. Je nachdem wo dein PHP-Script liegt solltest du den vollständigen Pfad angeben, z.B. relativ zum WP-Verzeichnis (Konstante ABSPATH).
     
  3. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hallo marX,

    vielen Dank für deine schnelle Antwort.

    Aber ich habe im Inhaltseditor doch extra von Visuell auf HTML gewechselt. Auf diese Weise kann man ja auch YouTube-Videos einbinden. Ich dachte, so müsste es gehen. :???:

    Wie muss ich denn vorgehen, wenn ich das Skript im Blog selbst nutzen möchte?

    Was bedeutet "Konstante ABSPATH"?

    Liebe Grüße
    Hugo
     
  4. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Youtube-Videos enthalten auch keinen Code, der in deinem Post (Artikel/Seiten) ausgeführt wird, sprich PHP. Selbst JavaScript in Posts geht nicht ohne weiteres. Deswegen heißt der Editor ja auch "HTML-Editor" und nicht "PHP-Entwicklungsumgebung". ;)

    Du könntest dir das Plugin Exec-PHP installieren, dann kannst du PHP-Code in Posts einbetten. Davon rate ich aber aus Sicherheitsgründen ab. Ich würde - wie ich schon sagte - statt dessen ein Seitentemplate verwenden. In der Doku, Forensuche, Forenlexikon wirst du da sicher was finden.

    Die ist ind er wp-config.php definiert und enthält den Serverpfad zum WP-Verzeichnis. Z.B.
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das ist nützlich um die Scripte immer korrekt zu referenzieren.
     
  5. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hehe, das sehe ich ein. :mrgreen:

    Was kann denn mit diesem Plugin im schlimmsten Fall passieren?

    So ein Seitentemplate habe ich mittlerweile erstellt. Auf diese Weise ist es mir auch gelungen das PHP-Skript einzubinden. Jetzt stehe ich allerdings vor folgendem Problem: Das PHP-Skript gibt lediglich einen String aus. Dieser String soll an einer bestimmten Stelle im Text der Seite stehen. Aber ich kann das Skript ja nur vor oder hinter
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    inkludieren. :?

    Ach so, vielen Dank! Kann ich denn nicht einfach relativ zu meinem Root-Verzeichnis referenzieren? Also sagen wir mal, das Seitentemplate liegt in /wordpress/wp-content/themes/mein_theme/ und das Skript im Root-Verzeichnis (/). Dann müsste ich doch eigentlich durch Eingabe von ../../../../skript.php korrekt referenzieren, oder?
     
  6. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Im schlimmsten Fall? Im schlimmsten Fall erschmuggelt sich ein Angreifer Schreibrechte (für Posts) auf deinem Blog und kann dann somit beliebigen PHP-Code in deine Artikel schmuggeln. oder er bekommt irgendwie Zugriff auf die wp_posts-Tabelle der DB und fügt dort in jeden Artikel Code ein. Durch Exec-PHP wird der dann ausgeführt. Nicht so gut, oder? ;)

    Wenn's mitten rein soll, dann würde ich einen Platzhalter in den Artikel schreiben und diesen Platzhalter dann mit einem Filter-Plugin ersetzen. Die Shortcode-API von WP ist da recht komfortabel, auch wenn das jetzt vielleicht etwas kompliziert klingt. Einfache Beispiele hier:
    Shortcode API WordPress Codex

    Darf ich eine Gegenfrage stellen und fragen was du genau bezweckst? Wie gesagt, bei ausführbaren Code in Artikeln frag ich mich immer, ob das wirklich nötig ist. ;)

    Klar. Aber ist das hier
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    wirklich "einfacher" als
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ? ;)
     
  7. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Wahrscheinlich nicht. Könnte damit das System dann vollständig kompromittiert werden?

    Klingt gar nicht mal sooo kompliziert; aber das alles nur, um einen kleinen String wo einzufügen, ist schon heftig. Das hatte ich mir einfacher vorgestellt.

    Klar darfst du. Es soll ein kleiner Timer im Text eingefügt werden.

    Ähm, eigentlich nicht. :mrgreen: Ich verstehe nur diesen Serverpfad (/var/www/html/wordpress/) nicht ganz. Per FTP habe ich doch zum Beispiel gar keinen Zugung zu /var/www/ und den darüberliegenden Ebenen.
     
  8. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Es kann auf jeden Fall eine kleine Lücke zu einem Scheunentor werden lassen. Es gibt hier viele user, die Exec-PHP gerne und oft einsetzen und empfehlen. Ich persönlich kann mich da nicht anschließen. Kann natürlich sein, dass ich da etwas paranoid bin. ;)


    Da dafür ist doch die Shortcode-API wie geschaffen: :mrgreen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    fügt einen einfachen Timer ein. Das zu programmieren dürfte kaum über die 5 Codex-Zeilen hinaus gehen wenn das eigentliche Script schon existiert. Das ist vielleicht 1x etwas Aufwand, dafür kannst du dann soviele Timer einbauen wie du möchtest. ;)

    Das ist ja auch richtig so. Für Scripte brauchst du aber häufig den vollständigen Pfad. Und dein Hoster sollte dir in seiner FAQ auch genau mitteilen, wie dieser lautet. Aus Migrationsgründen will man diesen aber häufig dynamisch halten, um z.B. bei einem Umzug nicht alle Scripte anpassen zu müssen. Daher legt z.B. WP die ABSPATH-Konstante an. Diese kannst du nutzen (musst du aber nicht ;)).
     
  9. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Das kenne ich. :mrgreen: Für meine Zwecke ist dieses Plugin aber vielleicht doch das richtige, mal schauen.

    Damit kann ich die Zeitdifferenz von einem festgelegten Datum bis zum aktuellen Datum im Format "1 Jahr, 2 Monate, 3 Wochen, 4 Tage, 5 Stunden, 6 Minuten und 7 Sekunden" ausgeben?

    Aha, dann ist diese Konstante ja wirklich gut, denn dynamisch ist (fast) immer besser als fix. :)

    Warum (vielen) Skripten allerdings der vollständige Pfad explizit "mitgegeben" werden muss, verstehe ich noch nicht.

    Deine Unterstützung ist übrigens wirklich erstklassig, vielen Dank dafür!
     
  10. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Das war nur ein Beispiel wie so ein Shortcode aussehen könnte. Die Logik dahinter muss natürlich programmiert werden. So zum Beispiel:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Also in dem Fall wird die variable $end bereitgestellt mit dem Endedatum und dann die Variable $return_val vom Script gefüllt und an den Post zurückgegeben. Ich weiß ja nicht wie dein Script intern aussieht, daher gehts grad nciht genauer. Aber vom Prinzip her etwa so.


    Jepp.

    Machts halt einfacher und übersichtlicher, als sich über zig Verzeichnisebenen zu hangeln. Und dynamisiert ists auch sehr flexibel.

    Bitte bitte. :)
     
  11. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Wow, vielen Dank für deine Mühe. Wenn in meinem Skript das Datum schon drinsteht, brauche ich diesen Shortcode aber gar nicht, oder?

    Ok, das stimmt. :D
     
  12. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Du kannst dann einfach den Parameter "end" weglassen, und die ganze Auswertung.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Je nachdem was das Script macht reicht u.U. sogar nur die include-Anweisung.
     
  13. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Um ehrlich zu sein, ich verstehe jetzt nicht, was dieser Shortcode eigentlich macht beziehungsweise wofür ich ihn benötige.

    Edit: Ist dieser Shortcode dafür da, ihn nach einmaliger Einrichtung schnell und flexibel einsetzen zu können, also in meinem Fall den Timer zu platzieren? Den Timer benötige ich eigentlich nur an einer einzigen Stelle.
     
    #13 h-u-g-o, 6. Februar 2009
    Zuletzt bearbeitet: 6. Februar 2009
  14. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Im Prinzip nur dein Include in einem Beitrag auszuführen, ohne gleich global PHP in Beitragen zu erlauben. Das sollte er eigentlich tun.
     
  15. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Ach so. Das klingt gut. :D
     
  16. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Unter Verwendung des Plugins Exec-PHP kann ich die Konstante ABSPATH aber nicht direkt im php-include-Teil benutzen, sondern muss hier den Serverpfad ausschreiben, oder?
     
  17. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Weiß ich ehrlich gesagt nicht. Wie gesagt, ich versuche den Einsatz solcher Plugins in der Regel zu meiden. ;)
     
  18. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Danke für deine schnelle Antwort. Steht die Konstante ABSPATH denn grundsätzlich ohne $-Zeichen?
     
  19. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Ja, weil es eine Konstante ist, keine Variable.
    PHP: Konstanten - Manual
    PHP: Variables - Manual
     
  20. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Vielen lieben Dank! :D Ich habe mich nur gefragt, woran der Interpreter merkt, dass es sich um eine Konstante handelt.
     
  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