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

  • 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

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • 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


  • 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.

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

    Zeig doch mal deinen Core

    Mit offenen Augen träumen

  • 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.

  • 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';
    ...

  • 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

    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.


  • $domain=$_POST['domain'];

    aus Sicherheitsgründen solltest du keinen Daten trauen
    http://home.mengelke.de/html-php-mysql…-variablen.html



    $fDb=fopen("adminDBcon.php","w+");

    gib einen aboluten pfad auf dem system an


    PHP
    $fp = fopen("/usr/home/adminDBcon.php","w+");


    fwrite($fDb,"<?php \n");
    fwrite($fDb,"$dba$dbd");

    schreib deine Änderungen in einen String

    PHP
    $sStr = '';
    $sStr .= 'id | Model | Name | tax_class_id | Status |  Price ' .  "\n";
    
    
    
    
    fputs($fp, $sStr);
    fclose($fp);


    hoffe die Antwort hilft dir weiter

    ralf

    Mit offenen Augen träumen

  • 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ß


  • 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.


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

    zum Beispiel

    PHP
    defined('ABSPATH') OR exit;

    Im Script verwende einen üblichen Weg. Schreibe die Pfade in eine Konstante

    PHP
    define('MYPLUGIN', __FILE__);
    define('MYPLUGIN_BASE', plugin_basename(__FILE__));
    define('MYPLUGIN_INCLUDE_DIR', WP_CONTENT_DIR. '/myplugin');

    Du kannst dir ma ansehen, was in den Konstanten steht auch in WP_CONTENT_DIR und ABSPATH

    Hoffe, dies hilft weiter


    ralf

    Mit offenen Augen träumen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!