Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: php: Bestimmte Textteile in einem File ersetzen

  1. #11
    Erfahrener Benutzer
    Registriert seit
    04.10.2010
    Beiträge
    123
    Downloads
    1
    Uploads
    0
    Von aussen sollte an die Datein eh keiner ran kommen können, da dies der Server abfängt und die Richtlinien von PHP unterbinden (in der Standard-Konfiguration).
    Probier das Script einfach mal aus und sage mir, ob es funktioniert, oder ob es vielleicht noch nachgebessert werden müsste!

  2. #12
    Erfahrener Benutzer
    Registriert seit
    29.09.2010
    Beiträge
    140
    Downloads
    4
    Uploads
    0
    Zitat Zitat von Freelancer Beitrag anzeigen
    einen CMOD Recht von 777 haben MUSS
    Das ist aber ein Graus für jeden Admin. Wer das macht, braucht sich später nicht zu wundern, wenn's mal böse rappelt. Um PHP Dateien zu öffnen wieder zu speichern, benötige ich kein Ausführungsrecht. Ein rw reicht, das wäre eine 6, und nicht rwx was 7 widerspiegelt.
    Suchen und ersetzen gehen auf unixoiden(Linux,Mac,BSD,Unixderivate etc.) Systemen mit find, awk, grep, sed, cut, uniq, sort, xargs, head, tail etc. in Verbindung mit Regex recht einfach. Wenn die PHP Funktionen passthru oder exec erlaubt sind, kann man das auch aus einem PHP Script einfach umsetzen. Wenn ein ssh Zugang vorhanden ist, dann sind diese Befehle meist ausführbahr.

    Beispiele:
    sed -e 's/suchen/ersetzen/g' -i datei

    hier nur alle Dateien die auf html enden
    find . -name '*html' -exec sed -e 's/suchen/ersetzen/g' -i \{\} \;

    Bei sed mit der Option -f kannst Du auch komfortabel eine Scriptdatei anlegen, in der in jeder Zeile eine solche Regel steht und ohne viel Programmierung drum herum.
    aufzurufen ist es dann
    sed -f sedscriptbefehle datei_zum_aendern

    Mit ein wenig Übung klappt das besser als in PHP
    jay-ar

    PS: Noch ein paar Befehle, um der falschen chmod/chown vorzubeugen
    find . -type f -perm 777 ## finde alle 777 Dateien ausgehend von aktuellen Verzeichnis
    find . -type f -perm 777 -exec chmod 660 \{\} \; #alle 777 Dateien in 660 ändern. besser wäre allerdings im Shop bei den meisten 400
    find . ! -user web15 -exec chown web15\: \{\} \; #finde alles was nicht dem web15 gehört und ändere es ab

  3. #13
    Erfahrener Benutzer
    Registriert seit
    04.10.2010
    Beiträge
    123
    Downloads
    1
    Uploads
    0
    Gerade so Funktionen wie exec sollten eigentlich in JEDEM PHP über die php.ini verboten sein! Denn durch diese Funktion kann man dann direkt die Schadsoftware auch noch im Root installieren und bleibt nicht nur auf der Oberfläche!

  4. #14
    Coding
    Registriert seit
    29.09.2010
    Beiträge
    98
    Blog-Einträge
    1
    Downloads
    10
    Uploads
    1
    Ihr seid aber kompliziert!

    file1.php bis file3.php
    PHP-Code:
    <?php
    echo 'hier komt dein php code';
    ##hierkommtmeinarray##
    echo 'hier komt dein php code';
    ?>
    index.php

    PHP-Code:
    <?php
    $files 
    = array('file1.php','file2.php','file3.php');
    $value1="VALUE1"$value2=null$value3="VALUE3"$value4="VALUE4"$value5=null;
    $meinArray ='$action = array( ';
    //für FormDaten $_GET oder $_POST verwenden               
    if (isset($value1)){$meinArray .= '"KEY1" => "'.$value1.'", ';}
    if (isset(
    $value2)){$meinArray .= '"KEY2" => "'.$value2.'", ';}
    if (isset(
    $value3)){$meinArray .= '"KEY3" => "'.$value3.'", ';}
    if (isset(
    $value4)){$meinArray .= '"KEY4" => "'.$value4.'", ';}
    if (isset(
    $value5)){$meinArray .= '"KEY5" => "'.$value5.'", ';}
    $meinArray=substr($meinArray0, -2); $meinArray .= " );";


    foreach (
    $files as $filename){
         
    $inhalt file_get_contents("source/".$filename);
         
    $mitArray str_replace('##hierkommtmeinarray##',$meinArray,$inhalt);
         
    file_put_contents("dest/".$filename,$mitArray);
    }
    ?>
    und als rar zum testen

    str_replase.rar

    pass:ecomservice.de

    Dieser Source Code unterlieg dem Urheberrecht. Übernahme, Speicherung, Vervielfältigung, Wiedergabe und sonstige Verwendung gleich welcher Art ist - auch Auszugsweise - NICHT ERLAUBT. (c) by eComService.de

  5. #15
    Super-Moderator Avatar von berny
    Registriert seit
    09.10.2010
    Beiträge
    626
    Blog-Einträge
    3
    Downloads
    65
    Uploads
    8
    wow, ein sehr guter Ansatz.
    Jetzt stellt sich nur die Frage, wie kann ich den alten array durch den neuen ersetzen.
    es müßte also sowas sein, wie zwischen zwei kommentaren zu ersetzen.
    zB
    im File:
    Code:
    ##hierstartetmeinarray##
    $action = array(
    do1=>value1,
    do2=>value2
    );
    ##hierendetmeinarray##
    Damit wäre es dann relativ einfach und auch egal, wie der alte Array ausgesehen hat, weil dann einfach ein neuer geschrieben wird.

    Im alten File steht ja dieser array noch drinnen, muß also auch ersetzt werden, sonst gibts mehrere arrays, das wäre dann auch nicht so gut.
    Berny
    http://www.best-data.at
    Hier erfährt man fast alles über mich

  6. #16
    Erfahrener Benutzer
    Registriert seit
    29.09.2010
    Beiträge
    140
    Downloads
    4
    Uploads
    0
    Nein, definitiv nicht. In vielen Konfigurationen, so wird das auch gemacht, kann ich PHP sagen, welche Befehle ich ausführen möchte. Bei fcgid z.B. ist das Standardeinstellung. Viele Software der Systemüberwachung auf Webbasis kommen an den Befehlen gar nicht vorbei. Davon mal ab, ist es Schadsoftware meist egal, wo die im System hängt. Wenn der webuser ins System schreiben kann, da hilft auch kein verbieten der Funktionen, dann würde ich am Sicherheitskonzept nachbessern.

    jay-ar

    PS: Ich durfte mir schon einige komprimittiere Server anschauen/untersuchen. Veraltete Software(mit Lücken) und fehlerhafte Webeinstellung bzw. Rechtevergabe waren meist die Löcher, durch die geschlüpft wurde.
    Geändert von jay-ar (20.10.2010 um 10:07 Uhr)

  7. #17
    Coding
    Registriert seit
    29.09.2010
    Beiträge
    98
    Blog-Einträge
    1
    Downloads
    10
    Uploads
    1
    richtig, du musst den alten array aus den files löschen und durch ##hierkommtmeinarray## ersetzen.
    kannst du mir per PM mehr infos zukommen lassen?

  8. #18
    Neuer Benutzer
    Registriert seit
    18.12.2010
    Beiträge
    1
    Downloads
    0
    Uploads
    0

    AW: php: Bestimmte Textteile in einem File ersetzen

    Hallo Leute, hier noch ein script wo mir Berny geholfen hat (ein megadankeschön an Dich, Berny!!)

    Es soll in einer html datei bestimmte worte finden und diese durch ein anders wort ersetzen und die html datei wieder speichern:

    PHP-Code:

    <?php

    $debug
    =1;

    $datei = ("datei_zum_bearbeiten.html");

    // die datei zum bearbeiten kann z.b. normale html-formatierung haben, z.B:
    //<font size=2>name</font> 
    // wobei "name" dann durch Peter ersetzt wird.

    $inhalt_change[0]['suche']     = "name"// diesen String in der Datei suchen 
    $inhalt_change[0]['ersetzen']     = "Peter"// mit diesen String ersetzen

    $inhalt_change[1]['suche']     = "nnam";
    $inhalt_change[1]['ersetzen']     = "Mustermann";

    $inhalt_change[2]['suche']     = "titel";
    $inhalt_change[2]['ersetzen']     = "Dr. Prof. of Muster";

    $inhalt_change[3]['suche']     = "desc";
    $inhalt_change[3]['ersetzen']     = "Leidenschaftlicher Mustermacher";

    $inhalt_change[4]['suche']     = "firm";
    $inhalt_change[4]['ersetzen']     = "Musterfirma GmbH";

    $inhalt_change[5]['suche']     = "strs";
    $inhalt_change[5]['ersetzen']     = "Musterstrasse 14";

    //$inhalt_change[6]['suche']     = "altes wort";
    //$inhalt_change[0][6]['ersetzen']     = "neues wort";

    //$inhalt_change[7]['suche']     = "altes wort";
    //$inhalt_change[7]['ersetzen']     = "neues wort";

    // der Vorgang lässt sich ohne Probleme erweitern

    if (is_writable($datei)) {
            
    $contents file_get_contents($datei);

            for(
    $j=0$j<count($inhalt_change);$j++) {
                
    $contents str_replace($inhalt_change[$j]['suche'], $inhalt_change[$j]['ersetzen'], $contents);
                }
                        
    $datei_handle fopen($datei"w+");        
                         if (!
    fputs($datei_handle$contents)){
                            echo 
    "Kann die Datei $datei nicht beschreiben";
                            exit;
                        }
                    
    fclose($datei_handle);
                
        } else {
        print 
    "Die Datei $datei ist nicht schreibbar";
    }

    ?>

  9. #19
    Moderator Avatar von WalterGestalter
    Registriert seit
    30.09.2010
    Ort
    Denkendorf
    Beiträge
    149
    Downloads
    0
    Uploads
    2

    AW: php: Bestimmte Textteile in einem File ersetzen

    ganz cool. aber wofür braucht man sowas?
    viele Grüße
    Regina

    ----------------------------------------------------------------------------------------------------------------------------
    "...und wenn Dir ein Vogel auf den Kopf scheißt, lächle und sei froh das Kühe nicht fliegen können"


    Individuelle Shop-Templates, Webdesign und Printsachen vom WalterGestalter
    Kontakt gerne per Mail mail@waltergestalter.de oder telefonisch 0711-50873186


    Individuelle Geschenke für Kinder und alle die sie lieben gibt es bei ginanina.de

  10. #20
    Super-Moderator Avatar von berny
    Registriert seit
    09.10.2010
    Beiträge
    626
    Blog-Einträge
    3
    Downloads
    65
    Uploads
    8

    AW: php: Bestimmte Textteile in einem File ersetzen

    naja, wenn du bestimmte Datein auf einfache Weise ändern willst.
    geht auch mit anderen Programmen, aber eben auch mit php.

    Der Spracheditor des Buttoncreators verwendet sowas zb, aber es könnte auch andere Verwendungsmöglichkeiten geben.
    Man muß ja nicht immer alles hinterfragen ;-)

    Ach ja, war übrigens eines der "geheimen" Projekte die ja angeblich nicht über PM oder E-Mail abgelaufen sind.
    Das Ergebnis zählt, und das passt
    Berny
    http://www.best-data.at
    Hier erfährt man fast alles über mich

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 09.10.2010, 11:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •