Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
12.10.2003, 20:52
wayfarer



Hallo.
Ich bin dabei ein kleines guestbook zu programmieren, und stoße da auf einige Schwierigkeiten. Nun stehe ich vor dem Problem einen flood-Schutz zu programmieren, der die Ip, die in ein guestbook schreibt, für ein paar Sekunden blockieren soll (sodass Seite2 nicht bei jedem refreshen neu einträgt).
Auch muss ich bei meinem Opera, nachdem ich den "back"-button gedrückt hab, nochmal aktualisieren drücken, bevor er das neu-geschriebene erkennt.
wäre nett, wenn ihr mir helfen würdet, ich habe weder bei google, noch bei einige Forensuchen etwas helfendes gefunden.

~edit ein weiteres Problem, dass ich habe, ist dass keine (Hintergrund-)Bilder bei meinen php-Seiten angezeigt werden. (sprich bei c:\...index.php schon, aber bei http:/localhost/index.php nicht)

Seite1
Quellcode:<HTML>

<?php
// Connecting prozess
$db = @mysql_connect("localhost", "root", "")
    or die ("Konnte keine Verbindung zu mysql herstellen");
$db_check = @mysql_select_db("database01")
    or die ("Konnte keine Verbindung zur Datenbank herstellen");

if ($db && $db_check)
    echo "<center><br><br> Verbinung erfolgreich hergestellt <br><br><br>";

// Lesen

$sql = "SELECT * FROM guestbook ORDER BY date";
$res = mysql_query($sql, $db);

echo "<table width=100% bgcolor=C0C0C0><tr><td colspan=5>";
echo "<center><u>Datenbank</td></tr>";

while ($ligne = mysql_fetch_object ($res))
{
    echo "<tr>";
    echo "<td bgcolor=E0E0E0><center>$ligne->date</td>";
    echo "<td bgcolor=E0E0E0><center>$ligne->name</td>";
    echo "<td bgcolor=E0E0E0><center>$ligne->mail</td>";
    echo "<td bgcolor=E0E0E0><center>$ligne->ICQ</td>";
    echo "<td bgcolor=E0E0E0><center>$ligne->homepage</td>";
    echo "<td bgcolor=E0E0E0><center>$ligne->comment</td>";
    echo "</tr>";
}
mysql_free_result ($res);
?>

</table>

<br><br><br>

<form action="in_gb.php" method="post">
Your name : <input type="text" name="nom"><br>
Mail <input type="text" name="email"><br>
ICQ <input type="text" name="icq"><br>
homepage <input type="text" name="homepage"><br>
comment <textarea name="comment"></textarea><br>
<br>
<input type="submit" value="send">

</HTML>
Seite2
Quellcode:<HTML>

<?php
// Connecting prozess
$db = @mysql_connect("localhost", "root", "")
    or die ("Konnte keine Verbindung zu mysql herstellen");
$db_check = @mysql_select_db("database01")
    or die ("Konnte keine Verbindung zur Datenbank herstellen");

if ($db && $db_check)
    echo "<center><br><br> Verbinung erfolgreich hergestellt <br><br><br>";


// Variablen definieren

$date = date("M-d-y");
echo $date;

import_request_variables("P", "glo_");

// Eintragen

$sql = "INSERT INTO guestbook (date, name, mail, ICQ, comment, homepage)
        VALUES ('$date', '$glo_nom', '$glo_email', '$glo_icq', '$glo_comment', '$glo_homepage')";

mysql_query($sql, $db);
    echo ("Thank you for giving me your impressions!<br><br>");
    echo ("<a href=http://localhost/gb.php>back</a>");

?>

</HTML>

--

Influence - think about it


Dieser Beitrag wurde am 12.10.2003 um 20:58 von wayfarer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
12.10.2003, 23:24
Washoe



http://www.dclp-faq.de/q/q-formular-mehrfach.html
http://www.dclp-faq.de/q/q-scripte-abstimmung.html
http://www.dclp-faq.de/q/q-code-ip.html

10 Sekunden Schreibblokade für alle ginge vielleicht so:
Wenn (Aktueller Timestamp - Timestamp in Datenbank vom letzten mal) < 10
Dann darfst du nicht posten.

--


Dieser Beitrag wurde am 12.10.2003 um 23:31 von Washoe bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
13.10.2003, 10:25
K-Putt



Ich hab ebenfalls mal so ein Gästebuch Skript geschrieben, relativ simpel, der Flood schutz und die Weiterleitung is eingebaut.
Lad dir einfach mal das skript aus diesem Thread runter, habs auch relativ genau dokumentiert, sollte kein problem sein das raus zu lesen ;)

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
003
13.10.2003, 10:42
the_viking



Hm man könnte auch einfach ein cookie setzen (villeicht macht das ja eins von den codes eben, hab sie mir nicht angeschaut). In das Cookie packt man dann entweder den aktuellen timestamp oder man setzt die max. Lebensdauer dieses auf den gewüschten wert :)

Wenn allerdings keine cookies akzeptiert werden, würde ich es per Session machen.

Ach nochwas: Wenn mach zum Formular zurückgeht, kann man es per JScript auch gleich löschen lassen, was bewirkt, das der alte Inhalt weg ist und man alles neu eintragen muss. Afaik gibt es auch einen Parameter, der das speichern der Formularinhalte unterbindet :)

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
004
13.10.2003, 17:06
wayfarer



erstmal danke für die Antworten. Ich werde die erste Variante mit

Wenn (Aktueller Timestamp - Timestamp in Datenbank vom letzten mal) < 10

mal versuchen zu programmieren, vielleicht sogar mit IP.
@K-Putt. Ich habe dein guestbook runtergeladen, aber bis jetzt blick ich noch nicht ganz durch. Ich hab mich auch noch nie wirklich mit php beschäftigt...
Ich denke die automatische Weiterleitung werd ich schon irgendwo im Internet finden, aber habt ihr eine Idee mit meinem Bilderproblem?

--

Influence - think about it

zum Seitenanfang zum Seitenende Profil || Suche
005
13.10.2003, 20:33
K-Putt



ist das

Zitat:
bei http:/localhost/index.php
ein tippfehler?
denn es sollte ja http://... heißen

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
006
13.10.2003, 20:42
wayfarer



ja ein Tippfehler. Muss man sonst irgendwie noch in der php.ini nen Bildpfad einstellen? oder hat er Probleme mit css? (denn das ist mit
Quellcode:style="background-image:url(header.jpg)"angegeben).
Weiter zu meinem ursprünglichen Problem. Ich habe einfach nach Logik ein bisschen gemacht, da ich nicht wusste, wie man z.B. "Timestamp in Datenbank vom letzten Mal einliest". Ich hoffe ihr versteht den Code insoweit, dass ihr versteht, was ich versuchen will. Ich wäre sehr dankbar für jede Hilfe. Denn im Moment funktioniert es nicht (15s Sperre für alle, sowie Überprüfen von Name und comment), obwohl er auch keine Fehler gibt.

~edit
O.k. großes edit. es scheint, dass der timestap funktioniert
(ich hatte die Variable in der ersten Zeile als $continue und sonst als $continu beschrieben, sodass er erstmal nichts mehr eintrug, aber auch kein echo ausgab. das sind wohl die intelligenten Fehler...)
Allerdings funktioniert meine Namens und commentabfrage noch nicht... ? Und das Problem mit den Bilder ist natürlich immer noch da

~edit2
Schade, wär auch zu schön. timestamp funktioniert nicht.
Dafür andere Fehler entdeckt: es müsste natürlich
if ($glo_nom == "") und nicht
if ($glo_nom ="") heißen.
Deshalb blieben wohl auch die Felder immer leer... *headbang* Jetzt funktioniert jedenfalls auch diese Abfrage. timestamp nicht, wie gesagt, aber er hat mir schon mal die Meldung ausgegeben... Fragt sich nur warum, wenn er nicht so funktioniert wie er soll. Jedenfalls bin ich überfragt.

~edit3
Ok. Ich benötige nur noch eine einfache Antwort von euch:
Ich hab entdeckt, dass er als $lasttimestamp immer den letzten (bzw. von der Zeit her ersten) timestamp nimmt. Deswegen kam beim ersten Versuch auch die richtige Fehlermeldung. Nun allmählich sind die 15s vom ersten bis zum jetzigen timestamp natürlich lange um.
Wie nehme ich nun nicht den letzten, sonder den ersten timestamp? und nochmal die aktuelle Version des codes:

~edit4
Ich mag edits :D
Nun. War ja einfach. Ein desc hinten dranhängen. Ich denke mal damit funktioniert mein code so wie ich will. Er ist nicht spitzenklasse, aber für meine Zwecke genügend, und ich hab ihn relativ selbst gemacht. Juhu. Wenn mir jetzt nur noch einer die Bildfrage beantworten könnte. und aktuelle Version vom Code, die funktionuckelt.

Quellcode:<HTML>
<?php
// ============================================================= Variablen definieren
$continu = 1;

$date = date("M-d-y");
$timestamp = date("YmdHis");
echo $date;
echo $timestamp;

import_request_variables("P", "glo_");


// ============================================================= Überprüfung der Werte

if ($glo_nom == ""){
    echo ("<br><br>you didn´t fill out your name<br><br>");
    $continu = 0;
    }
    
if ($glo_comment == ""){
    echo ("you didn´t fill out the comment field<br><br>");
    $continu = 0;
    }
    

// ============================================================= Connecting prozess
$db = @mysql_connect("localhost", "root", "")
    or die ("Konnte keine Verbindung zu mysql herstellen");
$db_check = @mysql_select_db("database01")
    or die ("Konnte keine Verbindung zur Datenbank herstellen");

if ($db && $db_check)
    echo ("<center><br><br> Verbinung erfolgreich hergestellt <br><br><br>");


// ============================================================= Überprüfung von timestamp
$sql = "SELECT * FROM guestbook ORDER BY timestamp desc";
$res = mysql_query($sql, $db);
$ligne = mysql_fetch_object ($res);

$lasttimestamp = $ligne->timestamp;
echo ("<br><br><center>");
echo $lasttimestamp;
echo ("<br>");
echo $timestamp;
echo ("<br>");
echo ("-------<br>");
echo $timestamp - $lasttimestamp;
echo ("<br>");

if ($timestamp - $lasttimestamp < 15) {
        echo ("no comment possiple, because the guestbook was in use in the last 15 seconds");
        $continu = 0;
        }


// ============================================================= Eintragen
if ($continu == 1){
        $sql = "INSERT INTO guestbook (timestamp, date, name, mail, ICQ, comment, homepage)
        VALUES ('$timestamp', '$date', '$glo_nom', '$glo_email', '$glo_icq', '$glo_comment', '$glo_homepage')";

        mysql_query($sql, $db);
        echo ("Thank you for giving me your impressions!<br><br>");
        echo ("<a href=http://localhost/gb.php>back</a>");
        }
        
else     echo ("<br><a href=http://localhost/gb.php>back</a>");
?>

</HTML>

--

Influence - think about it


Dieser Beitrag wurde am 13.10.2003 um 21:19 von wayfarer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
13.10.2003, 22:33
wayfarer



wollte kein edit mehr machen. Nur noch ein Zusatz zu den Bildern.

Das Bild von der ICQ on/offline zeigt er an (z.B.
Quellcode:<img src='http://wwp.icq.com/scripts/online.dll?icq=$ligne->ICQ&img=5'>)

Aber als ich die anderen Bilder nicht-relativ angeben wollte, hat es nicht geklappt. (z.B.
Quellcode:<img src='e:/GFX/web/php/img/home.gif'>Ich wäre über jede Hilfe sehr erfreut.

--

Influence - think about it

zum Seitenanfang zum Seitenende Profil || Suche
008
13.10.2003, 22:34
theDon



lecker, sql-injections a la carte.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
009
14.10.2003, 11:48
the_viking



Zitat:
wayfarer postete
Aber als ich die anderen Bilder nicht-relativ angeben wollte, hat es nicht geklappt. (z.B.
Quellcode:<img src='e:/GFX/web/php/img/home.gif'>Ich wäre über jede Hilfe sehr erfreut.
Naja wenn man es auf einen Webserver hochläd, wird er "e:/" warscheinlich net finden und wenn doch wird da bestimmt nicht das drauf sein, was bei dir drauf ist ;)

[edit]

Ich würd sowieso " und nicht ' benutzen....

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446


Dieser Beitrag wurde am 14.10.2003 um 11:49 von the_viking bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
14.10.2003, 12:12
K-Putt



Zitat:
theDon postete
lecker, sql-injections a la carte.
Was war das nochmal gleich? SQL Befehle in einen vorhandenen Befehl ein einschleusen weil die post daten ja direkt in den query-string wandern, oder?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
011
14.10.2003, 15:00
Washoe



@wayfarer
Les dir mal einfach ein Wochenende die komplette FAQ durch. Das ilft einige Anfängerfehler zu vermeiden.
Grundsätzlic darf man keinen Daten, die ein Benutzer eingegeben hat trauen.
SQL Injection
www.dclp-faq.de/q/q-sql-injection.html

Sicherheit
http://www.dclp-faq.de/ch/ch-security.html

--

zum Seitenanfang zum Seitenende Profil || Suche
012
14.10.2003, 16:20
wayfarer



Zitat:
Les dir mal einfach ein Wochenende die komplette FAQ durch
:D hab ja nichts besseres zu tun. Aber ich werd den Rat dann mal befolgen. Ich werde da aber nicht die Antwort auf meine Bilderfrage finden, oder?

und @the_viking. " " " darf ich nicht benutzen, da es im php-tag eingebunden ist. beim e: hast du wohl recht *pfipfipfi*

danke nochmal für alle Antworten. Meine Frage ist nur leider immer noch nicht gelöst.

--

Influence - think about it


Dieser Beitrag wurde am 14.10.2003 um 16:21 von wayfarer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
013
14.10.2003, 16:48
Megge



Sicher darfst du es benützen, du musst sie einfach escapen.

z.B. so:
PHP-Quellcode:<?php
// alt:
echo "<a href='index.php'>blubb</a>";
// neu:
echo "<a href="index.php">blubb</a>";
?>
somit nimmst du den " die Sonderfunktion und sie werden normal ausgegeben. Dies lässt sich mit jedem Sonderzeichen machen:
PHP-Quellcode:<?php
echo "Ich sagte "Hallo" und nicht \'Hallo\', klar ? Auch \$_SERVER['REMOTE_ADDR'] geht...";
print 
"Sogar "C:\\\\Eigene Dateien\\pr0n.jpg" ist möglich !!!1111*eins*";
?>

--


Dieser Beitrag wurde am 14.10.2003 um 16:51 von Megge bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
14.10.2003, 17:18
wayfarer



aha. danke

--

Influence - think about it

zum Seitenanfang zum Seitenende Profil || Suche
015
14.10.2003, 17:25
Megge



also das mit dem Bild:
wenn du relative Pfade verwenden willst (, was im allgemeinen auch viel mehr Sinn macht), dann musst die sie auch so angeben. (keine Angst, der Satz war nicht zum durchblicken gedacht).

Also wenn dein Bild hier ist:
e:/GFX/web/php/img/home.gif

und deine Website hier:
e:/GFX/web/php/index.php

dann musst du das hier angeben:
<img src="/img/home.gif">

Das währe dann ein Relativer Pfad (Im Verhältnis zur index.php, darum eben relativ)
Absolut wäre z.B.
<img src="e:/GFX/web/php/img/home.gif">
-> Es ist egal, wo die index.php ist, es wird immer das selbe Bild von dieser Stelle angegeben.

Wo dein Denkfehler sein könnte: Wenn du auf deiner Website, die im Internet ist ein Bild verlinkst, dass sich auf deine Festplatte befindet, können andere Benutzer es nicht sehen, weil dann der Browser auf e: versucht zuzugreiffen. Weil aber nicht jeder ein Laufwerk e: hat und schon gar nicht dieses home.gif, kann das Bild nicht angezeigt werden. Das Bild funzt dabei nur bei dir, weil nur bei dir DIESES Bild an DIESER Stelle ist. Klar ? :)

Ich hoffe ich konnte helfen...

--

zum Seitenanfang zum Seitenende Profil || Suche
016
14.10.2003, 18:53
CN



Zitat:
<img src="/img/home.gif">
ist ein absoluter pfad und kein relativer
relativ wäre ./img oder img

--


Dieser Beitrag wurde am 14.10.2003 um 18:54 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
017
14.10.2003, 21:38
wayfarer



also, ehrlich gesagt verwirrt ihr mich jetzt ein bisschen.
@Megge das das Bild im web dann nicht verfügbar wäre, ist mir klar, ich wollts ja auch nur auf meinem PC testen, und dachte mit einem absoluten Pfad klappt das dann. Aber das klappt dann ja wahrscheinlich auch nicht, oder hab ich das falsch verstanden?

also, beim aktuellen code ist das Bild sogar im selben Verzeichnist, und ich muss doch eigentlich gar nichts davorsetzen?

Quellcode:style="width:50%; background-image:url(news_head_left.jpg)so in etwa. Aber es funktioniert nicht.

Und nochmal dankeschön.

--

Influence - think about it

zum Seitenanfang zum Seitenende Profil || Suche
018
15.10.2003, 16:53
[RMen]OneStone



' ' vergessen

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
019
15.10.2003, 20:56
wayfarer



wo denn genau? hab grad n bissle ausprobiert wo es sein könnte, aber nicht gefunden. (noch ein letztes Mal der gesamte code)

Quellcode:<td colspan="3" valign="top" style="background-image:url(header.jpg); background-repeat:no-repeat">

--

Influence - think about it


Dieser Beitrag wurde am 15.10.2003 um 20:57 von wayfarer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
020
16.10.2003, 12:06
[RMen]OneStone



url('header.jpg');

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
021
16.10.2003, 12:20
K-Putt



Zitat:
[RMen]OneStone postete
url('header.jpg');
Falsch.
Obwohls komisch ist, steht in den CSS Standards dass es url(bild.gif) heißen muss, ohne die ''.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
022
16.10.2003, 12:24
[RMen]OneStone



Na gut... oO

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
023
16.10.2003, 15:49
wayfarer



und nun? da muss es doch irgendeinen Grund geben.

--

Influence - think about it

zum Seitenanfang zum Seitenende Profil || Suche
024
17.10.2003, 17:45
Chronial



lad es mal auf nen Webserver hoch, dann schau ich mir das an, und sag dir wo dein Problem liegt.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche