Ich hab bereits für mich ein kleines Adminlogin gemacht.
Das ist alles schön und gut, jedoch möchte ich, in dem Administrationsmenü alles auch administrieren.
Und nun der Hauptteil:
Ich möchte, dass ich mit einem ganz einfachen Feld .txt Dateien schreibe oder editiere.
Ich mache z.B. eine Datei (home.txt). Diese ist leer und wird eben online bearbeitet. Diese wird dann in eine Datei, wie home.php mit einem include eingefügt, damit dies auf meiner Webseite erscheint.
Das Login soll für meinen Kolleg sein, der sich allerdings nicht mit HTML auskennt.
Wie kann ich so was realisieren?
Ich dachte, ich brauche drei Dateien dafür.
In der einen das Textfeld, wo der Text geschrieben / editiert wird, in einer zweiten wird mit PHP alles übermittelt und in der dritten sollen alle vorhandene .txt Dateien aufgelistet werden.
Und wenn man auf eine klickt, dann wird man auf die erste Datei weitergeleitet mit dem Textfeld. Doprt kann man dann Text hineinschreiben oder editieren(falls vorher schon welcher drinn war).
Wie könnte ich das realisieren?
Also schreibt mir nicht, ich soll CMS nehmen, denn 1. entspricht das nicht dem, was ich will, und 2. ich will ja etwas dabei lernen (bin ja noch nicht so weit in PHP)
Danke. Ich habe bereits alles soweit, dass er alle Dateien aus einem bestimmten Ordner auflistet , diese sind je mit einem Hyperlink „markiert“. Wenn ich auf den Namen eines aufgelsiteten Objektes klicke, dann wird der Dateiname in ein einzeiliges Feld geschriebn, je nachdem, was angegeben ist (file=datei.txt). Unten habe ich ein Textfeld, bei dem der gewünschte Inhalt hinkommt, ach nach angabe von file=datei.txt.
Doch das Problem ist, ich muss jede Datei beim switch() angeben, die angezeigt werden soll.
Nun meine Frage.
Wie kann ich meinen $_GET Code schreiben, dass er in die Datei includiert (file=datei.txt), ohne dass ich für jede Datei einen case machen muss?
[php]
<?php
$txt = $_GET['file'];
switch($txt)
{
default: echo' Wähle oben eine Datei aus.'; break;
case 'data.txt' : include("content/files/data.txt"); break;
case 'data2.txt' : include("content/files/data2.txt"); break;
}
?>
[/php]
Ich dachte so:
[php] case ‚$file‘ : include(„content/files/“.$file); break;[/php]
Doch es geht nicht.
ja schon klar, aber wer greift denn bitte auf das admincenter zu?
Der dem die Seite gehört, und wenn man so einfach in das Admincenter kommt, dann stimmt schon beim login was nicht
Danke für eure Antworten.
Ich habe eure Code’s angesehen und habe mir einige Ideen geholt.
@Alti
$file wurde hier definiert (auf der gleichen Seite wo das Textfeld ist).
[php]<?php
if(!isset($file))
{
echo’ Wähle aus, welche Datei du bearbeiten möchtest.
';
if ($handle = opendir(‚content/files/‘))
{
while (false !== ($file = readdir($handle))) {
if ($file != „.“ && $file != „…“) {
echo „-<a href=admin.php?site=content_bearbeiten&file=$file>$file \n“;
}
}
closedir($handle);
}
}
?>[/php]Doch nun habe ich mein include eben so:
[php]<?php
if(!isset($_GET['file']))
{
$_GET['file'] = include("content/default.txt");
}
switch($_GET['file'])
{
case $file : include("content/files/".$file); break;
}
?>[/php]Oben sind $handle (der Pfad content/files/) und $file bestimmt. Diese werden per Post übergetragen.
So:
[html][/html]und die content_insert.php ist die Datei, die alles schreibt.
if (is_writable($filename))
{
if (!$handle = fopen($filename, „r+“))
{
print „Die Datei $filename konnte nicht geöffnet werden.“;
exit;
}
if (!fwrite($handle, $somecontent))
{
print „Die Datei $filename konnte nicht geöffnet werden.“;
exit;
}
print „Die Datei $filename ist nicht schreibbar.“;
fclose($handle);
}
else
{
print „Die Datei $filename wurde nicht verarbeitet“;
}
?> [/php]Hier fällt dir vielleicht auf hier wird die Datei content/files/$fileid verarbeitet.
In meinem Tool habe ich ein einzeiliges Feld, indem ein echo hervorgerufen wird. echo($file);
Und diese wird auch mit post gesendet.
Und untent ist ein iFrame, dass wenn die content_insert.php ins Spiel kommt, unten Sagt, datei wurde verarbeitet oder nicht.
Das ist alles gut.
Doch wenn ich eine Datei anklicke, diese bearbeite (Inhalt kommt schon, der geladenen Datei) und auf Speichern klicke, dann kommt jedes mal die Meldung,
Die Datei content/files/ausgewaehlte_datei.txt ist nicht schreibbar.
Hier erscheint auch Start.
Und nun wenn man etwas bearbeitet und speichert, dann sollte etwas anderes stehen.
Und ich denke, dass das Problem, „die Datei ist nicht schreibbar“, an der übermittlung liegt.
Hier ist nochmals meine content_insert.php:
[php]<?php
$filename = ‚content/files/‘.$_REQUEST[‚dataid‘]; // Dateiname wird bestimmt
$somecontent = ($_REQUEST[‚text‘]); // Übermittelter Inhalt
if (is_writable($filename))
{
if (!$handle = fopen($filename, „r+“))
{
print „Kann die Datei $filename nicht öffnen“;
exit;
}
if (!fwrite($handle, $somecontent))
{
print „Kann in die Datei $filename nicht schreiben“;
exit;
}
print „Fertig, die Datei $filename wurde erfolgreich verarbeitet.“;
fclose($handle);
} else {
print „Die Datei $filename ist nicht schreibbar“;
}
?>[/php]Seht ihr an diesem Code Fehler?
Es sollte eigentlich gehen.