kleine php frage

Pinky

dumpfbäckchen
14 Februar 2007
59
0
hi!
zur zeit versuche ich mir php ein bisschen näher zu bringen, und da bräuchte ich ein ganz einfaches script zum "auseinanderbauen"

das sollte so funktionieren:
im adminbereich kann man ein text eingeben, und das dann speichern
auf einer anderen seite wird der text dann angezeigt

kann mir das jemand vielleicht kostenlos proggen?

wäre echt nett!:biggrin:
 
Zuletzt bearbeitet:
Ist jetzt zwar etwas anders wie gewünscht (Text wird auf der gleichen Seite wieder angezeigt), aber zum Üben ist´s ja egal (bitte schimpft mich jetzt nicht für das HTML und den HTML-PHP-Code-Mischmasch *g*)

PHP:
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Text:<input type="text" name="content" value="Insert text here"><br />
<input type="submit" value="Eintragen!">
</form>

<?php

if(!empty($_POST['content'])) {
    $fp = fopen('data.txt','a+');
    fwrite($fp,$_POST['content'] . "\r\n");
    rewind($fp);
}

if(!isset($fp)) $fp = fopen('data.txt','a+');
while (!feof($fp)) {
   $buffer = fgets($fp, 4096);
   echo $buffer . '<br />';
}
fclose($fp);

?>
 
data.txt muss im selben Verzeichnis sein

und muss auf 777 chomed werden ;-)

data.txt wird vom Script automatisch angelegt, da als Dateimodus 'a+' ausgewählt wurde. Zumindest in meiner Testumgebung müssen die Rechte nicht auf rwx-all gestellt werden, da sinnigerweise immer der Webserver als Benutzer darauf zugreift. Bei normalen Hosting-Paketen dürfte das nicht sonderlich anders sein (bis auf dass es meines Wissens nach optimalerweise ein Benutzer/Hosting-Account sein sollte).

oh danke!
ich würd dir ja auch ein paar lose geben, hab aber grad keine;)

Kein Problem, wenn es zum Lernen hilft ;)
 
Eine kurze Lösung mit PHP5 und einem Template

malzumauseinandernehmen.php
PHP:
<?php
class Malzumauseinandernehmen{
  private $_datei  = 'datei.txt';
  
  private function _loeschen(){
    if (file_exists($this->_datei)){
      unlink($this->_datei);
    }
  }
  
  function speichern($text){
    $this->_loeschen();
    file_put_contents($this->_datei, $text);
  }
  
  function lesen(){
    if (file_exists($this->_datei)){
      $text = file_get_contents($this->_datei);
      return $text;
    } else {
      return NULL;
    }
  }
}
?>

malzumauseinandernehmen_lesen.php
PHP:
<?php
include_once('malzumauseinandernehmen.php');

$mza = new Malzumauseinandernehmen;

echo 'Folgender Text ist gespeichert: <br />';
echo $mza->lesen();
?>

malzumauseinandernehmen_schreiben.php
PHP:
<?php
include_once('malzumauseinandernehmen.php');

$mza = new Malzumauseinandernehmen;


if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  $text = @$_POST['text'];
  $mza->speichern($text);
}

$text = $mza->lesen();
$self = $_SERVER['PHP_SELF'];

$tpl = file_get_contents('malzumauseinandernehmen.tpl');
$tpl = str_replace('#ZIEL#', $self, $tpl);
$tpl = str_replace('#TEXT#', $text, $tpl);
echo $tpl;
?>

malzumauseinandernehmen.tpl
HTML:
<html>
<head>
  <title>Text bearbeiten</title>
</head>
<body>
  <h1>Text bearbeiten</h1>
  <form action="#ZIEL#" method="post">
    <input type="text" name="text" value="#TEXT#" />
    <input type="submit" name="submit" value="Speichern" />
  </form>
</body>
</html>
 
Es ist machbar mit der Linenummer dazu liest du die Datei zeile für zeile aus und machst bei der Ausgabe den löschlink mit ?line=xx

dann kannst du die Datei in der delete.php öffnen die line suchen und löschen.

Aber das schaut eher nach einem CMS aus liege ich da richtig? Da würde ich das nicht empfehlen weil Du dann jede Zeile einzeln löschen müsstest. Lieber Inhalt auslesen in einer Textarea das rauslöschen was raus soll und dann die Datei komplett neu schreiben, das halte ich für ein CMS sinnvoller.