Author |
Message |
25/01/2002 15:23:53
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
Ich wollte für meine Seite das GB (2.21) eigentlich so umbauen, daß man immer erst in die Preview kommt, bevor man den Text abschicken kann, so daß die Leute gezwungen sind, ihren Text nochmal zu überprüfen.
Dabei ist mir aufgefallen, daß wenn ich auf Zurück drücke (ist ja ein history.back Link). Der vorher geschriebene Text gelöscht wird (IE 5.5, Netcaptor).
Bei "Achims Guestbook" (www.lkcc.org/achim) wird der Inhalt immer per POST Formular an die Preview und zurück übergeben. Nun hab ich mich gefragt, ob ich das nicht irgendwie hinbekomme, daß zu programmieren. Deshalb wollte ich hier mal fragen (vor allem die Developer) wie ich da am besten vorgehen kann?!
Hab mir gestern den ganzen Abend den Code angeschaut, aber das Guestbook ist doch sehr komplex, und deshalb hatte ich da so meine Schwierigkeiten durchzusteigen.
Danke für alle Hinweise.
|
|
25/01/2002 16:23:14
|
Anonymous
|
1) history.back
Das liegt an den gesendeten headers
Entferne alle 'pragma: no-cache, expire, etc.' aus den templates
2) Preview
Entferne einfach den 'Submit'-Button (Abschicken) aus dem Formularfeld
3) Der Inhalt wird per 'POST' abgeschickt oder sehe ich das etwa falsch?
|
|
25/01/2002 16:27:15
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
zu 1.) wenn's dann auf allen Browsern klappt, ok. Werd ich mal testen.
zu 2.) Das war auch meine Idee... :)
zu 3.) Ja, von NeuerEntrag -> Preview schon. Aber von Preview -> EintragVerbessern ja leider nicht. Aber schöner wär's eigentlich, da solche Probleme dann nicht auftauchen.
|
|
25/01/2002 16:33:58
|
Anonymous
|
1.) sollte miot allen browsern funktioneren, die JS 1.0 unterstützen (das sind praktisch alle gängigen, selbst Opera)
2.) abgehakt
3.) Ich hab' das jetzt verstanden was du meinst. Da wird aber nicht so einfach werden. Vielleicht gibt's ja doch einen genialen Trick.
|
|
25/01/2002 16:56:06
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
zu 1.) Du meinst history.back funktioniert mit allen gängigen Browser... das ist klar. Aber ob überall dann auch der Text drin stehen bleibt, das war vielmehr meine Frage.
|
|
26/01/2002 19:17:19
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
Auf der Seite für den neuen Eintrag und auf der Preview Seite sind keine Meta Tag bzgl. pragma: no-cache, expire. Trotzdem werden die Daten bei mir beim Zurück Link gelöscht.
|
|
26/01/2002 21:00:48
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
Hab eine Lösung gefunden, die ist jedoch noch nicht 100% perfekt, da es Probleme mit dem parsen von Sonderzeichen wie " ' \ gibt, da diese Zeichen in der Preview schon umgewandelt werden und ein vorangehendes Backslash bekommen, damit die MySQL Datenbank keine Probleme macht. Beim Hin- und Hergeben des Textes zwischen Preview und NewEntry kommt jedesmal ein weiterer Backslash dazu. Aber vielleicht finde ich dazu ja auch noch was.
Hier meine Lösung:
In der form.php und allen form_xxx.php müssen für die inputs und textareas value gesetzt werden, z.B.:
In der preview_entry.php hab ich den Code des Zurück Buttons wie folgt geändert:
Dann bei der addentry.php diesen kompletten Block hinzufügen (vor dem anderen if Block!):
Das war nur Copy&Paste des alten Blockes mit den Änderungen in der if Bedinung und bei process() ganz unten.
Probleme wie gesagt nur bei Sonderzeichen und aber auch bei der URL, von der Preview zurück zum Editieren, sind dann zwei mal http:// vor der URL: http://http://www.meinedomain.de. Wenn man dann noch mal in die Preview geht, wird die Domain gelöscht, da ungültig.
|
|
26/01/2002 21:08:44
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
Ok... jetzt hab ich's:
Im if-Block, dort wo die HTTP_POST_VARS gesetzt werden einfach:
statt des vorherigen:
Und ähnlich wie eben, das die URL Variable ändern:
Fertig!!
|
|
27/01/2002 18:05:43
|
matts
Newbie
Joined: 27/01/2002 17:57:39
Messages: 1
Offline
|
Hallo Timo,
Ich kann Deinen Änderungen nicht ganz folgen; ich habs probiert und mir tun sich einige Fragen auf, da es bei mir nicht funktioniert (liegt aber vielleicht auch daran dass ich kein PHP kann):
Zu den Änderungen in addentry.php
* ist es richtig, das die variable zB. gb_post=>name aus $HTTP_POS_VARS("name") versorgt wird? Das entsprechende input feld im form.php heisst ja gb_name.
* Du fügst einen if Block ein wenn gb_back gilt, welcher implizit den Eingabeblock erzeugt. Der andere if-Block tut das selbe, womit zwei Eingabeblöcke vorhanden sind (wenn gb_back); sollte hier nicht mit "else" der andere im falle von gb_back ausgeschlossen werden?
Solltest Du vielleicht noch eine Idee haben warum Deine Änderungen bei mir nicht funktioniert bin ich natürlich dankbar.
Matts.
|
|
27/01/2002 18:19:15
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
matts wrote:
* ist es richtig, das die variable zB. gb_post=>name aus $HTTP_POS_VARS("name") versorgt wird? Das entsprechende input feld im form.php heisst ja gb_name.
Welche Guestbook Version hast Du? Bei mir heißen die Input Felder einfach name="name", name="email" usw.
Die Klassen Variabeln übernehmen ansonsten die Werte der Variablen, die durch das POST Formular übergeben werden.
matts wrote:
* Du fügst einen if Block ein wenn gb_back gilt, welcher implizit den Eingabeblock erzeugt. Der andere if-Block tut das selbe, womit zwei Eingabeblöcke vorhanden sind (wenn gb_back); sollte hier nicht mit "else" der andere im falle von gb_back ausgeschlossen werden?
Klar! Hab ich nur nicht explizit dazu geschrieben. In diesem Falle sogar mit "else if", da ja noch ein dritter Block vorhanden ist.
matts wrote:
Solltest Du vielleicht noch eine Idee haben warum Deine Änderungen bei mir nicht funktioniert bin ich natürlich dankbar.
Beschreib mal genau was bei dir passiert, bzw. nicht passiert ;)
BTW: Meine Änderungen sind wie Du schon bemerkt hast, keine Schritt für Schritt Anweisungen, sondern waren mehr als Denkanstoss gedacht. Kann also sein, daß ich ein paar Kleinigkeiten vergessen habe. Aber Fragen beantworte ich gerne.
|
|
27/01/2002 20:38:05
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
Nachtrag: von Version 2.21 zu Version 2.3 haben sich die Variabelnamen geändert. Von z.B. name -> gb_name, location -> gb_location usw. Das müßt ihr natürlich entsprechend modifizieren, copy&paste von meinem geposteten Text wird nicht reichen, wenn ihr die Version 2.3 verwendet.
|
|
28/01/2002 13:31:21
|
Anonymous
|
Kannst du mal vielleicht die URL posten, wo die modifizierte Version läuft.
Scheint ja ein interessanter 'Hack' zu sein
|
|
28/01/2002 13:48:30
|
Timo
Beginner
Joined: 25/01/2002 15:16:39
Messages: 11
Offline
|
Nö, möchte ich hier nicht öffentlich posten, aber Du kannst mir ne Email schreiben.
|
|
|