Avatar billede stonedbush Nybegynder
14. september 2005 - 14:59 Der er 5 kommentarer og
1 løsning

Lav en PHP side fra nettet og gem på serveren.

Jge har tænkt på at ville lave en form for cms system.
Jeg har allerede lavet det sådan at den henter alle links fra databasen og man kan som admin tilføje, ændre og slette link's.
Men jeg kunne godt tænke mig at man som admin kunne gå ind på f.eks en side der hedder "Opret side", hvor man derfra kan lave en ny side der f.eks skal hedde kontakt.php.
Der er så en "skabelon" af en tom side, hvor man så bare skriver indholdet, og så bliver den flettet ind i den ny side og gemt på serveren.
Så er det så ellers bare om for admin, at tilføje den ny side til menuen.
Kan det lade sig gøre fra PHP??
Avatar billede jakobdo Ekspert
14. september 2005 - 15:28 #1
Ja!
Du kunne lave en form, med et textarea.
Så poster du indholdet videre til selve "gemmesiden".
Her laver du:
<?php
$filename = $_POST['filnavn']
$indhold = '<?php include("header.php"); ' . $_POST['indhold'] . 'include("footer.php"); ?>';

// 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, $indhold) === 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";
}
?>
Avatar billede stonedbush Nybegynder
14. september 2005 - 16:10 #2
Mange tak for det. Så vil jeg se om jeg kan få det til at virke.
Hvor fandt du det henne? For så kunne det være jeg skulle kigge lidt på den side
Avatar billede jakobdo Ekspert
14. september 2005 - 16:55 #3
Det fandt jeg inde i mit hoved!
Dog fandt jeg selve fwrite/fopen på siden: www.php.net/fwrite
Avatar billede stonedbush Nybegynder
14. september 2005 - 17:57 #4
Mange tak for det jakobdo.
Det virkede, der skulle bare lige fjernes noget først :)
I din kode ville den have at filen SKULLE findes i forvejen, men da jeg så ændrede din kode til:

<?php
$filename = $_POST['filnavn'];
$indhold = '<?php include("header.php");?>' ."<br>". $_POST['indhold'] ."<br>". '<?php include("footer.php"); ?>';

// 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 "Kan ikke åbne filen ($filename)";
        exit;
  }

  // Write $somecontent to our opened file.
  if (fwrite($handle, $indhold) === FALSE) {
      echo "Kan ikke skrive til filen ($filename)";
      exit;
  }

  echo "Succes, skrev ($indhold) til filen ($filename)";

  fclose($handle);

/*} else {
  echo "Filen $filename kan ikke skrives";
}*/
?>

Så virkede det alt sammen.
Så smid lige et svar så får du dine point + karma :)
Avatar billede jakobdo Ekspert
14. september 2005 - 20:45 #5
Du har ret!
Jeg antog filen allerede var der!
Du skal dog vide at når du bruger fopen ($fil,'a');
Så appender den data!
Så hvis man åbner en fil som allerede findes, så skriver man i slutningen af den!
Så du bør lave et tjek om filen findes, inden du evt opretter og skriver til den!
kig på: www.php.net/file_exists
Avatar billede jakobdo Ekspert
15. september 2005 - 08:43 #6
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