Html-Befehle in eine echo-zeile einbauen

Hallo, ich bins mal wieder :smile:

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:

<?php $datei = "text.txt";
?\> ändere mich! <?php readfile($datei); ?>

">

Hoffe, Ihr wisst was ich vor habe und könnt helfen!
Gruß
Jens :o)

Hallo,

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.

<?php $datei = "text.txt";<br /> if(isset($\_POST['senden'])) { // Formular wurde gesendet
 $text = $\_POST['testschreiben'];
 $handle= fOpen($datei , "w"); 
 fWrite($handle, $text); 
 fClose($handle);
 }
?\>

ändere mich!

<?php readfile($datei); ?>

Alex

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.

Gruß,
-Efchen

@alx: okay ust geändert. Danke.

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…

Gruß
Jens

Server

PHP HTML

<?php $hallo = "hallo";
?\> Mein erstes Wort echo $hallo ?\> UNSINN echo "<?php $halloe = 'hallo'";
echo "Mein erstes Wort"; echo $hallo; echo "?\>"; WENN PHP schreiben dan mit fopen und schreiben. $phptxt= "<?php $halloe = 'hallo';";
$phptxt.= "echo 'Mein erstes Wort';"; $phptxt.= "echo $hallo;"; $phptxt.= "?\>"; $handle = fopen ("c:\\htdocs\\neuephp.php", "w"); fwrite($handle, $phptxt); das würde eine php datei neuephp.php mit dem php programmcode speichern. was auch immer du vorhast, programmieren ist nicht gleich webseite bauen :smile: > [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

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.

  1. HTML-Seite mit Formular für die Texteingabe.
  2. Formular abschicken, PHP-Script wird aufgerufen.
  3. Im PHP-Script werden die Daten gespeichert. Ob in txt-Datei oder Datenbank, ist egal.
  4. Das Script liefert eine Bestätigungsseite zurück.
  5. Im Browser klickt man auf einen Link, um die eben bearbeitete Seite anzuzeigen.
  6. Diese HTML-Seite wird geladen. Sie enthält PHP.
  7. 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).
  8. 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?

Gruß,
-Efchen

Ich spare mir ein Zitat… Du weust ja was du geschrieben hast :smiley:

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…

Gruß
Jens

wobei ich mich frage warum kein include ??

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 :smile:
Und umsolänger das script umso langsamer wirds auch noch.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

wobei ich mich frage warum kein include ??

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

Die index.php(also login) verweist ja dann auf die changer12345.de über <?php include("changer12345.php"); ?>.
Wenn ich aber gleich als URL www.12345rubbeldochdiekatz.de/changer12345.php eingebe muss ich mich nicht mehr einlggen.

[(Das das Skript lange wird ist mir egal… das muss so wie so nur einmal geschrieben werden und dann nicht mehr gewartet.)]

Gruß
Jens

Hallo Jens,

@alx: okay ust geändert. Danke.

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;
}
?>

Alex

Ich spare mir ein Zitat… Du weust ja was du geschrieben hast :smiley:

Nein, meistens nicht :smile:

Gruß,
-Efchen

Authorisierungsprobleme

wobei ich mich frage warum kein include ??

Wenn ich aber gleich als URL
www.12345rubbeldochdiekatz.de/changer12345.php eingebe muss
ich mich nicht mehr einlggen.

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?

Gruß,
-Efchen

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…

Gruß
Jens

jetzt bin ich verwirrt ???

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 :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Okay ich habe das jetzt so geändert.

Das Problem ist, das ich aber die Datei mit dem Änderungsscript aufrufen kann. Ihr Quelltext:

Interner Bereich session_start();
if (!isset($_SESSION[„loggedin“]) || ($_SESSION[„loggedin“] !=1)) {
echo "

Kein Zugriff! ";
exit;
}
else
{
echo „Hallo!“;
}
?>

Aber an Stelle von Zugriff verweigert kommt mein Hallo!
Ich habe auch schon versucht, mich vorher falsche einzuloggen. Trotzdem kommt da Hallo…

Warum ??

Gruß
Jens

Okay ich habe das jetzt so geändert.

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
"

Kein Zugriff! ";
exit;
}
else
{
echo „Hallo!“;
}
?>

Alex

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 ??

Könnt es euch gern selbst mal anschauen:
http://fabiebans.bplaced.net/login.php

Benutzername: Jens
Passwort: 12345

Die Datei sollte leer sein und beim schreiben der Schriftzug „Bitte zuerst einloggen!“ kommen.

Gruß
Jens

Hallo,

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).

Alex

Code im Postfach