Zuerst ein wenig Vorwissen: Ich habe für unseren Verein eine Seite programmiert. Ich möchte den Seiteninhalt jeweils aber mit .txt-Dateien anzeigen lassen. ( <?php $datei = "die-Datei.txt; readfile($datei); ?> )
Den kann man ja dann auch auf der „adminpage“ in eine TextBox lesen lassen, ändern und dann auch den neuen Text wieder in die Datei schreiben lassen. Login etc. ist alles in einer einzigen Datei. Diese gibt dann echos auf die verschiedenen Eingaben heraus. [(Passwort falsch - richtig - nix eingegeben)] Daher ja aber das Feld, das die Datei einließt und der Button zum Schreiben in HTML programmiert werden (davon bin ich zu mindest überzeugt) muss das ja alles irgendwie in das echo rein. Nur wie ??
include(„änderungsdatei.php“); ist dumm, daher ich dann einfach änderungsdatei.php so aufrufen kann, ohne mich einloggen zu müssen. Da kann ich mir auch gleich den Login sparen.
In das echo müsste -wenn es hilft- folgender Code hinein:
so, wie du das geschrieben hast, geht das nicht. „onclick“ führt JavaScript-Code auf dem Client aus, du willst aber auf dem Server speichern. Der Ablauf ist der:
Aufruf des Formulars
Eingaben durch den Nutzer
Absenden an die in action angegebene Adresse (ohne action an die, vond er das Formular kam)
in dem Script, was da aufgerufen wird, Daten speichern
Das kann das gleiche Script sein, wie das, welches das Formular erzeugt, dann ist da aber eine Abfrage nötig, ob jetzt Daten gesendet wurden oder nicht.
Daher ja aber das Feld, das die Datei einließt
und der Button zum Schreiben in HTML programmiert werden
Verständniskorrektur: HTML ist keine Programmiersprache, sondern nur eine statische Seitenbeschreibungssprache. Unter dem Aspekt betrachtet, ist es vielleicht auch logischer für Dich, wie das Ganze abzulaufen hat.
(davon bin ich zu mindest überzeugt) muss das ja alles
irgendwie in das echo rein. Nur wie ??
Da kannst Du alles reinschreiben, was auf dem Client ausgeführt werden kann, also nur HTML, CSS und JavaScript. PHP gehört da nicht mehr rein.
Wenn Du ein PHP-Script hast, musst Du am Ende eine HTML-Seite erzeugen, die der Browser parsen kann. Alles, was mit PHP geschrieben wird, muss vorher ermittelt werden, serverseitig, da wo Du gerade bist.
include(„änderungsdatei.php“); ist dumm
Vor allem muss das in die Seite, die das gerade laufende Script aufgerufen hat, denn sonst kann es nicht mehr geparsed werden.
In das echo müsste -wenn es hilft- folgender Code hinein:
Vielleicht hat Dir alx besser helfen können, jetzt wird es IMHO etwas konfus.
Zurück zum eigentlichen Thema:
Also es gibt keine Chance das da irgendwie reinzifrimelt??
Wenn nein lasse ich nämlich den Login etc. bleiben und gebe einfach den FTP-Zugang weiter…
Zurück zum eigentlichen Thema:
Also es gibt keine Chance das da irgendwie reinzifrimelt??
Wenn nein lasse ich nämlich den Login etc. bleiben und gebe
einfach den FTP-Zugang weiter…
Ich versteh noch nicht ganz, wo das Problem ist.
Du willst - wenn ich Dich richtig verstehe - ein Mini-CMS bauen, wo ein Admin die Texte von verschiedenen Webseiten bearbeiten kann.
Das ist eigentlich gar nicht schwierig.
HTML-Seite mit Formular für die Texteingabe.
Formular abschicken, PHP-Script wird aufgerufen.
Im PHP-Script werden die Daten gespeichert. Ob in txt-Datei oder Datenbank, ist egal.
Das Script liefert eine Bestätigungsseite zurück.
Im Browser klickt man auf einen Link, um die eben bearbeitete Seite anzuzeigen.
Diese HTML-Seite wird geladen. Sie enthält PHP.
Dieses PHGP-Script wird dann ausgeführt. Es liest den Text ein (txt/DB) und schreibt ihn an die richtige Stelle in der Seite (d.h. an der richtigen Stelle in der HTML-Seite kommt der PHP-Aufruf rein).
Der Server liefert diese Seite mit den eingefügten Texten an den Browser zurück, der die Seite anzeigt.
Fertig.
Reden wir aneinander vorbei, oder stellst Du Dir alles zu kompliziert vor?
Ich spare mir ein Zitat… Du weust ja was du geschrieben hast
Ja genau so as meien ich… Die php-Seite zum Ändern soll aber eine einzige sein (also login und alles beinhalten) und nicht mit include("…"); gemacht sein…
Damit arbeiten doch alle und das include kann man ja vom login abhängig machen, so wie viele andere das auch tuen.
if ($_POST[‚penner‘] == „nichtsnutz“) { include(„echtes_program.php“);}
oder es wird am Login eine VARIABLE definiert und dann mit
if define($variable) verzweigen.
Alles in ein FILE unterzubringen (auch wenn gar kein user gelogt wird) macht es nur unübersichtlich und wartungs arbeiten dauern ewig
Und umsolänger das script umso langsamer wirds auch noch.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Weil ich mich dann nicht einloggen muss… Angenommen meine serveradresse ist www.12345rubbeldochdiekatz.de
die index ist zugleich die login. Die änderungsdatei heißt change12345.php
Zurück zum eigentlichen Thema:
Also es gibt keine Chance das da irgendwie reinzifrimelt??
Wenn nein lasse ich nämlich den Login etc. bleiben und gebe
einfach den FTP-Zugang weiter…
Im Login-Script setzt du an den Anfang (allererste Zeile!)
session_start() ?>
und wenn der Login erfolgreich war, setzt du eine Session - Variable:
$_SESSION[„loggedin“] = 1; ?>
im Edit / Upload script dann (auch ganz an den Anfang):
session_start();
if (!isset($_SESSION[„loggedin“]) || ($_SESSION[„loggedin“] != 1)) {
echo „Kein Zugriff“;
exit;
}
?>
Dann hast Du einen logischen Fehler in Deinem Ablauf.
Natürlich muss auch changer12345.php prüfen, ob Du eingeloggt bist! DAS ist Dein Fehler. Jede Seite muss prüfen, ob Du eingeloggt bist!
Da gibt es mehrere Möglichkeiten, z.B. über PHP Sessions oder aber per „.htaccess“ (Server-Autenthifizierung).
Sehe ich das also richtig, dass Dein eigentliches Problem die Login-Geschichte ist und nicht irgendwelche html-Tags in echo-Zeilen einbauen, wie ursprünglich im Titel geschrieben?
Sehe ich das also richtig, dass Dein eigentliches Problem die
Login-Geschichte ist und nicht irgendwelche html-Tags in
echo-Zeilen einbauen, wie ursprünglich im Titel geschrieben?
Nein siehst du nicht. Ich wollte anfangs eigentlich 3 Dateien haben:
Die Text-Datei mit dem Inhalt der Seite
Die Login seite, die die Daten überträgt (Passwort und Benutzername)
Die php-seite die bei Login das Feld zum Ändern anzeigt und bei falschen passwort blockt.
Das Problem bei der Ursprünglichen Idee ist nur, das das Textfeld im echo kein PHP mehr enthalten kann wie ich zu Erst gedacht hatte…
Klar kann man auch PHP editieren im Textfeld und dann das edierte Speichern als phpaenderungs.php .CMS bieten as ja auch so an, das man direkt das template (mit php code drinne) ändern kann, und das über schnödes TextEditfeld
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Das Problem ist, das ich aber die Datei mit dem
Änderungsscript aufrufen kann. Ihr Quelltext:
session_start() muss immer ganz oben stehen, sonst gibt es einen Fehler.
Aber das du das hier aufrufen kannst, liegt nicht daran, wahrscheinlich hattest du dich vorher einmal eingeloggt (also das $_SESSION[„loggedin“] war schon gesetzt). Browser schließen sollte das aber dann beenden, bzw. machst du ein Ausloggen mit unset($_SESSION[„loggedin“]); nach dem session_start();
session_start() ?>
Interner Bereich
if (!isset($_SESSION[„loggedin“]) || ($_SESSION[„loggedin“]
!=1)) {
echo
"
Okay das funktioniert jetzt soweit.
Jetzt habe ich das Problem, das wenn ich zuerst eingeloggt bin und dann die Datei schreiben will, -also auf dem Submit-Button klicke-, die Meldung kommt, die nur kommen sollte, wenn ich nicht eingeloggt bin…
Warum ??
Okay das funktioniert jetzt soweit.
Jetzt habe ich das Problem, das wenn ich zuerst eingeloggt bin
und dann die Datei schreiben will, -also auf dem Submit-Button
klicke-, die Meldung kommt, die nur kommen sollte, wenn ich
nicht eingeloggt bin…
Warum ??
Keine Ahnung. Irgendwas hast du falsch gemacht. Poste mal deine Code, oder schicke den mir per Mail (Adresse steht in dem gelben Balken oben).