PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Anfänger braucht Hilfe beim Gästebuch ;) (http://www.selfphp.de/forum/showthread.php?t=13243)

Wayne 13.04.2006 22:38:33

Anfänger braucht Hilfe beim Gästebuch ;)
 
Also, erst mal hallo, bin neu hier ;)

Vorerst möchte ich einmal klarstellen, dass das Gästebuch nicht von mir selbtsgeschrieben ist (stammt von einer cd).
Ich möchte es etwas verändern bzw. erweitern. Ich möchte die Darstellung der Beiträge etwas verändern, aber ich weiß nicht, wo das genau steht, wie sie dargestellt werden. Außerdem hat es keine Blätterfunktion. Das ist natürlich nicht so gut, sonst hätte ich ja tausende Einträge auf einer Seite :)
Dazu sollten dann noch die Nummern der Einträge angezeigt werden (also der wievielter eintrag), aber das ist denke ich nicht so schwer oder?
Dann gibt es da noch ein Problem ;) Wenn es jetzt zB einen ziemlich langen Beitrag gibt, wird er in einer Zeile dargestellt. Das steht zwar in einer Tabelle, aber die verlängert sich dann.

Ihr fragt euch vielleicht, waru nich gleich ein neues Gästebuch? - Ich hab es jetzt schon so weit an meine Seite angepasst (und das war für mich schon eine Menge Arbeit [da Anfänger]) und jetzt weiß ich einfach nicht weiter. Außerdem gefält es mir :P



Hier mal die Codes:
Buch.php (das gästebuch):
PHP-Code:

<?php

$meldung
="
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'><br>- LEER -<br>
      <p><a href='buch_eintrag.php' class='contentlink'>Zur&uuml;ck</a></p>
    </td>
  </tr>
</table>
"
;

if (!@include(
"buch_inhalt.htm")) {
 echo 
$meldung;
}

?>


Wayne 13.04.2006 22:38:59

AW: Anfänger braucht Hilfe beim Gästebuch ;)
 
da kein platz mehr war, gehts hier weiter ;)
Buch_eintrag.php :
PHP-Code:

<table width="349" height="100" align="center">
    <
form method='post' action='buch_funktionen.php'><tr>
      <
td width="341" height="20" style="border-style:none;border-size:0.5px;border-color:#000000;background-color:#47A743"><div align="left"><span class="style17"> <strong>Eintragen</strong></span></div></td>
    </
tr>
    <
tr>
      <
td height="50" bgcolor="#DDDCDC" style="border-color:#000000;background-color:#DDDCDC; border: 1px dashed;border-top width: 0px;border-color:#47A743;"><table width='400' align='center' style="border: 0px dashed;border-color:#47A743">
        <
tr>
          <
td colspan='6' class='autor' height='10'><div align='right'></div></td>
        </
tr>
        <
tr>
          <
td valign='top' width='9'><div class='morelink'><span class="style17">&raquo;</span>&nbsp;</div></td>
          <
td valign='top' class='style17' width='36'>Name:*</td>
          <
td valign='top' class='blocksatz' width='190'><input type='text' name='fname' class='contentblack' size='30' maxlength='50' style="border-color:1px:#CCCCCC;background:#CCCCCC;color:#666666;">
          </
td>
          <
td valign='top' class='style17' width='6'>&raquo;</td>
          <
td valign='top' class='blocksatz' width='40'><span class="style17">Rubrik</span>:</td>
          <
td valign='top' class='blocksatz' width='91'><select name='fbetreff' class='contentblack' style="border-color:1px:#CCCCCC;background:#CCCCCC;color:#666666;">
              <
option value='Lob' selected>Lob</option>
              <
option value='Kritik'>Kritik</option>
              <
option value='Anregung'>Anregung</option>
              <
option value='Allgemein'>Allgemein</option>
            </
select>
          </
td>
        </
tr>
        <
tr>
          <
td valign='top' width='9'><div class='morelink'><span class="style17">&raquo;</span>&nbsp;</div></td>
          <
td valign='top' class='style17' width='36'>Email:*</td>
          <
td valign='top' class='blocksatz' colspan='4'><input type='text' name='femail' class='contentblack' size='30' maxlength='50' style="border-color:1px:#CCCCCC;background:#CCCCCC;color:#666666;">
          </
td>
        </
tr>
        <
tr>
          <
td valign='top' width='9'><div class='morelink'><span class="style17">&raquo;</span>&nbsp;</div></td>
          <
td valign='top' class='style17' width='36'>Inhalt:*</td>
          <
td valign='top' class='blocksatz' colspan='4'><textarea name='finhalt' class='contentblack' cols='30' rows='5' wrap='PHYSICAL' style="border-color:1px:#CCCCCC;background:#CCCCCC;color:#666666;"></textarea>
          </
td>
        </
tr>
        <
tr>
          <
td valign='top' width='9'><div class='morelink'><span class="style17">&raquo;</span>&nbsp;</div></td>
          <
td valign='top' class='style17' width='36'>Website: </td>
          <
td valign='top' class='blocksatz' colspan='4'><input type='text' name='fhome' class='contentblack' size='30' maxlength='50' style="border-color:1px:#CCCCCC;background:#CCCCCC;color:#666666;">
          </
td>
        </
tr>
        <
tr>
          <
td valign='top' width='9'><div class='morelink'>&nbsp;</div></td>
          <
td valign='top' class='blocksatz' width='36'>&nbsp;</td>
          <
td valign='top' class='blocksatz' colspan='4'><input type='submit' name='senden' value='senden' class='style17'>
              <
input type='reset' name='losch' value='L&ouml;schen' class='style17'>
          </
td>
        </
tr>
        <
tr>
          <
td height='10' colspan='6' class='autor'><div align="left"><span class="style17 style1">* = Pflichtfeld </span></div></td>
        </
tr>
      </
table>      
      </
td>
    </
tr></form>
  </
table>  
  <
div align="center"><a href='buch.php' class="contentlink style30">Beitr&auml;ge Lesen</a

Eigentlich unwichtig, ist ja nur das Formular, aber ich habs einfach mal dabei geschrieben.

Buch_funktionen.php :
PHP-Code:

<?php

//Stammen die Daten vom Formular?
if (isset($_POST["senden"])) {

//Textfeldeingaben Filtern
function daten_reiniger($inhalt) {
    if (!empty(
$inhalt)) {
        
//HTML- und PHP-Code entfernen.
        
$inhalt strip_tags($inhalt);
        
//Umlaute und Sonderzeichen in
        //HTML-Schreibweise umwandeln
        
$inhalt htmlspecialchars($inhalt);
        
//Entfernt überflüssige Zeichen
        //Anfang und Ende einer Zeichenkette
        
$inhalt trim($inhalt);
        
//Backslashes entfernen
        
$inhalt stripslashes($inhalt);
    }
return 
$inhalt;
}

//Schreibarbeit durch Umwandlung ersparen
foreach ($_POST as $key=>$element) {
    
//Dynamische Variablen erzeugen, wie g_fname, etc.
    //und die Eingaben Filtern
    
${"g_".$key} = daten_reiniger($element);
}

//Anfang - Prüfung
//Kein richtiger Name eingegeben
if(strlen($g_fname)<3){
$error_msg="Bitte geben Sie Ihren Namen an";
}

//Kein Eintrag vorgenommen
if(strlen($g_finhalt)<3){
$error_msg.="<br>Bitte geben Sie auch etwas in das Gästebuch ein.";
}

//Mailadresse korrekt angegeben - entsprechende Formatierung vornehmen
if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$g_femail)){
$format_femail="<a href=mailto:" $g_femail ">E-Mail</a>";
} else {
$error_msg.="<br>Fehlerhafte E-mail!<br>";
}

//Es wurde auch eine Homepageadresse angegeben - entsprechende Formatierung vornehmen
if(ereg("^([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$g_fhome)){
    
//http:// fehlt in der Angabe der Adresse - hier ergänzen
    
if(!ereg("^http:////",$g_fhome)){
    
$g_fhome="http://" $g_fhome;
    }
$g_fhome="<a href=" $g_fhome " target=_blank>Website</a>";
} else {
$g_fhome="<a href=" $g_fhome " target=_blank>Website</a>";
}
//Ende - Prüfung

//Prüfen ob Fehler vorgekommen sind!
if($error_msg){
echo 
"
<html>
<head>
<title>Your-Snake.de - Fehler</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#DDDCDC' text='#000000'>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' bgcolor='#47A743' colspan='3' style='border: 1px dashed;border-color:#47A743;'>- FEHLER - <br>
      Eintrag konnte nicht angelegt werden.<br>
      Versuchen Sie es bitte erneut!<br>
      <a href='buch_eintrag.php' class='contentlink'>Zur&uuml;ck</a></td>
  </tr>
</table>
</body>
</html>
"
;

include(
"funktionen.php");

}

} else {
echo 
"
<html>
<head>
<title>Your-Snake.de - Fehler</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#DDDCDC' text='#000000'>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' bgcolor='#47A743' colspan='3' style='border: 1px dashed;border-color:#47A743;'>- FEHLER - <br>
      Eintrag konnte nicht angelegt werden.<br>
      Versuchen Sie es bitte erneut!<br>
      <a href='buch_eintrag.php' class='contentlink'>Zur&uuml;ck</a></td>
  </tr>
</table>
</body>
</html>
"
;
}
?>

funktionen.php :
PHP-Code:

<?

/////////////////////////////////////////
// Gästebuch + Reloadsperre v1.0
/////////////////////////////////////////

// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 5;
// IP-Datei
$ipdatei = "ips.txt";
// Buchdatei
$datei = "buch_inhalt.htm";

/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////

function pruf_IP($rem_addr) {
  global $ipdatei,$zeit;
  @$ip_array = file($ipdatei);
  $reload_dat = fopen($ipdatei,"w");
  $this_time = time();
  for ($i=0; $i<count($ip_array); $i++) {
    list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
    if ($this_time < ($time_stamp+60*$zeit)) {
      if ($ip_addr == $rem_addr) {
        $gefunden=1;
      }
      else {
        fwrite($reload_dat,"$ip_addr|$time_stamp");
      }
    }
  }
  fwrite($reload_dat,"$rem_addr|$this_time\n");
  fclose($reload_dat);
  return ($gefunden==1) ? 1 : 0;
}

/////////////////////////////////////////
// Abfrage
/////////////////////////////////////////

if (isset($_POST["senden"])) {
if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
  // Falls die Datei existiert, wird sie ausgelesen und
  // die enthaltenen Daten werden durch den neuen Beitrag
  // ergänzt
  $fp=fopen($datei,"r+");
  $daten=fread($fp,filesize($datei));
  rewind($fp);
  flock($fp,2);
  fputs($fp,"$eintrag \n $daten");
  flock($fp,3);
  fclose($fp);
  include("autorespond.php");
  header("Location:buch.php");
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
  // Die Datei buch_inhalt.htm existiert nicht, sie wird
  // neu angelegt und mit dem aktuellen Beitrag gespeichert.
  $fp=fopen($datei,"w");
  fputs($fp,"$eintrag \n");
  fclose($fp);
  include("autorespond.php");
  header("Location:buch.php");
} else {
  // Die Datei existiert zwar, jedoch handelt
  // es sich wahrscheinlich um den gleichen Besucher
  header("Location:buch.php");
}
} else {
echo "
<html>
<head>
<title>G&auml;stebuch v1.0</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<p align='center'><img src='bild/gbuchlogo.gif' width='800' height='80'></p>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER - <br>
      Eintrag konnte nicht angelegt werden.<br>
      Versuchen Sie es bitte erneut!<br>
      <a href='buch_eintrag.php' class='contentlink'>Zur&uuml;ck</a></td>
  </tr>
</table>
</body>
</html>
";
}

?>

Dann gibt es noch die Dateien buch_inhalt.htm (da sind die beiträge gespeichert), eine css datei, autorespond.php, ips.txt und die automail.txt.
Aber ich denke das ist jetzt hier unwichtig und wird hier nicht gebraucht. Falls doch, einfach schreiben ;)

Ich verlange jetzt nicht, dass ihr mir das jetzt machen sollt, aber wenn ihr mir erklärt, wie es geht, wäre ich auch schon sehr froh ;)

yozek 13.04.2006 23:58:50

AW: Anfänger braucht Hilfe beim Gästebuch ;)
 
Hi,

das Gästebuch benutzt also keien Datenbank. Es wird einfach eine Datei geschrieben und erweitert. Aus diesem Grund müßtest du schon in das Innenleben eingreifen, um die Sachen so darzustellen wie du möchtest...

Ich kann dir zwar aus zeitlichen Gründen nicht bei jeder Frage zur Tat schreiten, aber ich denke, ein kleiner Anfang reicht auch aus ;)

Zum Thema: "Ein Eintrag in einer Zeile".

Editiere die Datei funktionen.php an folgender Stelle um:
Verwandel:
PHP-Code:

fputs($fp,"$eintrag \n $daten"); 

in
PHP-Code:

$eintrag wordwrap($eintrag'<br />'$anzahlDerZeichen1); 

um. Damit solltest du schon die Sache mit dem Zeilenumbruch hinkriegen:

Zum Thema Nummerierung.
Ich gehe davon aus, dass in jeder Zeile ein EIntrag steht.
Insofern könntest du beim Speichern die Variable $daten einlesen, nach "\n" exploden und per Schleife wieder zusammensetzen.. Jede Zeile wäre dann ein Eintrag.. Ergo.. 100 Zeilen = 100 Einträge.. Natürlich müsstest du das Array umdrehen und dann durch foreach jagen.
Eine Blätterfunkion einbauen wird schon schwieriger...
Mein Tipp.. Lass es ;)

HTH

Gruss

yozek

Wayne 14.04.2006 00:12:42

AW: Anfänger braucht Hilfe beim Gästebuch ;)
 
Hi,
erstmal danke, dass du so schnell geantwortet hast ;)

Also das mti der zeile klappt aber immer noch nicht. Wird immer noch in einer Zeile geschrieben....

Zum Thema Blätterfunktion, also ih finds schon sehr wichtig so eine funktion zu haben, damit man nicht tausende einträge auf einer seite hat. Ist das denn wirklich so schwierig?

Wayne 14.04.2006 17:39:40

AW: Anfänger braucht Hilfe beim Gästebuch ;)
 
Also, dass mit der einen zeile klappt jetzt glaube ich soweit.
Und mit der Blätterfunktion hab ich mir was anderes überlegt. Wenn es zu viel wird mach ich es einfach manuell. Also ich kopiere einfach die Beiträge in die datei buch_inhalt2.htm und verlinke die beiden. Damit wäre das Problem auch gelöst ;)

Jetzt hab ich noch eine Frage. Wo wird denn festgelegt wie die Beiträge dargestellt werden, also was für ne tabelle, wo der name steht usw. das möchte ich ein wenig ändern..

Wayne 25.04.2006 18:05:21

AW: Anfänger braucht Hilfe beim Gästebuch ;)
 
Sooo.....ich hab jetzt alles so weit hinbekommen. Danke für eure Hilfe.
Ist es schwierig einen 'Adminbereich' einzubauen? Also, dass ich die einträge online bearbeiten und löschen kann?


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:28:57 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.