Aufruf einer php-Seite. Wie mache ich's am besten?

denn JavaScript kann im Browser deaktiviert sein

Guter Punkt!

Ja das mit $_POST['feldname'] weiss ich. Mein Gästebuch funktioniert auch damit, nur eben auf eine "altmodische" Weise, d.h. es wird ein php-Script in einem neuen Browserfenster geöffnet (und dieses Fenster lässt sich eben nur ungenügend formatieren).

Die Frage ist nun, ob es andere Wege gibt, wie bspw. kein neues Script in einem neuen Fenster zu starten, sondern irgendwelchen Code auf der selben Seite zu starten, wenn der User 'submit' drückt.
 
Ich sehe keinen Grund warum man das mit einem seperaten Fenster machen sollte.
Du kannst doch mittels PHP abfragen ob der Submit-Button gedrueckt wurde.
Z.B. gibst Du dem Button den Namen "newentry" und dann kannst Du im Script
PHP:
if ($_POST["newentry"])
 {
  //in's GB eintragen
 }
nutzen.
 
Hallo Reptiler

Aha, jetzt verstehe ich!

wie müsste denn der form-tag aussehen? <form action= method="POST" ... aussehen?
 
Zuletzt bearbeitet:
reptiler hat gesagt.:
In der ACTION gibst Du den Dateinamen des Scripts mit der Form an, es ruft sich also selbst auf.

...klar, ist doch logisch eigentlich :-)

Danke, Reptiler, für den Hinweis. Ich werde das asap ausprobieren! Aber nicht bei dem Biergarten-Wetter, die nächste Schlechtwetter-Periode kommt ja schon bald. ;-)
 
Hab schon gehoert, dass das Wetter in Deutschland richtig gut ist.
Wuensche Dir auf jeden Fall viel Erfolg beim Probieren. Bei Problemen einfach wieder melden.
 
Dank Eurer und vor allem reptilers Hilfe funktioniert das Gästebuch nun....fast.

- es wird keine weitere Seite aufgerufen
- alle Meldungen kommen über javascript:alert() (wer Javascript deaktiviert und kein Flash-Plugin installiert hat, ist meiner Seite eh' nicht wert:-))

Leider ergibt sich im Bereich Spam-Schutz ein kleines Problem. Drückt der User auf Refresh postet das Script nochmal und nochmal und nochmal.

Ok, ich merke mir die IP Adresse und lasse den User eine gewisse Zeit nicht nochmals was posten resp. in die DB eintragen. Trotzdem ist es unschön.

header("Location: ".$_SESSION['REQUEST_URI']) bringt nichts
unset($_POST) bringt ebenfalls nichts.

Es muss doch hier ein Rezept dafür geben. Kann mir jemand auf die Sprünge helfen?

Eine zweite Unschönheit ist, dass Firefox dermassen grottenlangsam im Seitenaufbau ist, dass meine Flash-Komponenten nicht angezeigt werden, bis das erste Javascript alert() ausgeführt wird. Dann habe ich ein PopUp vor einer halb aufgebauten Seite. IE (muss auch mal gesagt werden) verarbeitet hier alles richtig.
Gibt es irgend eine Möglichkeit die Javascript Ausführung so lange aufzuhalten, bis die gesamte Seite vollständig geladen ist?
 
Wenn Firefox nicht korrekt darstellt oder langsamer arbeitet, wirst du in den meisten Fällen HTML Code produziert haben, der nicht valide ist. Der Internet Explorer ist da leider so großzügig und interpretiert ein wenig frei Schnauze rum und meist kommt dann das raus, was der Webmaster sich vorgestellt hat. Leider fördert das nicht gerade sauberen HTML-Stil.

Zum Spamschutz ... Nunja, du könntest z.B. mit dem Eintragen-Formular nicht direkt auf die Gästebuchseite verweisen, sondern auf eine Seite, die lediglich das Eintragen in die Datenbank vornimmt und diese per HTML Metarefresh nach 0 Sekunden zurück aufs Gästebuch umleiten lassen. Dann hast du zwar ein kurzes weisses (oder andersfarbig, jenachdem wie du die Seite gestaltest) "Blitzen" drin, bevor wieder das Gästebuch lädt, aber das F5 Problem wäre gelöst.

Nichts desto trotz würde ich auf eine normale Spamprotection unter keinen Umständen verzichten.
 
Tim Comanns hat gesagt.:
Wenn Firefox nicht korrekt darstellt oder langsamer arbeitet, wirst du in den meisten Fällen HTML Code produziert haben, der nicht valide ist.

Das möchte ich fast ausschliessen. Zumindest liefert mir die Code Überprüfung keinen Hinweis darauf. Firefox ist mein bevorzugter Browser, aber er ist nicht der schnellste.

Zum zweiten Punkt. Das wäre eine Möglichkeit, aber ich habe jetzt extra alles in eine Seite gepackt. Da ich die IP und den Eintrag Timestamp speichere, kann ich verhindern, dass der selbe User in einer gewissen Zeitspanne nochmals postet. Dies kostet aber jedesmal einen DB-Zugriff.
 
Zurück