Avatar billede horizon Nybegynder
25. maj 2008 - 21:09 Der er 3 kommentarer og
1 løsning

Problem med søg og erstat script

Jeg prøver at lave en funktion der kan søge og erstatte noget i en fil og så gemme ændringerne, men det eneste jeg udretter er at slette indholdet af filen.

Koden ser således ud:

$Fil = fopen("Diverse/Indstillinger.php", "w+");
   
        $Erstat[] = $Side[1];
        $Erstat[] = $Side[2];
        $Erstat[] = $Side[3];
        $Erstat[] = $Side[4];
       
        $NyData[] = $_POST[1];
        $NyData[] = $_POST[2];
        $NyData[] = $_POST[3];
        $NyData[] = $_POST[4];

        //kontrol af ny kode
        if($_POST[5] == $_POST[5_2]){
            $Erstat[] = $Side[5];
            $NyData[] = md5(md5($_POST[5]));
        }
       
        $NyFil = str_replace($Fil, $Erstat, $NyData);

        fwrite($NyFil);
       
        fclose($Fil);

Nogen der kan se en fejl??
Avatar billede horizon Nybegynder
25. maj 2008 - 21:14 #1
har prøvet at echoe indholdet af $Fil og får følgende tekst frem:

Resource id #4Array

Indholdet af Indstillinger.php filen ser således ud:

<?php

if(!defined('1Basic'))
    die('Adgang nægtet!');

else{

    /*Kundeoplysninger*/
    $Side[1] = 'Bruger_Nr';

    /*Sideindstillinger*/
    $Side[2] = 'mit_navn';
    $Side[3] = 'www.link.dk';
    $Side[4] = 'mail@link.dk';
    $Side[5] = 'krypteret_adgangskode';

}

?>
Avatar billede dkfire Nybegynder
25. maj 2008 - 22:23 #2
Du bør læse noget om filskrivning i php. Og tage et kig på
http://www.php.net/fopen

Din variabel $Fil er en fil ressource, dvs. et "link" til en fil, men ikke filens indhold. Derfor kan du ikke udskrive filens indhold med echo $Fil. Du kan heller ikke bruge str_replace(), da $Fil jo heller ikke er en streng.
Du skal bruge nogle af php's fil funktioner for at læse indholdet af filen, det kan være fgets eller fread.
Avatar billede askholme Nybegynder
25. maj 2008 - 22:58 #3
Erstat  $Fil = fopen(... med $Fil = file_get_contents("Diverse/Indstillinger.php");
Efter din string replace skal du så have
$FilPointer = fopen("Diverse/Indstillinger.php","w");
fwrite($FilPointer,$NyFil);
fclose($FilPointer);
Avatar billede horizon Nybegynder
01. juni 2008 - 01:34 #4
takker... fandt ud af der også var en funktion der hed file_put_content som gør det samme som de 3 sidste linjer i askholme's svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester