Gästebuch

Hallo,
brauch drigend Hilfe, und zwar habe ich ein (einfaches, fast zu einfach) gästebuch erstellt → Guckst du. Und da ist jetzt des Problem, dass ich eine Reload sperre als spamschutz eingebaut habe, nun, es geht nicht. Normal sollte es ja die sekunden an die reload.txt senden, aber in reload.txt steht nichts?
Könnt ihr mir bitte Helfen?
Anbei die index.php.
[ATTACH]86.vB[/ATTACH]

**Edit: Sogar wenn man in den Quellcode anschaut, zeigt es ja die Sekunden an, oder was das ist:
[html]

Mein Gästebuch


      <input type="hidden" name="uw" [b]value="1161981270"[/b]>
  Dein Text:<br>

[/html]

Bin schon auf eure Antworten gespannt.

Für nen Gästebuch, zumindest für nen zu einfaches GB, brauchste ne DB. Du kanns einfach ne Reloadsperre per IP oder, wenne keine DB hastm mit Cookies machen.

Ich sehe bei ner Reloadsperre kein Problem.

ok, werde mich mal umschauen, danke.
aber im buch, dass ich habe, steht es aber auch so drinne.

Wenn du es net selber machen willst, dann kannstes auch in die Jobbörse stellen.:razz:

nein wills ja selber machen!
ich will vorerst keine DB benutzen, will erstmal so klarkommen ;heart

Edit: Habe es ein wenig verschönert und (versucht) eine IP Sperre einzubauen.
Habe mal gegoogelt und habe folgendes gefunden:
[php]

<?php // Speicherung der Daten in einer Datei function schreiben($datei,$mode){ $fp = @fopen($datei,$mode); flock($fp,2); fwrite($fp,$_SERVER["REMOTE_ADDR"]."|".time()."\n"); flock($fp,3); fclose($fp); } function ip_sperre() { // Einstellungen $reloadlogdatei = "reload.txt"; $anzahleintraege = 1; $zeitlimit = 60; // in Sekunden // Prüft, ob Datei existiert => ansonsten Erstellen if(!file_exists($reloadlogdatei)) { $datei = fopen($reloadlogdatei,"w+"); fclose($datei); } $fp = file($reloadlogdatei); $size = sizeof($fp); // Beschreibt die Datei, wenn Liste voll if($size >= $anzahleintraege){ schreiben($reloadlogdatei,"w"); // Prüft, ob eine IP in der Liste steht } else { for ($i=0;$i<=$size;$i++) { $zeile = explode("|",$fp[$i-1]); // IP wird gefunden if ($zeile[0] == $_SERVER["REMOTE_ADDR"] AND $zeile[1] > (time()-$zeitlimit)){ $ausgabe = true; // IP wird nicht gefunden } else { $ausgabe = false; } } // Protokolliert die IP-Adresse (schreibt) schreiben($reloadlogdatei,"a+"); } return $ausgabe; } // Hauptaufruf des Programms if(ip_sperre()==false) echo "Zugriff erlaubt"; else echo "IP wurde gefunden"; ?>

[/php]

aber wenn ihr auf das gästebuch schaut, und einen eintrag schreibt, und dann aktualisiert, schreibt der jedes mal einen eintrag, obwohl es die ip in reload.txt gespeichert hat.
In der sperre steht, sowie ich das jetzt verstehen konnte, 1 eintrag innerhalb 1minute schreiben, was geht da nicht?

will mir keiner helfen? :frowning:

Gästebuch²

Hallo,
jetzt habe ich es mit mysql gemacht. :stuck_out_tongue:
Nun habe ich als erstes das Script gemacht, welches die einträge anzeigen soll.
Nun heißt es,

Parse error: parse error, unexpected ‚>‘ in C:\xampp\htdocs\haddis_book\index.php on line 35
.

hier die index.php
[php]


<?php
@mysql_connect(„xxx“, „xxx“, „xxx“) or die(„Verbindung zur Datenbank ist gescheitert!“);
@mysql_select_db(„xxx“) or die („Datenbankzugriff gescheitert!“);
$sql1 = „SELECT * FROM eintraege“;
$sql2 = „SELECT * FROM eintraege ORDER BY id DESC LIMIT 0, 4“;
$result1 = mysql_query($sql1);
$zeilen = mysql_num_rows($result1);
$result2 = mysql_query($sql2);

    echo "<p>Anzahl der Eintr&auml;ge: $zeilen</p>\n";
    
    while($row = mysql_fetch_assoc($result2)) {
      echo "<p><strong>1.</b>" .
        " <b>" . htmlspecialchars($row["Name"]) . "</b> " .
        "(" . htmlspecialchars($row["Wohnort"]) .
        "(" . htmlspecialchars($row["Email"]) .
        "(" . htmlspecialchars($row["Homepage"]) .
        "))).:Schrieb am " .
        "<strong>" . $row["Datum"] . "</strong>:</p>

//Line 35"

" . nl2br(htmlspecialchars($row[„Eintrag“])) .


\n“;
}
mysql_close();
?>
[/php]
anbei noch ein screenshot von phpmyadmin:
http://www.directupload.net/images/061028/uVRBEOY2.jpg

was meint der? wo ist da der fehler in linie 35
Habe das skript schon mehrfach geändert und durchgeschaut, ohne erfolg.
Es ist bestimmt nur wieder einer meiner leichtsinssfehler ;ugl
freue mich schon auf eure antworten

Themen zusammengeführt - Bitte demächst nur ein Thema (boehseronkel)

Du hättest nur einmal einen Syntax-highlighter gebraucht, dann hättest du den Fehler sofort gesehen:

[php]


<?php
@mysql_connect(„xxx“, „xxx“, „xxx“) or die(„Verbindung zur Datenbank ist gescheitert!“);
@mysql_select_db(„xxx“) or die („Datenbankzugriff gescheitert!“);
$sql1 = „SELECT * FROM eintraege“;
$sql2 = „SELECT * FROM eintraege ORDER BY id DESC LIMIT 0, 4“;
$result1 = mysql_query($sql1);
$zeilen = mysql_num_rows($result1);
$result2 = mysql_query($sql2);

    echo "<p>Anzahl der Eintr&auml;ge: $zeilen</p>\n";
    
    while($row = mysql_fetch_assoc($result2)) {
      echo "<p><strong>1.</b>" .
        " <b>" . htmlspecialchars($row["Name"]) . "</b> " .
        "(" . htmlspecialchars($row["Wohnort"]) .
        "(" . htmlspecialchars($row["Email"]) .
        "(" . htmlspecialchars($row["Homepage"]) .
        "))).:Schrieb am " .
        "<strong>" . $row["Datum"] . "</strong>:</p>";

// Fehlte ein Anführungszeichen --^
//Line 35"

" . nl2br(htmlspecialchars($row[„Eintrag“])) .


n“;
}
mysql_close();
?>
[/php]

/E: Du solltest zudem htmlspecialchars verwenden, bevor du Einträge in die DB packst.

mensch bin ich blöd. wie ich schon geschrieben hatte :oops: :smiley: .
Danke.
Aber jetzt zeigt der mir den text nicht an?? :oops:
[PHP] <?php
@mysql_connect(„localhost“, „root“, „21531877“) or die(„Verbindung zur Datenbank ist gescheitert!“);
@mysql_select_db(„haddis_book“) or die („Datenbankzugriff gescheitert!“);
$sql1 = „SELECT * FROM eintraege“;
$sql2 = „SELECT * FROM eintraege ORDER BY id DESC LIMIT 0, 4“;
$result1 = mysql_query($sql1);
$zeilen = mysql_num_rows($result1);
$result2 = mysql_query($sql2);

    echo "<p>Anzahl der Eintr&auml;ge: $zeilen</p>\n";
    
    while($row = mysql_fetch_assoc($result2)) {
      echo "<p><strong>1.</strong>" .
        " <b>" . htmlspecialchars($row["Name"]) . "</b> " .
        "(" . htmlspecialchars($row["Wohnort"]) .
        "(" . htmlspecialchars($row["Email"]) .
        "(" . htmlspecialchars($row["Homepage"]) .
        ")<br>.:Schrieb am " .
        "<strong>" . $row["Datum"] . "</strong>:</p>";
        "<p>" . nl2br(htmlspecialchars($row["Eintrag"])) .
        "</p><hr>\n";
    }
    mysql_close();
  ?>[/PHP]

[ATTACH]87.vB[/ATTACH]

//Sowie den


[php]„“ . $row[„Datum“] . „:

“;[/php] Da beendest du das echo mit dem Semikolon. Da muss ein Punkt hin:

[php]<?php
@mysql_connect(„localhost“, „root“, „21531877“) or die(„Verbindung zur Datenbank ist gescheitert!“);
@mysql_select_db(„haddis_book“) or die („Datenbankzugriff gescheitert!“);
$sql1 = „SELECT * FROM eintraege“;
$sql2 = „SELECT * FROM eintraege ORDER BY id DESC LIMIT 0, 4“;
$result1 = mysql_query($sql1);
$zeilen = mysql_num_rows($result1);
$result2 = mysql_query($sql2);

    echo "<p>Anzahl der Eintr&auml;ge: $zeilen</p>\n";
    
    while($row = mysql_fetch_assoc($result2)) {
      echo "<p><strong>1.</strong>" .
        " <b>" . htmlspecialchars($row["Name"]) . "</b> " .
        "(" . htmlspecialchars($row["Wohnort"]) .
        "(" . htmlspecialchars($row["Email"]) .
        "(" . htmlspecialchars($row["Homepage"]) .
        ")<br>.:Schrieb am " .
        "<strong>" . $row["Datum"] . "</strong>:</p>".
        "<p>" . nl2br(htmlspecialchars($row["Eintrag"])) .
        "</p><hr>\n";
    }
    mysql_close();
  ?> [/php]

danke, hat geklappt.
nun habe ich probleme mit den links. ich will, dass man nur www.xx.yy eingeben muss, und dann automatisch ein links entsteht, also http:// www.xx.yy .
wie muss ich das in den 2 zeilen schreiben, tue da shcon seit 1 1/2stunden rum.:frowning:
zu sehen:
http://neu.kevinhartmann.de/neu/

Dazu musste einen regex machen, der prüft ob ein http:// am anfang des Links ist. Ich kenn mich nicht so sehr mit Regex aus, ließ dir dazu am besten mal das hier durch: http://tut.php-q.net/regex.html

Das ganez könnte so in der Richtung aussehen:
[php]if(!preg_match(‚=^http://.+?=‘, $row[‚homepage‘])
$row[‚homepage‘] = „http://“.$row[‚homepage‘];[/php]

Bin aber kein Experte auf dem Gebeit von Regulären Ausdrücken, also nicht hauen wenns falsch ist :o

Oder meinste jetzt die automatische Umwandlung von Links innerhalb von Einträgen?

Oder meinste jetzt die automatische Umwandlung von Links innerhalb von Einträgen?

ja^^
also das am anfang des scriptes sowas steht
if www.
else http://

oder so :smiley:
also das es von www automatisch auf http umwandelt

Bitte helft mir, ich dreh bald durch, hau dann meine tastatur kaputt ;ugl
Des mit den böden hyperlinks klappt nicht

http://www.directupload.net/file/d/864/XT63ECK5_jpg.htm

Also ich würd das mit Explode machen ;ugl (Hängt auch damit zusammen, dass ich RegEx noch nicht angeschaut habe)

[php]if(strtolower(substr($row[‚Homepage‘], 0, 7)) == „http://“) {
// Wenn der Teilstring gleich „http://“ ist, so
// soll er den Link ohne „http://“ erzeugen, denn
// der Steht ja schon drin
echo " (<a href="„.$row[‚Homepage‘].“">Homepage)„;
} else {
// Wenn nicht, so soll er das „http://“ manuell hinzufügen
echo " (<a href="http://“.$row[‚Homepage‘].„">Homepage)“;
[/php]
http://tut.php-q.net/guestbook.html#u3

Mfg
Alti

[php]
„(
'“.htmlspecialchars($row[„homepage“]).„'
)“;
[/php]
edit:für regexe gibts nen gutes Tutorial: http://www.regenechsen.de/phpwcms/index.php?regex_allg