Gästebuch Einträge unsichtbar, werden aber aufgelistet!

ClouD361

Mitglied
Moin Leute,

ich habe ein Gästebuch ^^ das ist doch schon mal toll oder? ;)

So dieses Gästebuch ist ein moderiertes, d.h. man muss die Beiträge freischalten, damit sie angezeigt werden.

So nun zum Problem:
Das Gästebuch wird mit Spam zugemüllt! Die Beiträge sind zwar nicht sichtbar, werden aber aufgelistet. So werden ganz viele Seiten quasi "leer" angezeigt. Man muss z.B. auf die 6te Seite klicken, um den letzten, von mir freigegebenen Beitrag zu sehen. Das alles könnt ihr euch hier angucken. Gästebuch

Wie kann man es nun so machen, dass die freigegebenen Beiträge nicht aufgelistet werden?

Ich habe auch ein unsichtbares Feld eingebaut, wo nichts stehen darf, weil ich gelesen habe, dass diese Spambots alles ausfüllen.

Da ich überhaupt keine Ahnung von php habe, wende ich mich an euch. Wenn ihr euch den Code vom GB angucken möchtet, findet ihr ihn im Anhang als *.zip Datei.

Ich freue mich über jede Hilfe
 

Anhänge

Wie kann man es nun so machen, dass die freigegebenen Beiträge nicht aufgelistet werden?
Meinst du, die nicht freigegeben Beiträge nicht angezeigt?

Na gut, also, du hast ja bestimmt ne Datenbank, ne Tabelle und in der Tabelle ne Zeile, was weiß ich "freigeschaltet". Da steht entweder 1 = frei, 0 = nicht freigeschaltet drin oder sonst wie.

Dann hast du deinen Query
PHP:
$query = 'SELECT * FROM guestbook ORDER BY `id` DESC';
Oder so ähnlich. Da fügst du eine WHERE Funktion ein, dann sieht das so aus
PHP:
$query = 'SELECT * FROM guestbook WHERE `freigeschaltet` = "1" ORDER BY `id` DESC';
Sofern 1 = freigeschaltet ist, würden so alle freigeschalteten Beiträge angezeigt.
Wenn du nun wirklich, was ich nicht glaube, alle nicht freigeschalteten Beitäge anzeigen willst, nimmste statt der 1 eine 0.


mfG
David
 
Wenn du nun wirklich, was ich nicht glaube, alle nicht freigeschalteten Beitäge anzeigen willst, nimmste statt der 1 eine 0.

Ich glaube du hast mich nicht ganz verstanden :) Ich möchte natürlich nicht, dass alle Beiträge angezeigt werden. Das werden sie ja auch nicht ^^

Die Beiträge, die nicht freigegeben sind werden aber trozdem "aufgelistet" sind aber unsichtbar, da ja noch nicht freigegeben ;) ( ich verwirre mich schon selber o.O )
Im Moment ist es so, dass das Gästebuch alle Beiträge von der Datenbank liest, aber die die nicht freigegeben sind unsichtbar bleiben. Kann man das nicht so machen, dass nur die Beiträge, die freigegeben sind von der Datenbank gelesen werden. Kann man vielleicht 2 Tabellen machen? Alle neuen, nicht freigegebene Beiträge kommen in die erste Tabelle. Wenn ich im Admin Menü bin werden sie dort aus der Datenbank gelesen und dem "Admin" angezeigt. Wenn ich (der Admin ^^ ) nun Beiträge freigebe, wird dieser in die zweite Tabelle verlagert, die dann für alle angezeigt werden im Gästebuch.

Ich glaube langsam, dass man dafür ein ganz neues Gästebuch schreiben müsste :(

Oder kann man mein jetziges vielleicht ohne viele Umstände umschreiben?

In einer anderen Datei vom GB habe ich die Stelle gefunden ( denke ich ), wo die Beiträge von der Datenbank gelesen werden.

PHP:
<?
include "sql.inc.php";
include "func.inc.php";
include "sign_in_book.inc.php";
// Get gesamt Zahl
$sqlC = "SELECT COUNT(id) FROM gbook";
$anz_q = mysql_query($sqlC, $db_con);
$anz = mysql_fetch_row($anz_q);
// Get Freizugebende
$notpub_sql = "SELECT * FROM gbook WHERE pub=0";
$notpub_query = mysql_query($notpub_sql,$db_con);
$notpub_anz = mysql_num_rows($notpub_query);
//echo "$notpub_anz";

// Generate Navi
$subhead = "Page: ";
if(!$gb_page){
	$gb_page = 1;
}
$pages = ceil($anz[0]/10);
$limit = ($gb_page - 1) * 10;
$anz[0] = $anz[0] - $limit;
for($a = 1; $a<= $pages; $a++){
	if($a == $gb_page){
		$subhead .= "$a | ";
	} else {
		$subhead .= "<a href=\"$PHP_SELF?gb_page=$a\">$a</a> | \n";
	}
}
// end test

?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td valign="top" align="left"><?=$subhead?></td>
	<td valign="bottom" align="right"><!-- (<?=$notpub_anz?>) nicht freigegebene Eintr&auml;ge -->&nbsp;</td>
  </tr>
</table>
<br>
<?
$sql = "SELECT * FROM gbook ORDER BY datum DESC LIMIT $limit,10";
$result = mysql_query($sql, $db_con);
while($myrow = mysql_fetch_array($result)){
	$date = dateSplit($myrow[1]);
	$time = timeSplit($myrow[1]);
	$name = $myrow[2];
	$msg = nl2br($myrow[3]);
	if (strlen($myrow[4]) > 5){
		$mail = "<a href=\"mailto:".$myrow[4]."\">$myrow[4]</a>";
	} else {
		$mail = "&nbsp;";
	}
	$num = $anz[0]--;
	if ($myrow['pub'] != 0){
?>

mfg ClouD361
 
Hättest du meinen Beiträg gelsen, wüsstest dus ;)

PHP:
$sqlC = "SELECT COUNT(id) FROM gbook WHERE `freigeben`= 1";
$anz_q = mysql_query($sqlC, $db_con);
$anz = mysql_fetch_row($anz_q);

"freigeben" natürlich in den namen deiner Spalte ändern ;)
 
Hättest du meinen Beiträg gelsen, wüsstest dus ;)

PHP:
$sqlC = "SELECT COUNT(id) FROM gbook WHERE `freigeben`= 1";
$anz_q = mysql_query($sqlC, $db_con);
$anz = mysql_fetch_row($anz_q);

"freigeben" natürlich in den namen deiner Spalte ändern ;)

Sry, konnte deine $query nicht in meinem Gästebuch interpretieren, da ich wie gesagt keine Ahnung habe von php.

Es funktioniert wunderbar! Ich bedanke mich :)

*Erledigt*
 
Zurück