Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen
Thema geschlossen (topic locked)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

...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 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 :o;)
Mal gucken, wie sich die Webmaster hier dazu äußern :)

Mario 8)

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

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 8)
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.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Gut, dass du es sagst, Jan! Schau nochmal ins Skript rein, dort wo die Ersetzungen gemacht werden. Fällt dir was auf?
Wir sollten \r\n, \r und \n getrennt behandeln, damit das auch auf jeder Plattform funzt.

greez 8)
JoSsiF

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*

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 8)
JoSsiF

Zitat
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.
« Letzte Änderung: 18.05.05, 12:34:32 von Jan190480 »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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[&#39;empfemail02&#39;]."\r\n";
$daten .= "Name: ".$_REQUEST[&#39;absender_name&#39;]."\r\n";
$daten .= "alter: ".$_REQUEST[&#39;absalter&#39;]."\r\n";
$daten .= "email: ".$_REQUEST[&#39;absmail&#39;]."\r\n";
$daten .= "Homepage: ".$_REQUEST[&#39;absender_hp&#39;]."\r\n";
$daten .= "Mitteilung: ".$_REQUEST[&#39;mitteilung&#39;]."\r\n";

mail(".$_REQUEST[&#39;empfemail02&#39;]""Gästebucheintrag"$daten
"From: ".$_REQUEST[&#39;absmail&#39;]."\r\n" . "Reply-To: 
".$_REQUEST[&#39;absmail&#39;]."\r\n" ."X-MailerPHP/" . phpversion());

echo &#39;<meta http-equiv="
refresh" content="0URL=kontakt.php">&#39;;
?>

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 ?
« Letzte Änderung: 09.07.05, 21:59:48 von nico »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

In der Variable steht ein String drin. Deswegen musst du die Anführungszeichen weglassen (also in der mail()-Funktion). Und den Punkt auch ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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&auml;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&auml;stebuchs</h1>

<!-- EINGABE TEIL //-->
<form action="<?=$PHP_SELF?>" method="POST">
<table class="GBtable">
  <tr class="GBhead">
    <td colspan="2">Hier ins G&auml;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'>|<&nbsp;</a>
    <a href='<?=$PHP_SELF?>?page=<?=($page - 1)?>'><&nbsp;</a>
<?
}
for ($i = 1; $i <= $pages; $i++)
{
  if ($i == $page)
  {
  ?>
    <?=$i?>&nbsp;
  <?
  }
  else
  {
  ?>
    <a href='<?=$PHP_SELF?>?page=<?=$i?>'><?=$i?>&nbsp;</a>
  <?
  }
}
if($page < $pages)
{
?>
    <a href='<?=$PHP_SELF?>?page=<?=($page + 1)?>'>>&nbsp;</a>
    <a href='<?=$PHP_SELF?>?page=<?=$pages?>'>>|</a>
<?
}
?>
<br>Es sind <b><?=$max?></b> Eintr&auml;ge im G&auml;stebuch</p>
</center>

</body>
</html>

greez 8)
JoSsiF
« Letzte Änderung: 09.07.05, 22:05:39 von nico »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi ;)

Ich finde das Script ja wirklich klasse, sowas muss ja irgendwie honoriert werden.. Habe deswegen mal wieder zugeschlagen ( ;D) 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..

« Letzte Änderung: 18.05.05, 16:37:05 von Der olle Schwoebel »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Schöne Sache das! :D

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 8)
JoSsiF


« HOMEPAGE VORLAGENAccount »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Undo
"Undo" steht für "Rückgängig machen": eine häufig genutzte Funktion n vielen Programmen und Apps, die es ermöglicht, kürzlich durchgefü...

AppleScript
AppleScript ist eine Programmiersprache von Apple für Skripte und Programme auf Systemebene. Im Gegensatz zu den Unix-Shellscripts, die seit OS X ebenfalls mögl...

Javascript
JavaScript ist eine weit verbreitete Skriptsprache, die ursprünglich von Netscape für das DOM-Scripting für Webseiten entwickelt wurde. Sie hat sich seitde...