Shoutbox PHP/MySQL | stylisch anpassbar
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
code
date
datenbank
datum
eingabe
eintrag
email
form
message
nachricht
not
null
schleife
spalten
speichern
tabelle
text
verbindung
zeichen
-
Eine einfache, aber leistungsstarke shoutbox mit mysql datenbank verbindung
1.0 Die Datenbank
CREATE TABLE shoutbox (
id int(11) NOT NULL auto_increment,
message text NOT NULL,
author varchar(80) NOT NULL default '',
email varchar(50) NOT NULL default '',
date varchar(50) NOT NULL default '',
ip varchar(20) NOT NULL default '',
PRIMARY KEY (id))
Hier wird die MySQL Tabelle "shoutbox" erzeugt und in der werden dann die Eintr?ge wie: nachricht, author, email adresse des author, ip adresse, datum,..... gespeichert.
~sollte klar sein~
2.0 Das Script
2.1. Verbindungsdaten:
<?php
$db_host = "localhost";
$db_user = "username";
$db_password = "password";
$db_name = "database";
?>
Hier werden Variablen definiert, die dann f?r die Verbindung zur MySQL Datenbank wichtig sind, denn ohne eine Verbindung, kann man keine gespeicherten Daten abrufen
2.2. ?berpr?fen ob der Post korrekt ist:
<?
if($_POST['submit'])
{
if(!$_POST['author']) {
echo "!Error! - Es wurde kein Name eingetragen -";
die;
}
if(!$_POST['email']) {
echo "Error! - Es wurde keine Email Adresse eingetragen -";
die;
}
if(!$_POST['message']) {
echo "Error! - Es wurde keine Nachricht eingetragen -";
die;
}
?>
Ganz einfach. Es wird ?berpr?ft, ob alle Felder ausgef?hrt sind.
Wird ein z.b. der Name nicht eingetragen so erscheint die Nachricht:
!Error! - Es wurde kein Name eingetragen, ansonsten geht der code weiter...
2.3. HTML Tags deaktivieren:
$message = strip_tags($_POST['message'], '');
$email = strip_tags($_POST['email'], '');
$author = strip_tags($_POST['author'], '');
Dieser kleine aber feine Code bewirkt, dass die HTML Tags (urls, scripts) deaktiviert werden und normal, also als text ausgegeben werden. So verhindert man, das Bilder oder textareas oder der gleichen in der shoutbox auftauchen.
2.4. L?nge der Eintr?ge ?berpr?fen:
$message_length = strlen ($message);
$author_length = strlen ($author);
if ($message_length > 150) {
echo "Error - Deine Nachricht muss weniger als 150 Zeichen haben -";
die;
}
if ($author_length > 150) {
echo "Error - Dein Name muss weniger als 150 Zeichen haben -";
die;
}
Damit die Shoutbox nicht mit Romanen ?berfpllt wird, hab ich eine 150 Zeichen Grenze "entworfen". Alles, was ?ber 150 Zeichen hat, wird nicht in die MySQL Datenbank gespeichert, sondern es kommen die jeweiligen Fehlermeldungen. Zum Beispiel: Der Name hat 200 Zeichen: Error - Dein Name muss weniger als 150 Zeichen haben -
3.0 In die Datenbank speichern
3.1. Verbindung zur Datenbank herstellen und speichern:
mysql_connect($db_host,$db_user,$db_password) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error());
$date = date("h:i A ds M");
$query = "insert into shoutbox (message, author, email, date, ip)
VALUES ('$message','$author','$email','$date','$_SERVER[REMOTE_ADDR]')";
mysql_query($query);
mysql_close();
echo "Eintrag wurde gepostet!";
}else{
Hat der Code alles ?berpr?ft und sind alle Eintr?ge OK, dann wird es in der Datenbank gepeichert. Hier werden die Variablen, die ich ganz am Anfang zugewiesen habe (localhost, username,....).
mysql_connect($db_host,$db_user,$db_password) or die (mysql_error());
Dies Verbindet dich mit der Datenbank und
$query = "insert into shoutbox (message, author, email, date, ip)
VALUES ('$message','$author','$email','$date','$_SERVER[REMOTE_ADDR]')";
hier werden dann die Eintr?ge in die jeweiligen MySQL Spalten gespeichert.
3.2. Eintr?ge anzeigen:
mysql_connect($db_host,$db_user,$db_password) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error());
$query = "SELECT message, author, email, date, ip
FROM shoutbox order by id DESC LIMIT 10";
$result = mysql_query($query);
while($row=mysql_fetch_array($result))
{
?>
<table width="40%" border="0">
<tr>
<td width="40%">von: <?print $row['author'];?></td>
<td width="60%">am: <?print $row['date'];?></td>
</tr>
<tr>
<td colspan="2"><?print $row['message'];?></td>
</tr>
</table>
Um dann auch die Eintr?ge zu sehen, verbinden wir nus erneut mit der Datenbank und f?gen dann der Variable row die mysql_fetch_array Funktion hinzu, damit dir jeweiligen Daten, von den Spalten der MySQL Tabelle ausgelesen werden k?nnen. Damit man die richtigen Daten hat, wird $row['author'] <---- hier gesagt, dass der Datensatz "Author" ausgegeben soll. Da es eine While Schleife ist, wird das so lange gemacht, bis alle Daten ausgegben sind.
4.0 Eintrags Form
<form method=post action="shoutbox.php">
<table width="40%" border="0">
<tr>
<td width="40%">Name: <input type="text" name="author"></td>
<td width="60%">eMail: <input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2">Nachricht: <input type="text" name="message"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit"></td>
</tr>
</table>
</form>
Das ist nur die Eingabe Form. Name, Email und die Nachricht tr?gt man hier ein.
5.0 Script Abschluss
<?
}
?>
Ich habe oben noch die While Schleife offen, da die Eingabe Form auch unter dem letzten Eintrage angezeigt werden soll, und hier wird das komplette script/while Schleife geschlossen.
=============================================
Update - 26.7.2003
Schreibfehler korrigiert
=============================================
Update - 27.7.2003
Erkl?rungen
=============================================
Man k?nnte noch einen kleinen code hinzuf?gen, der bewirkt, dass wenn eine IP Adresse bereits vorhanden ist, die gleiche nicht mehr f?r Eintr?ge befugt ist, oder dass eine IP Adresse nur inerhalb von 10min einen Eintrag machen kann.
Aber das muss ich noch machen.
Ahcja f?r alle: Das ist mein zweites Tut, darum ist es nicht so professionell
So das wars jetzt aber!
Ich hoffe das Script ist einfach zu verstehen und es gef?llt euch!
euer Gheddo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dieses Thema wurde mit folgender Begr?ndung von kenny197902 geschlossen:
Naja... nochmals:
Ist zwar Nett, mal den ein oder anderen Tut hier rein zu posten, aber dazu gibts eigentlich keine Diskussionsgrundlage... Hoffe du verstehst mich!
(Dies ist eine automatische Antwort durch das System). -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage