PHP-Code durch Link ausführen

RPG-Dreamer

Ritter
Mitglied seit
20.10.2002
Beiträge
24
Hallo Leute!

War vor ner Zeit schon mal mit 3 fragen hier, und heute geht's mit mir als eingefleischtem PHP-Neuling weiter!

Ich habe auf meiner Seite einen Bereich für kreative Produkte meiner Besucher, wie eigene Bilder, Texte, Lieder etc. Nun möchte ich für jeden Beitrag unten eine kleine Textbox machen, in die jeder Betrachter seinen Kommentar einfügen kann. Dann klickt der auf "Submit" und das ganze erscheint unter (oder über) dem kreativen Beitrag...

Das System für das Zeugs hab ich ja schon, basiert praktisch auf einer Shout-Box. Hier mal der php-Code, der ablaufen sollte, wenn man "Submit" drückt:


[code:1]$datei=fopen("shout.txt", "a+");
fwrite($datei, $message);
fclose($datei);[/code:1]

Ist ja eigentlich auch nichts weiter dabei, die Datei "shout.txt" wird geöffnet, das Zeugs aus dem Textfeld "message" hineingeschrieben, und die Datei geschlossen. Das ganze könnte ich dann über

[code:1]include("shout.txt");[/code:1]

einfügen. Nur: Wie kriege ich nun php-Code dazu, dass er sich ausführt, wenn man auf "Submit" klickt? Ich habs schon mit einer extra-Seite "shout.php" probiert, auf der oben genannter Code steht, und der die dann zurück nach der Kreativ.Seite führt, aber dann müsste ich doch die Variablen der Textfelder in der URL übergeben, oder? Das wär mir eigentlich nicht so lieb, zumal ich weiß, dass es anders laufen kann...
 

MrT

Ehrenuser
Mitglied seit
10.11.2001
Beiträge
2.088
1) mit global $variable kannst du die übertragenen Daten empfangen, zu 2:
http://selfhtml.teamone.de/html/formulare/definieren.htm
 
OP
OP
R

RPG-Dreamer

Ritter
Mitglied seit
20.10.2002
Beiträge
24
Könntest du das ein bisschen näher erläutern für einen PHP-Leisetreter wie mich? Wie muss ich das "global" einbauen?

Und hab ich eigentlich zwei Fragen gestellt? :versteh: Wie man Formulare definiert weiß ich ja, ist ja auch schon alles fertig, aber am liebsten wär mit ne Lösung bei der ich den Code direkt durch einen Button auf der Seite ausführen lassen kann, ohne dass ich ne extra Seite brauch...
 

Bender

Halbgott
Mitglied seit
28.11.2001
Beiträge
323
Das müsste dann so aussehen:
[code:1]
<?PHP
global $mode;
if ($mode=='') {
?>
Hier fehlt das Formular
'method' sollte 'post' sein, sonst wird es in der Adresszeile eng.
Außerdem sollte das Forumular folgenden HTML-Code enthalten:
<input type="hidden" name="mode" value="write">
Beispiel für das Textfeld:
<textarea rows="25" cols="25" name="message">
Hier kann auch die shout.txt includet werden:
<?PHP
include("shout.txt");
}
elseif ($mode==write) {
global $message;
$datei=fopen("shout.txt", "a+");
fwrite($datei, $message);
fclose($datei);
?>
Hier kommt der ganze Style-Müll hin
Das ganze Drunherum, eben...
<?PHP
include("shout.txt");
}
?>
[/code:1]

Wichtig ist, dass in dem Formularfeld, das die Nachricht enthält, name="message" ist!
 

Randar

Mächtiger Krieger
Mitglied seit
04.02.2003
Beiträge
149
Was den das. Wieso ne global var?
Das ist ganz schlechter Stil und wieso benutzt du das eigentlich?
Mit post versendete Daten ruft man auch wieder mit post auf- Sprich $_POST["message"]
So müsste das write auchsehen:
fwrite($datei, $_POST["message"]);

edit:

das selbe gilt für $mode....
 

Bender

Halbgott
Mitglied seit
28.11.2001
Beiträge
323
Wusste ich noch gar nicht...
Ich habs so aus dem PHP-Handbuch gelernt...
Wieso schlechter Stil?
 

Randar

Mächtiger Krieger
Mitglied seit
04.02.2003
Beiträge
149
Naja globale Variablen nimmt man nicht, wegen den Gültigkeitsbereichen.
Global ist immer Gültig, wie man sich denken kann, doch sowas gibt leicht Probleme mit Klassen und funktionen.
In nem kleinen Skript ist das nicht so dramatisch, aber wenn man mal ein größeres Projekt hat...
 
OP
OP
R

RPG-Dreamer

Ritter
Mitglied seit
20.10.2002
Beiträge
24
Juhuuu! Danke für die Antwort, Leute! Ich dachte zuerst, es würde gar keiner mehr schreiben, aber ihr seid meine Rettung! Dankedankedanke!

Ich hab's jetzt mit $_POST["comment"] gemacht, das funktioniert echt gut. Jetzt muss ich das ganze nur noch in guten Style verpacken, so dass es vernünftig und lesbar in die Seite includet wird und dann hab ich's geschafft!

Danke nochmal, an dem Problem sitz ich jetzt schon Wochen und hatte es mitlerweile aufgegeben... Ihr werdet dann natürlich in den Credits für den Commentbereich erwähnt!

Danke!
 

Bender

Halbgott
Mitglied seit
28.11.2001
Beiträge
323
Bidde, bidde....
Will jetzt das Script selber mal Testen...
Wenn du uns (oder mir, je nachdem) noh die Adresse sagst, wär alles perfekt...
 
OP
OP
R

RPG-Dreamer

Ritter
Mitglied seit
20.10.2002
Beiträge
24
Die Adresse meines Comment-Scripts? Kann man das Script nennen?

Inzwischen gibt jetzt ein neues Problem mit dem Code. Und zwar hatte ich ja oben schon gesagt:

Jetzt muss ich das ganze nur noch in guten Style verpacken, so dass es vernünftig und lesbar in die Seite includet wird und dann hab ich's geschafft!
Das ist aber leichter als getan. Ich möchte nämlich per fwrite-Befehl den HTML-Code, der um den Usernamen und den Kommentar herum steht, in die Datei schreiben lassen. Wie bekomme nun aber Code wie <table width="100%"><tr><td class="blue"> usw. in die Datei geschrieben, das ganze scheitert ja im Prinzip an den Anführungszeichen...

Das ganze sollte also nachher so in der Art aussehen:

[code:1]fwrite($datei, "<table width="100%"><tr><td>Eingetragen von".$_POST["user]."</td><td>Kommentar:".$_POST["comment"]."</tr></table>[/code:1]

Nur so in der Art... Aber das klappt ja nicht, wegen den "s... Mit HTML-Codierung, also &quot; statt " gehts auch nicht. Hmpf...

Was tun?
 

Randar

Mächtiger Krieger
Mitglied seit
04.02.2003
Beiträge
149
Als erstes die " musst du escapen also so \" dann ists schonmal nen prob weniger
 
OP
OP
R

RPG-Dreamer

Ritter
Mitglied seit
20.10.2002
Beiträge
24
Randar schrieb:
Als erstes die " musst du escapen also so \" dann ists schonmal nen prob weniger
Ja, aber wenn ich das so in die "shout.txt" schreiben lasse, wird ja nachher, beim Includen, auch \" ausgegeben, oder?

Oder muss ich da noch mal den Befehl "stripslashes" anwenden?
 

Bender

Halbgott
Mitglied seit
28.11.2001
Beiträge
323
da heisst es:
ausprobieren...
bei mir gibt er das dann normal aus...
 
Oben