Avatar billede centauri Nybegynder
29. maj 2007 - 15:55 Der er 8 kommentarer og
1 løsning

Side til Redigering af lokal fil på linux, Hvordan ?

Jeg håber der her er nogen de rkan hjælpe mig da jeg desværre normalt kun er van til at arbejde med ASP. Men til lige denne ting er PHP desværre krævet.

Jeg skulle gerne have lavet en side der loader indholdet fra en tekst fil ind i et tekst område.
Hvor det så er mulighed for at redigere i indholdet og så herefter trykke Gem og så skal indholdet af filen erstattes med indholdet fra tekstområdet af.

Systemet er på en Ubuntu kørende Apache og PHP.
Filen der skal hentes er : /etc/dhcp3/dhcpd.conf

Håber der er nogle der kan hjælpe da jeg åbsolut intet kender til PHP. Og er bare en lille side der skal hjælpe med at ændre indstillingerne på en DHCP Server.

På forhånd tak.
Avatar billede jakobdo Ekspert
29. maj 2007 - 15:59 #1
Du kan læse indholdet sådan her:

$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);


og du kan gemme sådan her:

$filename = 'test.txt';
$somecontent = "Add this to the file\n";

// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {

  // In our example we're opening $filename in append mode.
  // The file pointer is at the bottom of the file hence
  // that's where $somecontent will go when we fwrite() it.
  if (!$handle = fopen($filename, 'a')) {
        echo "Cannot open file ($filename)";
        exit;
  }

  // Write $somecontent to our opened file.
  if (fwrite($handle, $somecontent) === FALSE) {
      echo "Cannot write to file ($filename)";
      exit;
  }
 
  echo "Success, wrote ($somecontent) to file ($filename)";
 
  fclose($handle);

} else {
  echo "The file $filename is not writable";
}

Begge kodestumper er fra: www.php.net/fread og www.php.net/fwrite
Avatar billede centauri Nybegynder
29. maj 2007 - 16:06 #2
Ja ok så mangler jeg bare lige hvordan jeg får styret hvornår den skal læse indholdet og hvornår den skal skrive.
ofr med ASP gør jeg det jo med

If Request("Submit")="1" then
' kode der skriver til fil
else
' kode der læser kode
end if

For som sagt kender jeg ikke noget til det så håber måske lidt på der var en der lige kunne lave en hurtig kode stump  til mig hvor det hele virkede i.
Avatar billede michael_stim Ekspert
29. maj 2007 - 16:09 #3
if(isset($_POST['1'])){
//Kode der skrives til fil
}
else{
//Noget andet
}
Avatar billede jakobdo Ekspert
29. maj 2007 - 16:16 #4
Denne kode burde faktisk gøre det hele:

<?php
$filename = "/usr/local/something.txt";

if(isset($_POST['saveTxt']))
{
    if (is_writable($filename))
    {
        if (!$handle = fopen($filename, 'a'))
        {
            echo "Cannot open file ($filename)";
            exit;
      }
     
      if(fwrite($handle, $_POST['txt']) === FALSE)
      {
            echo "Cannot write to file ($filename)";
            exit;
      }
     
      echo "Success, wrote ($_POST['txt']) to file ($filename)";
     
      fclose($handle);
     
    }
    else
    {
      echo "The file $filename is not writable";
    }   
}

$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<textarea cols="10" rows="50" name="txt">'.$contents.'</textarea><br />';
echo '<input type="submit" name="saveTxt" value="Gem tekst">';
echo '</form>';

?>

PS: med risiko for stavefejl, da jeg ikke har testet koden.
Avatar billede centauri Nybegynder
30. maj 2007 - 08:02 #5
Desværre ser det ikke lige helt ud til at virke.
Jeg får bare en tom side frem. Og kan desværre ikke lige se hvor problemet ligger.
Avatar billede jakobdo Ekspert
30. maj 2007 - 08:06 #6
Fejl var gratis!

Prøv så:

<?php
//http://www.eksperten.dk/spm/780725

$filename = "/usr/local/something.txt";

if(isset($_POST['saveTxt']))
{
    if (is_writable($filename))
    {
        if (!$handle = fopen($filename, 'a'))
        {
            echo "Cannot open file ($filename)";
            exit;
      }
   
      if(fwrite($handle, $_POST['txt']) === FALSE)
      {
            echo "Cannot write to file ($filename)";
            exit;
      }
   
      echo "Success, wrote (".$_POST['txt'].") to file ($filename)";
   
      fclose($handle);
   
    }
    else
    {
      echo "The file $filename is not writable";
    } 
}

$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<textarea cols="50" rows="10" name="txt">'.$contents.'</textarea><br />';
echo '<input type="submit" name="saveTxt" value="Gem tekst">';
echo '</form>';

?>

Husk!
1: Ret stien i toppen til: /etc/dhcp3/dhcpd.conf
2: chmod filen: dhcpd.conf til 777 (kan du evt. gøre via ftp)
Avatar billede centauri Nybegynder
30. maj 2007 - 08:26 #7
Puha ja den var næsten pinlig fra min side af jeg havde glemt rettighedderne på filen. Er nok bare for van til at i ASP skal den nok komme og sige hvis de ikke er iorden.

Pluds jeg lige måtte ændre
if (!$handle = fopen($filename, 'a'))
til
if (!$handle = fopen($filename, 'w'))

For at den ikke tilføjede til filen hver gang istedet for.

Så kan du ikke sende et svar så jeg kan give dig pointene.

Og forresten 1000 tak.
Avatar billede jakobdo Ekspert
30. maj 2007 - 08:40 #8
Svar og selv tak.
Avatar billede jakobdo Ekspert
30. maj 2007 - 08:51 #9
Takker for point.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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