WinFuture-Forum.de: [php/mysql] Einfaches Gästebuch / Ein Paar Fragen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

[php/mysql] Einfaches Gästebuch / Ein Paar Fragen


#1 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. März 2005 - 15:08

Hallo zusammen.

Ich bin gerade dabei ein kleines Gästebuch mit PHP und MySQL zu programmieren.
Bisher habe ich ein Gästebuch, in das man sich Eintragen kann. Jetzt fehlen mir noch ein paar Kenntnisse, um spezielle Features einzubauen.

Die Datenbank-Tabelle sieht so aus:
id -> Jeder Eintrag hat eine ID, die automatisch ansteigt
name -> Der Name des Eintragers
email -> Die E-Mail-Adresse des Eintragers
eintrag -> Der Eintrag selber

Ich stelle die Verbindung mit zur Datenbank mit einer Function her:
function db_connect()
{
  include 'variables.php';

  # Host, Benutzer, Passwort
  mysql_connect($dbhost, $dbuser, $dbpass)
  or die ("Keine Verbindung zum Server möglich!");

  # Datenbankname
  mysql_select_db($dbname)
  or die ("Die Datenbank existiert nicht!");
}

Diese Funktion ist in einer externen Datei "functions.php". Die Daten (Passwort, Datenbankname,...) sind in einer externen Datei "variables.php" gespeichert.

Ich rufe in der "gb.php" (einzige Hauptdatei) die Function auf und dann folgt der gesamte Code für das Gästebuch.
Es kommt ein Formular zum Eintragen, die Ausgabe und das Einfügen in die Tabelle.
Der Code der "gb.php" sieht folgendermaßen aus:
<?
  include 'functions.php';
  db_connect();

  $action = $_GET["action"];
  $seite = $_GET["seite"];

  // Die Startseite ist automatisch die erste Seite
  if(!isset($seite)) { $seite = 1; }

  // Wieviele Einträge pro Seite angezeigt werden sollen
  $eintraege_pro_seite = 15;
  $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;

  // Das aktuelle Datum und die aktuelle Uhrzeit werden ermittelt
  $timestamp = time();
  $datum = date("d.m.Y",$timestamp);
  $uhrzeit = date("H:i",$timestamp);

  // Die Tabelle der Datenbank wird selektiert
  // Die Einträge werden nach der ID geordnet (neueste zuerst)
  $dbabfrage = "SELECT * FROM gaestebuch ORDER BY id DESC LIMIT $start,$eintraege_pro_seite";
  $dbergebnis = mysql_query($dbabfrage);

  // Die Variablen werden aus dem Formular übernommen
  $name = $_POST["name"];
  $email = $_POST["email"];
  $eintrag = $_POST["eintrag"];

// Der Header vom Gästebuch
echo '<title>Gästebuch</title><center><font size="6"><b>Gästebuch</b></font><br><br>
<a href="?">Gästebuch-Startseite</a><br>
<a href="?action=eintragen">Eintragen ins Gästebuch</a><br><br>';


    #***********************************
    #* ANFANG - abschicken
    #***********************************
    if($action == "abschicken") {

// Fehlermeldungen
if($name == '' or $eintrag == '') { $fehler = 1;
  echo '<b>Fehler!</b> <br><br>';}

if($name == '') { $fehler = 1;
  echo 'Sie haben keinen Namen eingegeben. <br>'; }

if($eintrag == '') { $fehler = 1;
  echo 'Sie haben keinen Eintrag eingegeben. <br>'; }

  if($fehler == 1) {
  echo '<br>Bitte gehen Sie zurück und korrigieren Sie Ihre Eingaben!<br><br>
<form action="javascript:history.back()"><input type="submit" value="Zurück"></form>'; }

// Wenn keine Fehler vorhanden sind, wird der Eintrag in die Datenbank gespeichert
if($fehler != 1)
  {
  $dbeintrag = "INSERT INTO gaestebuch (name, email, eintrag, datum) VALUES ('$name', '$email', '$eintrag', '$datum | $uhrzeit')";

  $gb_eintrag = mysql_query($dbeintrag);

  echo '<br>Erfolgreich eingetragen!<br><br>Vielen Dank für Ihren Eintrag.<br><br>
  <form action="?"><input type="submit" value="Zurück zum Gästebuch"></form>';
  }

if($dbeintrag == true)
   {
   echo "Eintrag war erfolgreich!";
   }
else
   {
   echo "Fehler beim Eintragen!";
   }

    }
    #***********************************
    #* ENDE - abschicken
    #***********************************


    #***********************************
    #* ANFANG - eintragen
    #***********************************
    elseif($action == "eintragen") {

  echo '
<form action="?action=abschicken" method="post">
Name:<br><input size="20" name="name"><br>
E-Mail:<br><input size="20" name="email"><br>
Eintrag:<br><textarea cols="40" rows="10" name="eintrag"></textarea>

<br><br>
<input type="submit" value="Abschicken">
<input type="reset" value="Zurücksetzen">
</form>

<br><br>

<a href="?">Zurück zum Gästebuch</a>
       '; }
    #***********************************
    #* ENDE - eintragen
    #***********************************

    #***********************************
    #* ANFANG - Gästebuch Startseite
    #***********************************
	else {

  // Es werden alle Einträge aus der Datenbank gelesen und in eine Variable gespeichert
  while($dbinhalt = mysql_fetch_object($dbergebnis)) {

echo '
<table width="60%" align="center" cellpadding="2" cellspacing="1" style="border:1px solid #000000; background-color:F0F0F0;">
<tr>
<td width="20%" align="left">('.$dbinhalt->id.') <b>'.$dbinhalt->name.'</b></td>
<td width="20%" align="center"><a href="mailto:'.$dbinhalt->email.'">'.$dbinhalt->email.'</a></td>
<td width="20%" align="right"><small>'.$dbinhalt->datum.'</small></td>
</tr>
</table>
<br>
<table width="60%" align="center" cellspacing="1" style="border:0px solid #000000;">
<tr>
<td width="100%" align="center">'.nl2br($dbinhalt->eintrag).'</td>
</table>

<br><br>
     '; }
    }
    #***********************************
    #* ENDE - Gästebuch Startseite
    #***********************************

    #***********************************
    #* ANFANG - Blätterfunktion
    #***********************************

  // Die Einstellungen für die Blätterfunktion
  $seiten_auswahl = mysql_query("SELECT id FROM gaestebuch");
  $seiten_menge = mysql_num_rows($seiten_auswahl);
  $seiten_anzahl = $seiten_menge / $eintraege_pro_seite;

echo '<br><br><hr noshade color="#000000" size="1" width="60%">',
     'Es befinden sich <b>'.$seiten_menge.'</b> Einträge im Gästebuch <br><br>',
     '<b>Seite:</b>';

  // Die Anzahl der Seiten werden mit dieser Schleife ermittelt
  for($a=0; $a < $seiten_anzahl; $a++)
  {
      $b = $a + 1;

   // Für die ausgewählte Seite wird kein Link angezeigt
   if($seite == $b)
      {
      echo ' <b>'.$b.'</b> ';
      }

   // Alle nicht ausgewählten Seiten werden mit einem Link dazu angezeigt
   else
      {
      echo ' <a href="?seite='.$b.'">'.$b.'</a> ';
      }
  }
    #***********************************
    #* ENDE - Blätterfunktion
    #***********************************
?>

WICHTIG: Es ist noch ganz am Anfang und es können Fehler vorhanden sein, also bitte (falls ihr was findet), schreibt es mir. Natürlich ist noch nichts am Aussehen getan werden, das folgt auch noch.

So nun meine Fragen:
1.) Ich will nun noch, dass bei jedem Beitrag die richtige Uhrzeit steht, wann der Beitrag eingetragen worden ist. Muss ich da noch etwas in meine Datenbank-Tabelle hinzufügen oder geht das mit PHP? Wichtig dabei ist natürlich, dass immer die Uhrzeit, wann der Beitrag eingetragen worden ist, angezeigt werden soll und nicht die aktuelle.

2.) Ich will nun noch einen "Admin-Bereich" einbauen. Quasi eine Unterseite, die mit einem Passwort geschützt ist. Meine erste Frage dazu ist, wie ich am besten diese Unterseite mit einem Passwort schütze? Ich habe mir es so vorgestellt, dass man sich mit einem "Formular" einloggen muss und das Passwort dann in einer Externen Datei (oder DB) gespeichert wird. Wie mache ich das am Besten? So und dann wollte ich noch fragen, wie das mit dem Löschen geht. Mit "DELETE FROM gaestebuch WHERE id = 1" lösche ich dein Eintrag mit der ID 1. Aber ich will die Einträge auch (wie auf der Startseite) auflisten und anwählen können (via Input type="checkbox") und dann nur den angewählten löschen. Wie kann ich das erreichen?

3.) So wie es bisher ist, werden ALLE Einträge auf der Seite "gb.php" aufgelistet. Ich will nun aber, dass immer nur 20 Einträge pro Seite angezeigt werden. Wie das mit dem SQL-PHP-Code funktioniert, ist mir bekannt. Aber ich will dann nicht manuell programmieren, wie viele Seiten es gibt und dann immer nur 20 angezeigt werden. Kann ich es auch machen, dass auf der ersten Seite 20 angezeigt werden und falls mehr, dann soll unten Seite 2 mit einem Link angezeigt werden und falls dann auf Seite 2 mehr als 20 sind soll Seite drei erscheinen und immer so weiter... Wie würde das funktionieren?

4.) Ich will überprüfen, ob der Eintrager in den letzten 10 Minuten schon einmal eingetragen hat. Also quasi eine IP-Sperre. Wie das ungefähr mit Textdateien geht weiß ich, aber ist es auch möglich, die IP in die DB zu speichern (für jeden Eintrag) und dann "falls ip = schon einmal eingetragen in den letzten 10 Minuten" soll eine Fehlermeldung kommen.

5.) Das ist wichtig: In meiner DB ist das Feld "eintrag" als "longtext" und im Formular hab ich normal "textarea". Wenn ich nun aber dort einen Absatz mache oder einfach mehrere Absätze, dann wird es zwar in der DB so richtig abgespeicehrt aber in der Ausgabe ist es alles hintereinander ohne Absatz. Brauche ich da einen speziellen Wert oder eine Zeichenänderung via PHP oder wie mache ich das am Besten?

Also erstmal ich bin noch ein SQL und PHP n00b und deswegen stelle ich vielleicht für euch total simple Fragen.
Wäre wirklich nett, wenn mir jemand behilflich sein könnte.
Falls ihr noch Fragen dazu habt (wie die DB-Tabelle) genau aufgebaut ist usw. kann ich euch das beantworten.

Wenn ich das GB dann fertig habe, kann ich es auch OpenSource hier anbieten (falls jemand daran Interesse haben sollte).

Danke schon mal im Voraus und ich bin mir sicher, dass mir hier freundliche Checker helfen können ;-)
Schönen Tag noch bis später.

Grüße,
Adi.

Dieser Beitrag wurde von Corey bearbeitet: 10. März 2005 - 15:38

Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

Anzeige



#2 _Benjamin_

  • Gruppe: Gäste

geschrieben 08. März 2005 - 15:15

Zitat

2.) Ich will nun noch einen "Admin-Bereich" einbauen. Quasi eine Unterseite, die mit einem Passwort geschützt ist. Meine erste Frage dazu ist, wie ich am besten diese Unterseite mit einem Passwort schütze? Ich habe mir es so vorgestellt, dass man sich mit einem "Formular" einloggen muss und das Passwort dann in einer Externen Datei (oder DB) gespeichert wird. Wie mache ich das am Besten? So und dann wollte ich noch fragen, wie das mit dem Löschen geht. Mit "DELETE FROM gaestebuch WHERE id = 1" lösche ich dein Eintrag mit der ID 1. Aber ich will die Einträge auch (wie auf der Startseite) auflisten und anwählen können (via Input type="checkbox") und dann nur den angewählten löschen. Wie kann ich das erreichen?


CREATE TABLE `user` (
`id` TINYINT( 255 ) NOT NULL AUTO_INCREMENT ,
`user` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
);


das pw lässt mit md5("password"); verschlüsseln. somit kannst du dich sicher einloggen.

zum löschen lässt die die einträge ausgeben. am besten die ersten 50 zeichen, so weißt du welcher eintrag gemeint ist. daneben eine kleine checkbox. der checkbox gibst du halt die IDs der einträge. und dann halt via submit ne extra funktion welches alle "gecheckten" beiträge löscht.

Dieser Beitrag wurde von Xandros bearbeitet: 08. März 2005 - 15:20

0

#3 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 08. März 2005 - 15:17

1. Timestamp?
2. Auch wieder mit Querystring.
3. Das kann man sehr gut mit Querystrings steuern. Doch um eine IF-Abfrage wirst du nicht herumkommen. Die Links zu den einzelnen Seiten sehen dann so aus "gp.php?von=x"
$von = $_GET['von'];
$bis = $von + 15;
SELECT * FROM `Kommentartabelle` LIMIT $von,$bis

4. Klar, einfach bei jedem Eintrag die IP in einem extra Feld in der DB speichern.
5. Es gibt bei PHP die Funktion nl2br($text); Wenn du diesen "Parser" bei der Ausgabe verwendest, dann werden alle Zeilenumbrüche zu <br> umgewandelt.
0

#4 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. März 2005 - 15:20

@Xandros

Danke erstma^^

Also ich müsste dann eine extra Tabelle anlegen, aber damit könnte ich leben. Wie rufe ich den User dann genau ab? Auch mit einem Formular oder wie?

Das mit dem Löschen habe ich noch nicht ganz verstanden, aber ich werde es erstmal (Sobald ich mehr Zeit habe) probieren, bevor ich weiter frage...
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#5 _Benjamin_

  • Gruppe: Gäste

geschrieben 08. März 2005 - 15:26

du machst die ein loginformular mit 2 inputfeldern. nick und pw
schickst es dann an zb. login.php. prüfst ob die beiden felder nicht leer sind. und wandelst dann erstmal um:
$username=$_POST['$nick'];
$password=$md5($_POST['$pw']);


und dann per ganz normaler sql abfrage

$sql="SELECT FROM * user WHERE user = '$username' AND password = '$password'

den rest weißt du ja ^^ (mit cookies sessions usw)


edit: code ist nur ausm kopf, nicht getestet

edit2: nach hinweiß von stefanra von GET in POST geändert

Dieser Beitrag wurde von Xandros bearbeitet: 08. März 2005 - 15:29

0

#6 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. März 2005 - 15:27

@stefanra

Ich muss schon mal sagen -> fetten Respekt!
Du kannst einem zu jedem Thema helfen und hast echt verdammt viel drauf!
Danke^^

1.) Wie funktioniert das dann mit Timestamp, also wie müsste es ca. aussehen? Sorry bin ja noch ein n00b in dem Bereich, wie gesagt :whistling:

3.) Scheint logisch zu sein, ich kann es mal probieren. Eine IF-Abfrage ist ja nicht schlimm...

4.) ... und wie mache ich es dann wegen der Zeit (10 Min) und das überprüfen?

5.) Einfach einmal diesen Code einfügen und schon geht es?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#7 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 08. März 2005 - 15:36

Ich würde aber solch ein Loginforumlar nie via GET verschicken - immer POST.

Kein Problem! :whistling:

Zitat

1.) Wie funktioniert das dann mit Timestamp, also wie müsste es ca. aussehen? Sorry bin ja noch ein n00b in dem Bereich, wie gesagt

So: $time = time(); Und jetzt fügst du in der Spalte für die Zeit den Wert $time ein.

Zitat

4.) ... und wie mache ich es dann wegen der Zeit (10 Min) und das überprüfen?

$now = time();
if ($now - $oldtimestamp <= 10){
// Letzter Eintrag mit dieser IP ist weniger oder genau 10 Minuten her
echo "Flood-Kontrolle aktiviert. Warte noch ein wenig!";

}else{
// Darf wieder schreiben
}


Zitat

5.) Einfach einmal diesen Code einfügen und schon geht es?

Jup. :8):
0

#8 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. März 2005 - 15:41

Nochmals danke @stefanra
Ich werde es heute oder morgen dann mal versuchen und ich komme sicher wieder hierher zurück mit einem Ergebnis :whistling:

Grüße!
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#9 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 09. März 2005 - 16:56

@stefanra

Ich habe es nun mal probiert und das mit der Uhrzeit klappt wunderbar - danke. Genau so wie das mit dem Befehl "nl2br"!

Aber das mit 3. habe ich noch nicht ganz verstanden.
Kannst du mir ungefähr erklären, wie es aussehen müsste, damit es funktioniert (oben steht ja mein Code).

--> Danke!
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#10 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 09. März 2005 - 17:02

Zitat

Aber das mit 3. habe ich noch nicht ganz verstanden.
Kannst du mir ungefähr erklären, wie es aussehen müsste, damit es funktioniert (oben steht ja mein Code).


Okay, ich versuche mal was derartiges zu coden. Muss gleich weg und weiß auch nicht, wann ich morgen dazu komme.

Dieser Beitrag wurde von stefanra bearbeitet: 09. März 2005 - 17:03

0

#11 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 09. März 2005 - 17:10

Ist es hier eigentlich schon angebracht, mal die Sicherheit anzusprechen?

Zumindest sowas
$name = mysql_real_escape_string($_POST['name']);


wär ja vielleicht mal nicht schlecht bevor der SQL Befehl zusammengesetzt wird.
0

#12 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 09. März 2005 - 17:12

@Floele

Was bewirkt "mysql_real_escape_string" und warum unbedingt notwendig?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#13 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 09. März 2005 - 17:18

Sie ersetzt Zeichen wie

"

und

'

durch

\'

und

\"

ersetzt (es gibt auch noch mehr von diesen). Dadurch wird verhindert, dass man mit bestimmten Benutzernamen (oder anderen Eingaben) deine SQL Abfrage verändern (und somit deinen SQL Server "unter Kontrolle" hat) kann.
Hier http://www.ilovejack...g-secure-php/2/ wird das eigentlich ganz gut erklärt.

Dieser Beitrag wurde von Floele bearbeitet: 09. März 2005 - 17:19

0

#14 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 10. März 2005 - 15:37

Erstmal danke (schon wieder *g*) @Floele
Das wusste ich nicht, aber ich schreibe es dann vopr mein $_POST.
Bei $_GET muss ich es aber nicht, das ist ja wurscht, oder?

So und @stefanra ich habe die "Blätterfunktion" nun hinbekommen. Habe mich ein wenig im Internet erkundigt und auf www.php-einfach.de wird das ganz gut erklärt (danke @Xandros für den Link).
Bei mir funktioniert es nun mit einer for-Schleife.

Der Code vom Gästebuch wurde aktualisiert (mein erster Beitrag oben) und das Gästebuch könnt ihr euch mal hier ansehen!

Aber ich habe das mi der IP-Sperre noch nicht hinbekommen, das ist bisher noch mein einziges Problem! Kann mir da jemand genauer helfen?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#15 Mitglied ist offline   Urza 

  • Gruppe: aktive Mitglieder
  • Beiträge: 255
  • Beigetreten: 16. September 04
  • Reputation: 0
  • Wohnort:Dominaria/Aventurien

geschrieben 10. März 2005 - 17:43

aaaalso ^^:
bei jedem Eintrag trägst du die IP und den aktuellen Timestamp in eine Tabelle ein:

$ip=$_SERVER['remote_addr'];
$time=time();
mysql_query("insert into tabellenname (ip, time) values ('$ip','$time')");


wenn jetzt jemand versucht, einen Beitrag zu schreiben, überprüfst du, ob jemand mit der selben IP das innerhalb der letzten 10 Minuten (600 Sekunden) schon getan hat und wenn ja, wird nur eine Meldung ausgegeben aber nicht geschrieben:

$ip=$_SERVER['remote_addr'];
$time=time();
$ret=mysql_query("select time from tabellenname where ip like '$ip'");
if(mysql_num_rows($ret) == 0){
$ok=1;
}else{
$row=mysql_fetch_row($ret);
if($time - $row[0] >= 600){
$ok=1;
}
}
if($ok t== 1){
//anderes Zeug
}else{
echo "Bitte warten Sie 10 Minuten bevor Sie erneut in das GB schreiben";
}


soweit mein Vorschlag ;) kann man sicher auch kürzer schreiben, aber das ist, was mir gerade einfällt :P

Zitat

So und @stefanra ich habe die "Blätterfunktion" nun hinbekommen. Habe mich ein wenig im Internet erkundigt und auf www.php-einfach.de wird das ganz gut erklärt (danke @Xandros für den Link).


hm wie schön unsere Seite wird bekannter :P

Dieser Beitrag wurde von Urza bearbeitet: 10. März 2005 - 17:44

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0