[PHP] Shoutbox
-
Ich hab eine Shoutbox im Internet gefunden. Dabei ist der erste Eintrag ganz oben und das Formular zum Eingeben ist ganz unten.
Ich wollte das nun ändern, damit das Formular zur Eingabe oben ist und der erste Shout ganz unten.
Weiß aber leider nich genau wie ich den Code abändern muss. Habs schon einige Male probiert, aber immer nicht mit dem erwünschten Ergebnis.
Code ist der:<?php // // Speichervorgang // $logfile = "shouts.txt"; // Datenbank, in "shouts.txt" werden die Einträge gespeichert if(isset($HTTP_POST_VARS['name']) && isset($HTTP_POST_VARS['text'])) { $HTTP_POST_VARS['name'] = str_replace('||', '||', stripslashes($HTTP_POST_VARS['name'])); // die ||-Zeichen werden durch die HTML-Zeichen ausgetauscht und backslashes () werden entfernt $HTTP_POST_VARS['text'] = str_replace('||', '||', stripslashes($HTTP_POST_VARS['text'])); $fp = fopen($logfile, "a+"); // die Logfile wird geöffnet zum beschreiben flock($fp, 2); // die Logfile wird abgeriegelt $shout = fwrite($fp, $HTTP_POST_VARS['name'].'||'.$HTTP_POST_VARS['text']."\n"); // der Neue Eintrag wird ans Ende angehängt flock($fp, 3); // die Logfile wird wieder entriegelt fclose($fp); // Datei wird geschlossen if($shout) { header("Location: ".$HTTP_SERVER_VARS['PHP_SELF']); } // Weiterleitung } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Shoutbox</title> </head> <?php // // Ausgabe der Einträge // $logfile = "shouts.txt"; // Datenbank, in "shouts.txt" werden die Einträge gespeichert $amount = 100; // Anzahl der zu zeigenden Einträge $data = @file($logfile); // Einträge werden in ein Array eingelesen $dbamount = count($data); // Einträge werden gezählt for($i=$dbamount-$amount; $i<$dbamount; $i++) { if(trim($data[$i])!="") { $splittet = explode('||', $data[$i]); echo "<table width='150px' border='1px' bordercolor='#006600'>"; echo "<tr><td><b>". htmlspecialchars($splittet[0]) .":</b><br>". htmlspecialchars($splittet[1]) ."</td></tr>"; // HTML-Syntax wird entfernt echo "</table>"; } } ?> <body bgcolor="#C0C0C0" style="text-align: center"> <form method="post" action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>"> <input type="text" name="name" value="Name"><br> <input type="text" name="text" value="Text"><br> <input type="submit" value="Senden"> </form> </body> </html>
Hoffe einer von euch weiß, was ich ändern muss.
MFG
-
Ohne es getestet zu haben, würde ich sagen, so:
<?php // // Speichervorgang // $logfile = "shouts.txt"; // Datenbank, in "shouts.txt" werden die Einträge gespeichert if(isset($HTTP_POST_VARS['name']) && isset($HTTP_POST_VARS['text'])) { // die ||-Zeichen werden durch die HTML-Zeichen ausgetauscht // und backslashes () werden entfernt $HTTP_POST_VARS['name'] = str_replace('||', '||', stripslashes($HTTP_POST_VARS['name'])); $HTTP_POST_VARS['text'] = str_replace('||', '||', stripslashes($HTTP_POST_VARS['text'])); $fp = fopen($logfile, "a+"); // die Logfile wird geöffnet zum beschreiben flock($fp, 2); // die Logfile wird abgeriegelt $shout = fwrite($fp, $HTTP_POST_VARS['name'].'||'.$HTTP_POST_VARS['text']."\n"); // der Neue Eintrag wird ans Ende angehängt flock($fp, 3); // die Logfile wird wieder entriegelt fclose($fp); // Datei wird geschlossen if($shout) { header("Location: ".$HTTP_SERVER_VARS['PHP_SELF']); } // Weiterleitung } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Shoutbox</title> </head> <body bgcolor="#C0C0C0" style="text-align: center"> <form method="post" action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>"> <input type="text" name="name" value="Name"><br> <input type="text" name="text" value="Text"><br> <input type="submit" value="Senden"> </form> <?php // // Ausgabe der Einträge // $logfile = "shouts.txt"; // Datenbank, in "shouts.txt" werden die Einträge gespeichert $amount = 100; // Anzahl der zu zeigenden Einträge $data = @file($logfile); // Einträge werden in ein Array eingelesen $dbamount = count($data); // Einträge werden gezählt for($i=$dbamount-$amount; $i<$dbamount; $i++) { if(trim($data[$i])!="") { $splittet = explode('||', $data[$i]); echo "<table width='150px' border='1px' bordercolor='#006600'>"; echo "<tr><td><b>". htmlspecialchars($splittet[0]) .":</b><br>". htmlspecialchars($splittet[1]) ."</td></tr>"; // HTML-Syntax wird entfernt echo "</table>"; } } ?> </body> </html>
Beachte aber bitte, dass diese Shoutbox eine ziemlich veraltete Technik verwendet (HTTP_POST_VARS, um nur ein Beispiel zu nennen), und nicht wirklich gegen Cross Site Scripting geschützt ist. Zudem wird die Datei, welche die Shoutboxeinträge speichert, nemals aufgeräumt, mithin also immer größer. Auch erfolgt keine Prüfung der Zeitintervalle, so dass jemand mit einem Massenangriff auf die Shoutbox problemlos deinen gesamten Webspace und Traffic verbrauchen kann! Du solltest dich dringend nach einer neuen Shoutbox umsehen, vom Einsatz dieser da rate ich dir dringendst ab!
-
Erstmal danke für die Antwort. Werd ich nacher mal testen, wenn ich von der Arbeit wieder zurück bin.
Diese Shoutbox hab ich auch erstmal nur eingeführt, um zu testen wie so die Resonanz ist. Ob sich dort Leute eintragen und wie das alles funktioniert.
Da ich diese Seite eh gerade umgestalte und alles neu scripte und so, wollte ich auch eine neue Shoutbox einfügen.
Danke auch für deine Hinweise auf die "Sicherheitslücken" in dieser Box. Kannst du mir denn eine Box empfehlen, die gegen solche Angriffe, wie du sie mir geschildert hast, geschützt ist?
Am besten nicht eine, wo ich mich bei einem Anbieter anmelden muss oder sowas, um eine zu bekommen.
Hoffe du hast ein paar gute Links zu ein paar guten Shoutboxen.
MFG