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>
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.
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?
Hallo,
jetzt habe ich es mit mysql gemacht.
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);
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);
mensch bin ich blöd. wie ich schon geschrieben hatte :oops: .
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);
“;[/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);
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.
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?
[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