...und genau weil du diesen Thread eröffnet hast (und weil sich anderweitig Anfragen gehäuft haben), haben wir in einer lustigen Gemeinschaftsarbeit ein funktionierendes Gästebuch gebaut.
Kopiere dir doch einfach eines der letzten umfangreichen Quellcode-Listings, und du hast ein top funktionierendes Gästebuch, was du nur noch in Sachen Stylesheets anpassen musst.
greez + und eine geruhsame Nacht
JoSsiF
Jo, ist doch ein super Script geworden. Sollte man überlegen, ob man das nicht (nur den Quelltext und bissel Kommentar) hier als PIN festmachen kann oder irgendwo in der Rubrik Webmaster mit aufnimmt. Wäre Schade, wenns immer weiter nach hinten rutscht um irgenwann rauszufliegen
Mal gucken, wie sich die Webmaster hier dazu äußern
Mario
Also mir gehts halt ums verstehen ich würde das halt gerne auch eventuell auf andere Scripte anwenden können! Klar könnte ich mir das Ding hier einfach schnell kopieren, aber ich will ja was lernen bzw. etwas nachvollziehen können!!! Es geht ja nur um den Zeilenumbruch!!!
Gruß Syrus
Das entstandene Gästebuch ist eigentlich relativ gut auskommentiert, aber vielleicht können wir auch da nochmal nachlegen. Das sollte dann schonmal ein guter Anfang zum Nachvollziehen und Lernen sein
Wenn dir das mit dem Zeilenumbruch jetzt schlaflose Nächte bereitet, dann erkläre uns nochmal bitte genau, worum's geht. Vielleicht können wir dir die Lösung deines Problems anhand des neuen Skripts verständlich machen.
greez
JoSsiF
Zeileumbrüche in php machste entweder mit "\n" und wenn das nicht funktioniert mit "\r\n"...ich will jetzt nix falsches sagen, aber soweit ich weiß hängt das damit zusammt was auf deinem server läuft (windows oder unix) nur welchers system jetzt welchen umbruch unterstützt und ob unix beide unterstützt kann ich jetzt nicht sagen.
Das dachte ich mir auch schon und außerdem bestätigt das schonmal das ich nix falsches gesagt hab ;-)
wir sollten sowieso mal aus dem code-chaos das richtig script raussuchen und irgendwo hinpacken wo es dann jeder finden kann der ein Gästebuch sucht. und btw sollte jeder der was dran gemacht hat sich inklusive der www.computerhilfen.de URL im script verewigen *g*
Mein Vorschlag dazu:
Als Basis für weitere Arbeiten nehmen wir das Listing aus Antwort #34 oder aus Antwort #38 (wobei #38 die Überarbeitung vom ollen Schwoebel is, wo das Formular unterhalb der Einträge generiert wird - würde gerne mal eure Meinungen dazu hören).
Daran müsste dann mindestens noch folgendes gemacht werden:
- das Absatzproblem muss noch sauber gelöst werden
- der Quellcode nochmal einer letzten Säuberung unterzogen werden
- den Quellcode vollständig auskommentieren
- alles, was mit Konfiguration zu tun hat, in einem eigenen Block (z.B. zu Beginn des Skripts) definieren
- Hinweise auf computerhilfen.de und die Bearbeiter reinhacken *g*
- die Admins davon überzeugen, dass das Skript irgendwo zentral als Muster abgelegt wird
Bitte eure Ergänzungs- und/oder Änderungsvorschläge noch beisteuern.
greez
JoSsiF
Zitat von: JoSsiF- der Quellcode nochmal einer letzten Säuberung unterzogen werden
genau. ich hab damals extra zur ausgabe der HTML-teile auf die ausgabe durch echo verzichtet um php von html zu trennen. totzdem hat sich unten wieder jede menge Echo-Krempel eingeschlischen.
ansonsten fällt mir jetzt kein weitere punkt ein, außer vielleicht das sich 1 (in worten : EINER) das script vornimmt und die entsprechenden änderungen macht, sonst haben wir nachher wieder 5 verschiedene ;-)
Zusatz: um deine Frage zu beantworten, nein, die eingabemaske unterhalb der einträge find ich nicht so gut.
OK folgendes:
Wenn also keiner etwas Grundlegendes dagegen hat, dann nehmen wir jetzt das Listing aus Antwort #34 als Basis. Ich würde mir das Script nochmal vornehmen und die besagten Arbeiten durchführen.
Damit jeder der Beteiligten dann nochmal drüberschauen kann, ist es vielleicht sinnvoll, den jeweiligen Zwischenstand per PM zu verschicken, damit hier der Thread nicht unnötig zugeballert wird.
@Jan: könntest du dir evtl. was einfallen lassen bzgl. Autorenhinweise etc.? Also mal was schreiben und mir zuschicken, dann knall ich das mit ins Script rein.
greez
JoSsiF
Noch ne klitzekleine Frage :
Habe das mit dem Mailer jetzt hinbekommen, schaut dann so aus, der Code :
<td><small>- <span style="font-family: verdana;">
<a href="kontakt.php?empfemail02='<?=urlencode($Eintrag[3])?>'"><i>E-Mail</i></a>
</span> - </small></td>
Funzt auch soweit.. In der "kontakt.php" funktionert auhc alles... Nur komm ich jetzt nicht ganz weiter in "mail.php".. Anstatt der emailadresse soll ja jetzt die Variable einfügen :
<?php
#Datei mail.php
$daten .= "Empfänger: ".$_REQUEST['empfemail02']."\r\n";
$daten .= "Name: ".$_REQUEST['absender_name']."\r\n";
$daten .= "alter: ".$_REQUEST['absalter']."\r\n";
$daten .= "email: ".$_REQUEST['absmail']."\r\n";
$daten .= "Homepage: ".$_REQUEST['absender_hp']."\r\n";
$daten .= "Mitteilung: ".$_REQUEST['mitteilung']."\r\n";
mail(".$_REQUEST['empfemail02']", "Gästebucheintrag", $daten,
"From: ".$_REQUEST['absmail']."\r\n" . "Reply-To:
".$_REQUEST['absmail']."\r\n" ."X-Mailer: PHP/" . phpversion());
echo '<meta http-equiv="refresh" content="0; URL=kontakt.php">';
?>
Ich habe in Zeile 11 vorher nochmal ne andere "Version" gehabt und zwar :
mail($daten,".$_REQUEST['empfemail02']." . "From: " .$_REQUEST['absmail']."\r\n" .
"Reply-To: ".$_REQUEST['absmail']."\r\n" ."X-Mailer: PHP/" . phpversion());
Dabei habe ich alles ausprobiert, mit Punkt, ohne Punkt, nur Punkt vorne (also bei $_REQUEST['empfemail02'] ... Wie soll man das mit der Variable denn am Besten lösen ?
So, hier nochmal die vorläufige Endfassung des Gästebuchs:
<?
#######################################################################
## Dieses Gästebuch wurde in einer Geminschaftsarbeit mehrerer ##
## Mitglieder von computerhilfen.de entwickelt. Es soll all jenen, ##
## die sich immer wieder fragen: "Gästebuch? Wie geht das?" zeigen, ##
## wie man ein einfaches Gästebuch erstellt. ##
## Es ist auch nicht das ultimative Gästebuch, sondern nur ein Wink ##
## in die richtige Richtung. Im Detail waren daran beteiligt: ##
## ##
## Erster Entwurf und Grundfunktionen : Jan190480 ##
## Optimierung des Lese- und Schreibzugriffs : JoSsiF, Mario ##
## Verteilung der Einträge auf mehrere Sieten: Spawn ##
## Stylesheet-Implementierung : Der olle Schwoebel ##
## ##
## Viel Spaß mit dem Gästebuch. Fragen können gerne ##
## direkt an die einzelnen Mitlieder gerichtet werden ##
## oder im Forum gepostet werden. ##
## ##
## 2005 | computerhilfen.de ##
## ##
#######################################################################
## Der PHP-Teil. Ohne PHP (oder einer anderen serverseitigen ##
## Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum ##
## Laufen bekommen. ##
### Konfiguration (auch wenn's hier noch nicht ganz so viel zu konfigurieren gibt *g*)
#########################
$ppp = 5; // Anzahl der Beiträge, die pro Seite ausgegeben werden sollen
$textfile = "myGB.txt"; // Name der Textdatei, in der die Einträge gespeichert werden
### Ende Konfiguration #################################
########################################################
/*
$page initialisieren (der Wert entspricht der aktuellen Seite der Gästebucheinträge)
Beim ersten Aufruf (keine Seite gewählt) wird diese auf 1 gesetzt
Die Variable wird immer aus dem superglobalen Array $_REQUEST[] herausgezogen,
um auch auf solchen Servern einen Wert zu erhalten, auf denen die PHP-Variable
'register_gobals' auf 'Off' gesetzt ist
*/
if (!$_REQUEST['page'])
{
$page = 1;
}
else
{
$page = $_REQUEST['page'];
}
// Script wird nur ausgeführt wenn der Benutzer auf "Eintragen" gedrückt hat
if ($_POST['submit'])
{
//Alles in eine Variable hintereinander schreiben
$GBeintrag = $_POST['myGBname']."|"; // der Name aus dem Formular
$GBeintrag .= $_POST['myGBhp']."|"; // die Website aus dem Formular
$GBeintrag .= $_POST['myGBmail']."|"; // die Mail-Adresse aus dem Formular
$GBeintrag .= date("d.m.y")."|"; // das Datum aus dem Formular, gleich formatiert
/*
Das Zeichen '|' wird als Trennzeichen in der Textdatei des Gästebuchs verwendet.
Falls jemand in der nachricht ein | verwendet hat, sollten wir das
ersetzen, da sonst beim auslesen Fehler auftauchen
*/
$_POST['myGBtext'] = str_replace("|", "<!strich!>", $_POST['myGBtext']);
// Zeilenumbrüche entfernen, da anhand dieser sonst die Trennung
// der Datensätze erfolgen würde
$_POST['myGBtext'] = str_replace("\r\n", "<!umbruch!>", $_POST['myGBtext']);
$_POST['myGBtext'] = str_replace("\r", "<!umbruch!>", $_POST['myGBtext']);
$_POST['myGBtext'] = str_replace("\n", "<!umbruch!>", $_POST['myGBtext']);
// Umbruch als Trennzeichen am Ende des Datensatzes hinzufügen
$GBeintrag .= $_POST['myGBtext']."\r\n";
/*
Den Eintrag in die Textdatei schreiben und dabei vor
gleichzeitigem Mehrfachzugriff schützen
*/
$openfile = fopen($textfile, "a");
flock($openfile, 2);
fwrite($openfile, $GBeintrag);
flock($openfile, 3);
fclose($openfile);
}
?>
<!--
Hier der Allgemein bekannte HTML-Teil welcher
das Aussehen der Seite und damit das des GBs bestimmt
Hier kann man nach belieben alles anpassen bis auf
Bestehen bleiben sollten jedoch die integrierten
PHP-Anweisungen welche sich zwischen <? //und ?> befinden.
Sebstverständlich können diese natürlich an eine andere Stelle
verfrachtet werden.
//-->
<!-- KOPF DATEN //-->
<html>
<head>
<title>Mein Gästebuch</title>
<style type="text/css">
body {background-color: #FFFFFF;}
.GBtable {border: 1px solid #000000;
border-collapse: collapse;
width: 400px;}
.GBhead {background-color: #0000FF;
color: #FFFFFF;
font-weight: bold;}
.GBinput {background-color: #00FFFF;
border: 1px solid #000000;}
.GBcontent {background-color: #FFFFFF;}
a.GBlink:link, a.GBlink:visited, a.GBlink:hover, a.GBlink:active {
text-decoration: none;
color: #FFFFFF;
}
</style>
</head>
<body>
<center>
<h1>Titel des Gästebuchs</h1>
<!-- EINGABE TEIL //-->
<form action="<?=$PHP_SELF?>" method="POST">
<table class="GBtable">
<tr class="GBhead">
<td colspan="2">Hier ins Gästebuch eintragen</td>
</tr>
<tr>
<td>Dein Name</td>
<td><input class="GBinput" name="myGBname" size="30"></td>
</tr>
<tr>
<td>Deine Homepage</td>
<td><input class="GBinput" name="myGBhp" size="30" value="http://"></td>
</tr>
<tr>
<td>Deine Email</td>
<td><input class="GBinput" name="myGBmail" size="30"></td>
</tr>
<tr>
<td colspan="2" align="center">Deine Nachricht</td>
</tr>
<tr>
<td colspan="2" align="center"><textarea class="GBinput" cols="45" rows="10"
name="myGBtext"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="Eintragen">
</td>
</tr>
</form>
</table>
<br><br>
<!-- EINTRÄGE ANZEIGEN -->
<?
/*
Hier das Gästebuch öffnen und alle Einträge in ein Array einlesen;
Fehlermeldung bei noch nicht vorhandener Datei wird unterdrückt
und die Datei automatisch angelegt
*/
$eintraege = @file($textfile);
/*
Anzeigen der Einträge
Solange Einträge vorhanden sind, wird eine Schleife durchlaufen
von hinten nach vorne (also neueste zuerst)
Hier wird gleichzeitig die Logik für die dynamische Generierung
der Seitenlinks erzeugt
*/
$start = (count($eintraege) - 1) - $ppp * ($page - 1);
$stop = (count($eintraege) - 1) - $ppp * ($page - 1) - $ppp + 1;
if ($start > (count($eintraege) - 1))
{
$start = count($eintraege) - 1;
}
if ($stop < 0)
{
$stop = 0;
}
for ($a = $start; $a >= $stop; $a--)
{
// Die einzelnen Teile des Eintrags extrahieren
$Eintrag = explode("|", $eintraege[$a]);
/*
Dann noch die Sonderstrings wie "<!umbruch!>" und "<!strich!>" wieder
in die ursprünglichen zeichen ersetzen
*/
$Eintrag[4] = str_replace("<!umbruch!>", "\r\n", $Eintrag[4]);
$Eintrag[4] = str_replace("<!strich!>", "|", $Eintrag[4]);
//und jetzt alles in Tabellen ausgeben
?>
<table class="GBtable">
<tr class="GBhead">
<td>Von : <?=$Eintrag[0]?></td>
<td>am : <?=$Eintrag[3]?></td>
<td><a class="GBlink" href="mailto:<?=$Eintrag[2]?>">Email</a></td>
<td><a class="GBlink" href="<?=$Eintrag[1]?>" target="_blank">Homepage</td>
</tr>
<tr>
<td colspan="4"><?=nl2br($Eintrag[4])?></td>
</tr>
</table>
<br>
<?
}
// $max gibt die Anzahl der Einträge an
$max = count($eintraege);
// jetzt noch fix die daraus resultierenden Seiten berechnen
if ($max == 0)
{
$pages = 1;
}
else
{
$pages = intval(($max - 1) / $ppp) + 1;
}
?>
<p align='center'>
<?
if ($page > 1)
{
?>
<a href='<?=$PHP_SELF?>?page=1'>|< </a>
<a href='<?=$PHP_SELF?>?page=<?=($page - 1)?>'>< </a>
<?
}
for ($i = 1; $i <= $pages; $i++)
{
if ($i == $page)
{
?>
<?=$i?>
<?
}
else
{
?>
<a href='<?=$PHP_SELF?>?page=<?=$i?>'><?=$i?> </a>
<?
}
}
if($page < $pages)
{
?>
<a href='<?=$PHP_SELF?>?page=<?=($page + 1)?>'>> </a>
<a href='<?=$PHP_SELF?>?page=<?=$pages?>'>>|</a>
<?
}
?>
<br>Es sind <b><?=$max?></b> Einträge im Gästebuch</p>
</center>
</body>
</html>
greez
JoSsiF
Hi
Ich finde das Script ja wirklich klasse, sowas muss ja irgendwie honoriert werden.. Habe deswegen mal wieder zugeschlagen ( ) und mal eine Seite dazu erstellt (so ähnlich wie die Barkeeperinfoseite)
Könnt euch das ganze ja mal anguggen (hoffe, dass ich die Scripts alle richtig übernommen habe ( ). Müsste man dann halt nur noch verlinken, wenn ihr/wir nico oder Maddin überzeugen können
http://bwddtclan.bw.funpic.de/Passwort/gaestebuch.html
Achja, sollten Änderungen auftreten im Quelltext, dann lässt sich das ganze natürlich noch ändern, ist jetzt halt nur mal, dass der Quellcode schonmal drinnen ist..
Schöne Sache das!
Kleine Korrektur: die Datei muss nicht zwingend index.php heißen. Kannst die auch anders nennen, ohne irgendwas umschreiben zu müssen. Denn es wird immer auf das eigene Dokument verlinkt (Stichwort $PHP_SELF), und damit haste dieses Problem umgangen
greez
JoSsiF
« HOMEPAGE VORLAGEN | Account » | ||