25. marts 2008 - 19:58Der er
16 kommentarer og 1 løsning
indsætte tekst i starten af flere filer
Hej Eksperter. Jeg har ændret mit site fra login med .htaccess til login med sessions. Jeg skal herved indsætte noget tekst i starten af alle mine php-filer i rod- og underbiblioteker. Jeg har min egen webserver med root adgang så det behøver ikke nødvendigvis at være php men det kunne jo være andre også kunne bruge spørgsmålet. Det må være noget med "append", men jeg er gået helt i sort... Nogen der kan hjælpe?
Jeg skal være ærlig fra start og sige jeg ikke kan give dig noget kode eller henvise dig til nogle gode sites omkring emnet, men jeg vil næsten vædde på Apache kan sættes op, så den altid appender en stump kode i de filer som åbnes fra et givent bibliotek.
Det var en stor mundfuld, men det ligner da noget. Men hvis man ikke lige har adgang til at opsætte eller rette i apache direktiverne må der være andre muligheder. Flg php kode kan ændre en given file extension på alle filer i rod- og underbiblioteker, derfor må det være muligt at gå ind i alle filer der ender med .php og indsætte <?php require("/var/www/html/login/tjeklogin.php"); ?>
if (eregi("\.$ext1",$file)) { # Look at only files with a pre-defined extension $fileHand = fopen($srcfile, 'r'); fclose($fileHand); rename($srcfile, $dstfile ); }
For hver fil: $indhold = file($filNavn); array_unshift($indhold, "<?php require(\"/var/www/html/login/tjeklogin.php\"); ?>"); Og så skriv arrayet til filen.
Tjekkede lige array_unshift på http://dk.php.net/manual/en/function.array-unshift.php det ligner en rigtig god mulig løsning. Skal lige oprette en tro kopi af hele sitet før jeg begynder at øve mig :-} Jeg vender tilbage
jeg prøvede $indhold = file($filNavn); array_unshift($indhold, "<?php require(\"/var/www/html/login/tjeklogin.php\"); ?>"); Og så skriv arrayet til filen. $fileHand = fopen($srcfile, 'w'); fwrite($fileHand,$indhold); fclose($fileHand); Herefter bliver filens indhold til array Dette virkede ikke.
Du skal først implode arrayet bagefter. $indhold = file($filNavn); array_unshift($indhold, "<?php require(\"/var/www/html/login/tjeklogin.php\"); ?>"); Og så skriv arrayet til filen. $fileHand = fopen($srcfile, 'w'); fwrite($fileHand, implode("\n", $indhold)); fclose($fileHand);
Implode med \n er for at få linieskift i filen igen, ellers bliver koden ikke sjov at rette i bagefter.
jakobdo. ReplaceEm er bare lige sagen, men kan naturligvis kun bruges hvis man har alle filerne lokalt på sin maskine. Men det er jo bare at downloade hele sitet, køre ReplaceEm og uploade det hele igen.
hmortensen. Jeg fik php til at virke. Det kan selvfølgelig finpudses med finere uddata osv. Det kræver selvfølgelig at webserveren har skriverettigheder til filerne, eller det kan køres via php i linux textconsol.
Rart at der findes reelle mennesker derude ;-) takker. I øvrigt er der på http://www.orbit.org/replace/ ogaå en lille tool der ændrer fileextension på flere filer i flere mapper. Fedt
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.