webForumDet fria alternativet

Massa spam och reklam i gästboken

PHP

1 svar · 673 visningar · startad av Blockqoute

Medlem sedan dec. 200380 inlägg
Frågan#1

Har en gästbok som ser ut som nedan:

<?
include ('connect.php');
$my_password = "testar";
$my_login = "testar";

if($_GET['action'] == "login"){
	echo "<form name=\"form\" method=\"post\" action=\"kungen.php\">";
	echo "Login:<br>";
	echo "<input type=\"login\" name=\"login\" size=\"30\" maxlength=\"50\"><br>";
	echo "Password:<br>";
	echo "<input type=\"password\" name=\"password\" size=\"30\" maxlength=\"50\"><br>";
	echo "<input type=\"submit\" name=\"loggain\" value=\"Login\">";
	echo "</form>";
}else{

if(isset($_POST['loggain'])){
	if($_POST['password'] == $my_password && $_POST['login'] == $my_login){
		$inloggad="javisst";
	}else{
		echo "";
	}

}

## Lägg in kommentar
if(isset($_POST['skriver_kommentar'])){
	
	// Om rätt lösenord lägg in data.
		$datum = date("Y-m-d H:i:s");

		## Kollar så att inte posten redan finns. 
		$sql="SELECT id FROM gastbok_kommentar WHERE gid='{$_POST['gid']}'";
		$result = mysql_query($sql);
		if (mysql_num_rows($result) == 0){
			$sql="INSERT INTO gastbok_kommentar(gid, kommentar, namn, datum)VALUES('{$_POST['gid']}','{$_POST['kommentar']}','{$_POST['heter']}','$datum')";
			mysql_query($sql);	
		}else{
			$sql="UPDATE gastbok_kommentar SET kommentar='{$_POST['kommentar']}', namn='{$_POST['heter']}', datum='$datum' WHERE gid='{$_POST['gid']}'";
			mysql_query($sql);	
		}

header("Location:kungen.php");	
}

## RADERA INLAGG

if(isset($_POST['radera_post'])){
		$sql="DELETE FROM gastbok WHERE id='{$_POST['id']}'";
		mysql_query($sql);	
		$sql="DELETE FROM gastbok_kommentar WHERE gid='{$_POST['gid']}'";
		mysql_query($sql);	

header("Location:kungen.php");	
}

if(isset($_POST['gb_insert'])){			// Om någon trycker på knappen...
	$datum = date("Y-m-d H:i:s");		// sätter variabel datum till dagens datum
	
	// insert satsen till databasen sparas i variabeln $sql. 
	$sql = "INSERT INTO gastbok(datum,namn,stad,epost,hemsida,ager,inlagg) VALUES ('$datum','{$_POST['heter']}','{$_POST['bor']}','{$_POST['brev']}','{$_POST['sida']}','{$_POST['har']}','{$_POST['skriver']}')";
	mysql_query($sql);										// slänger in ovan rad till databasen
	
	header("Location:kungen.php");						// efter exekvering laddas sidan om. 
}

?>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Leiyha Danza Yengols - Write and read in our guestbook</title>
<meta name="description" content="Leiyha Danza Yengols - Write and read in our guestbook">
<meta name="keywords" content="danza, yengols, rottweiler, leiyha, guestbook">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link href="css/style.css" rel="stylesheet" type="text/css">
<!-- Inga tomma fält är tillåtna -->
<script language="JavaScript" type="text/JavaScript">

function PostKontroll(myForm){
	if(myForm.heter.value == ""){
	alert("Name is a mandatory field");
	myForm.heter.focus();
	return false;
	}
	
	if(myForm.skriver.value == "") {
	alert("Message is a mandatory field")
	myForm.skriver.focus();
	return false;
	}
	return true;
	}
</script>
</head>

<body>
<div align="center">
<?
include "inc_huvud.php";
include "inc_meny.php";
?>
<table width="735" cellspacing="0" cellpadding="0" border="0" class="main">
<tr><td valign="top"><table width="100%" height="500" border="0" cellpadding="0" cellspacing="0">
          <tr valign="top"> 
            <td><table width="98%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td><h1>GUESTBOOK</h1></td>
                </tr>
                <tr>
                  <td>

					<!-- lägger till onsubmit="return PostKontroll()" som anropar javascriptet för att kontrollera fälten -->
					<form name="form1" id="form1" method="post" action="kungen.php" onsubmit="return PostKontroll(this);">
					Name:*<br>
					<input type="text" name="heter" size="30" maxlength="30"><br>
					City/Country:<br>
					<input type="text" name="bor" size="30" maxlength="50"><br>
					E-mail:<br>
					<input type="text" name="brev" size="30" maxlength="50"><br>
					Homepage:<br>
					<input type="text" name="sida" size="30" maxlength="50" value="http://"><br>
					Owns a rottweiler:<br>
					<input type="text" name="har" size="30" maxlength="50">
					<p>
					Message:*<br>
					<textarea name="skriver" cols="40" rows="5"></textarea>
					<p>
					<input type="submit" name="gb_insert" value="Send">
					<input type="reset" name="clear" value="Clear"> <a href="http://www.danzayengols.com/kungen.php?action=login">Login</a>
					<br>* are mandatory fields
					</form>
					<hr><br>

<?php
// PRINTA INLÄGG

#### PAGING DEL 1 - START

   $limit = 10; // Avgör hur många rader som visas per sida.

   if (isset ($_GET['sid_nr'])){
	   $sid_nr = $_GET['sid_nr'];
	}else{
		$sid_nr = 0;
	}
   
   $offset = $sid_nr * $limit;

	// Kör första sql-frågan som tar reda på antalet rader.
   $sql = "SELECT COUNT(*) AS rows_tot FROM gastbok ORDER BY datum DESC";
   $result = mysql_query($sql)
      or die(mysql_error());
   $row = mysql_fetch_array ($result);
   if ($row['rows_tot'] > 0 ) { // Kolla om det finns någon data i tabellen
      $pages_tot = (ceil($row['rows_tot'] / $limit) - 1); // Räknar ut hur många sidor det blir.

// Kör andra sql-frågan som hämtar valda rader.
$sql= "SELECT a.id, a.datum, a.namn, a.stad, a.epost, a.hemsida, a.ager, a.inlagg, b.namn AS bnamn, b.datum AS bdatum, b.kommentar FROM gastbok AS a LEFT JOIN gastbok_kommentar AS b ON a.id=b.gid ORDER BY a.datum DESC LIMIT $offset, $limit";

#### PAGIN DEL 1 - SLUT

$result = mysql_query($sql);						// resultat sparas som en array i $resultat
while($rad=mysql_fetch_array($result)){				// arrayen resultat printas ut med hjälp av en while-sats, sparar
													// i variabeln $rad

### KOMMENTERA
if($inloggad == "javisst"){
	echo "<form name=\"form1\" method=\"post\" action=\"kungen.php\">";
	echo "Name:<br>";
	echo "<input type=\"text\" name=\"heter\" size=\"30\" maxlength=\"50\" value=\"".$rad['bnamn']."\"><br>";
	echo "Answer:<br>";
	echo "<textarea name=\"kommentar\" cols=\"40\" rows=\"5\">".$rad['kommentar']."</textarea><br>";
	echo "<input type=\"hidden\" name=\"gid\" value=\"".$rad['id']."\"><p>";
	echo "<input type=\"submit\" name=\"skriver_kommentar\" value=\"Skicka kommentar\">";
	echo "</form>";

	echo "<form name=\"form\" method=\"post\" action=\"kungen.php\">";
	echo "<input type=\"hidden\" name=\"id\" value=\"".$rad['id']."\"><p>";
	echo "<input type=\"submit\" name=\"radera_post\" value=\"Radera inlägget\">";
	echo "</form>";

}

	// printar ut fältet från db tillsammans med html kod.
	#### LÄNK till inloggning
	echo "<b>".$rad['datum']."</b><br>";			
	echo "<b>Name: </b>".$rad['namn']."<br>";		
	echo "<b>City/Country: </b>".$rad['stad']."<br>";
	echo "<b>E-mail: </b>".$rad['epost']."<br>";
	echo "<b>Homepage: </b><a href='".$rad['hemsida']."' target='_blank'>".$rad['hemsida']."</a><br>";
	echo "<b>Owns a rottweiler: </b>".$rad['ager']."<p>";		
	echo "<b>Message: </b><br>".nl2br($rad['inlagg']);							// printar ut fältet från db
							
	
	### Kollar så att inte kommentar är tom, annars printa ut.
	if(!empty($rad['kommentar'])){
			echo "<br><br><font color='red'>"."<b>Answer: </b><br>";
			echo "<i>".nl2br($rad['kommentar'])."</i><br>";
			echo "// ".$rad['bnamn']."<br><font size='1'>".$rad['bdatum']."</font></font>";
	}
	echo "<hr><br>";														// printar ut vanlig html. 
}
?></td>
                </tr>
              </table>
			  
<?
## PAGING DEL 2 (den som skriver ut det hela)

if ($sid_nr > 0) { // Om man inte är på första sidan visas dom här länkarna
         echo "<a href=\"{$_SERVER['PHP_SELF']}?sida=gastbok\">Första</a> ";
         echo "<a href=\"{$_SERVER['PHP_SELF']}?sida=gastbok&sid_nr=" . ($sid_nr - 1) . "\">Föregående</a> | ";
      } else {
         echo "Första ";
         echo "Föregående | ";
      }

      if($pages_tot > 0) { // Skriver ut länkar till alla sidor om det är fler än 1 sida
         for($i = 0; $i <= $pages_tot; $i++) {
            if($i == $sid_nr) {
               echo " " . ($i + 1) . " ";
            } else {
               echo " <a href=\"{$_SERVER['PHP_SELF']}?sida=gastbok&sid_nr=$i\">" . ($i + 1) . "</a> ";
            }
         }
      } else {
         echo " 1 ";
      }

      if ($sid_nr < $pages_tot) { // Om man inte är på sista sidan visas dom här länkarna
         echo " | <a href=\"{$_SERVER['PHP_SELF']}?sida=gastbok&sid_nr=" . ($sid_nr + 1) . "\">Nästa</a> ";
         echo "<a href=\"{$_SERVER['PHP_SELF']}?sida=gastbok&sid_nr=$pages_tot\">Sista</a>";
      } else {
         echo " | Nästa ";
         echo "Sista";
      }
   } else { // Ingen data fanns i tabellen
      echo "Hittade ingen data i tabellen";
   }

				  ?>

			  
			  </td>
            <td width="10" class="dots_bg">&nbsp;</td>
            <td width="220"><?include "inc_right.php";?></td>
          </tr>
        </table> </td>
    </tr>
</table>
<?
include "inc_botten.php";
?>
</div>
</body>
</html>
<?}?>

Nu är det så att jag får en massa spam och reklam i denna gästbok. Hur gör jag för att det inte ska komma det?

Medlem sedan juni 20006 031 inlägg
#2

Låt besökaren validera genom att skriva en kod som visas i en bild.

kodexempel: http://www.phpsidan.nu/res_articles.php?view=art&id=59

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)