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

funktion in einem Plugin die eine andere php Datei erstellt/überschreibt

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von cano21, 10. Juni 2014.

  1. cano21

    cano21 Member

    Registriert seit:
    10. Juni 2014
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo Freunde der Sonne,

    ich habe mal eine Frage, schreibe gerade ein Plugin für meine BA Arbeit.

    Habe eine Adminpage für das Plugin geschrieben, sodass Benutzerdaten über ein Formular eingegeben werden können.

    Je nach dem, was die Benutzerdaten sind, soll eine andere Datei neu erzeugt/überschrieben werden. Dazu habe ich die php Funktion fopen() und fwrite benutz.

    Die automatisch erzeugte Datei wird dann in eine andere Datei integriert, um eine Verbindung mit der Datenbank zu erstellen.

    außerhalb von Wordpress habe ich das ganze getestet und es funktioniert einwandfrei.

    Aber wenn ich den Code nun in diese Adminpage also innerhalb von Wordpress integriere, dann erzeugt/ bearbeitet er die neue Datei nicht.

    Das witzige an der ganzen Sache: ich lasse dann die Änderungen unten auf der Adminpage anzeigen, die neuen Eingabewerte übernimmt er auch, aber die werden nicht in Datei geschrieben :?:

    Um die Frage präzise zu stellen:
    wie kann man in Wordpress eine Funktion schreiben die den Inhalt einer Datei änder/überschreibt.


    Jemand eine Idee?

    Danke im voraus
     
  2. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    Hallo

    Vielleicht hängt es ja mit dem chmod zusammen?
    Gegenfrage: ist es wirklich nötig direkt in die PHP Dateien einzugreifen - kannst du das nicht mit Variablen lösen?

    LG, pixselig
     
  3. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.348
    Zustimmungen:
    587
    Zeig doch mal deinen Core
     
  4. cano21

    cano21 Member

    Registriert seit:
    10. Juni 2014
    Beiträge:
    6
    Zustimmungen:
    0
    danke für die Antwort. Ja das ist eine gute Gegenfrage, aber ich füge die erzeugte deitei mit require("nameDerDatei.php"); hinzu. Und die Verbindung soll dauerhaft bestehen bleiben. denn in der erzeugten datei speichere ich auch die eingegebenen werte als variablen ein.
     
  5. cano21

    cano21 Member

    Registriert seit:
    10. Juni 2014
    Beiträge:
    6
    Zustimmungen:
    0
    kleines bsp: (nicht die vollständige Datei)

    //getting the Domain
    if(empty($_POST['domain'])&& $_POST!==0){
    $domain="localhost";
    }else{
    $domain=$_POST['domain'];
    }


    // only the Dollar variable for saving the variable
    $dba='$';

    //string for saving the Domain
    $dbd="domain='$domain'; \n";


    //$pathOfDb="plugins_url( 'ergebnis.php', __FILE__ )";
    $fDb=fopen("adminDBcon.php","w+");
    if(!$fDb){
    die ("Öffnen von adminDBcon.php ist gescheitert");
    }
    //den mysql korrect auszuführen
    fwrite($fDb,"<?php \n");
    fwrite($fDb,"$dba$dbd");
    ...

    ergebnis.php sieht dann so aus, welches automatisch generiert wird.

    <?php
    $domain='testdomain';
    ...
     
  6. cano21

    cano21 Member

    Registriert seit:
    10. Juni 2014
    Beiträge:
    6
    Zustimmungen:
    0
    das mit dem chmod sagt mir leider noch nichts. Ich muss das wohl googlen.
     
  7. cano21

    cano21 Member

    Registriert seit:
    10. Juni 2014
    Beiträge:
    6
    Zustimmungen:
    0
    danke für die Antwort. Ja das ist eine gute Gegenfrage, aber ich füge die erzeugte deitei mit require("nameDerDatei.php"); hinzu. Und die Verbindung soll dauerhaft bestehen bleiben. denn in der erzeugten datei speichere ich auch die eingegebenen werte als variablen ein.

    das mit dem chmod sagt mir leider noch nichts. Ich muss das wohl googlen.
     
  8. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.348
    Zustimmungen:
    587
    aus Sicherheitsgründen solltest du keinen Daten trauen
    http://home.mengelke.de/html-php-mysql/php-faq/dclp-faq/q/q-security-variablen.html



    gib einen aboluten pfad auf dem system an


    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    schreib deine Änderungen in einen String

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!

    hoffe die Antwort hilft dir weiter

    ralf
     
  9. cano21

    cano21 Member

    Registriert seit:
    10. Juni 2014
    Beiträge:
    6
    Zustimmungen:
    0
    Danke, das hat mir sehr geholfen :)
    Hab jetzt davon einiges ausprobiert und das Problem gefunden:

    wenn ich den relativen Pfad nehme: also wo meine optionpage und die adminDBcon.php sind kann er die zwar öffnen, aber er schreibt warum auch immer nichts rein.

    Ich habs jetzt den absoluten Pfad angegeben:
    "C:/xampp1/htdocs/wordpress/wp-content/plugins/MyPlugin/adminDBcon.php"

    und es funktioniert.

    da das ein Plugin wird, kann man ich nur die Datenstruktur bei den Benutzern ab MyPlugin wissen. Gibts da vill noch eine andere Möglichkeit das zu lösen mit dem Pfad?
    mein Plugin und die Datei sind in dem gleichen Ordner.

    Gruß
     
  10. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.348
    Zustimmungen:
    587

    Damit dein Script nicht ausserhalb von Wordpress aufgerufen werden kann - verwende eine Prüfung.

    zum Beispiel

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Im Script verwende einen üblichen Weg. Schreibe die Pfade in eine Konstante
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Du kannst dir ma ansehen, was in den Konstanten steht auch in WP_CONTENT_DIR und ABSPATH

    Hoffe, dies hilft weiter


    ralf
     
  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