gastenboek

Status
Niet open voor verdere reacties.

gordonh

Gebruiker
Lid geworden
11 nov 2010
Berichten
61
Hey Helpmij-leden,

ik ben sinds kort begonnen met php en heb een gastenboek gemaakt, voor op m'n website.
Hij werkt helemaal maar heb de vraag of jullie misschien wat tips ofzo hebben om hem beter te beveiligen of andere aanmerkingen hoe ik hem zou kunnen verbeteren.

Hier zijn de scripts:

contact15.php
PHP:
<?php session_start();
$email = $_SESSION['email'];
$sterren = $_SESSION['sterren'];
$naam = $_SESSION['naam'];
$bericht = $_SESSION['bericht'];
$verstuur = $_SESSION['verstuur'];
?>
<!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>RepairIt</title>
<meta name="keywords" content="" />
<meta name="description"content="" />
<link href="default.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon" />
</head>
<body>
<div id="wrapper">
<!-- start header -->
<?php include ("menu.php"); ?>
<!-- end header -->
</div>
<!-- start page -->
<div id="page">
	<!-- start content -->
	<div id="content">
		<div class="post">
			<h1 class="title">Gastenboek</h1>
            <div class="entry">
            <p>Heb ik uw pc gerepareed of geholpen met andere dingen, dan vind ik het erg leuk om daar een reactie op te krijgen. Dat kan vanaf nu in dit gastenboek!
  </p>
            <p>
              <?php
$datum = date("d-m-Y");
$tijd = date("G:i");
$dent = $datum . " @ " . $tijd;


if ($verstuur == 1)//check of er een bericht vertuurd moet worden
{
	if (strlen($bericht) > 20)//check grote van bericht
	{
		if (strlen($naam) != 0)//check grote van de naam
		{
		$file = fopen("reacties.txt","r");//open de oude berichten
		$reacties = fread($file,filesize("reacties.txt"));//sla de oude berichen op
			if ($sterren == 1)
			$ster = "<img src='images/ster.png' alt='' width='17
              ' height='22' />";
			elseif ($sterren == 2)
			$ster = "<img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' />";
			  elseif ($sterren == 3)
			$ster = "<img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' />";
			  elseif ($sterren == 4)
			$ster = "<img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' />";
			  elseif ($sterren == 5)
			$ster = "<img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' /><img src='images/ster.png' alt='' width='17
              ' height='22' />";
			
		$berichtnieuw = "<table width='500' border='0' cellspacing='0' cellpadding='0'>
		      <tr>
		        <td>" . $bericht . "</td>
	          </tr>
		      <tr>
		        <td>" . $naam . " " . $dent . "</td>
	          </tr>
			  <tr>
		        <td>" . $ster . "</td>
	          </tr>
		      </table>
		<p><img src='images/blok.jpg' alt='' width='500
              ' height='1' /></p>";
		$reactiesnieuw = $berichtnieuw . $reacties;//voeg oude en nieuwe berichten samen
		$filew = fopen("reacties.txt","w");//open bestand om te schrijven
		fwrite($filew,$reactiesnieuw);//schrijf in bestand
		fclose($filew);//sluit bestand 
		mail("contact@repairit-gouda.nl","nieuwe reactie in gastenboek","u heeft een nieuwe reactie in het gastenboek van" . $naam . "
		met het bericht:" . $bericht . "
		sterren:" . $sterren . " 
		om:" . $dent,"From: $naam <$email>");
		session_destroy();
		}
		else
		{
		echo "<font color= color='#FF0000'>FOUT</font><br />
    	<form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    	<p>Naam:* <font color= color='#FF0000'>U heeft uw naam niet ingevuld</font><br  />
   	 	<input type='text'  name='naam' /> <br  />
    	Email:<em>(niet zichtbaar op de website)</em><br />
    	<input type='text' name='email' /><br />
    	Bericht:*<br />
    	<textarea name='bericht' rows='10' cols='80'></textarea><br />
		Beoordeling: <br />
		<select name='sterren'>
		<option value='5'>5</option>
		<option value='4'>4</option>
		<option value='3'>3</option>
		<option value='2'>2</option>
		<option value='1'>1</option>
		</select><br />
    	<input type='submit' />
    	</p>
    	</form>
		<br />
		* = verplicht";
		}
	}
	else 
	{
		if (strlen($naam) != 0)//check grote van de naam
		{
		echo "<font color= color='#FF0000'>FOUT</font><br />
    	<form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    	<p>Naam:*<br  />
    	<input type='text'  name='naam' /> <br  />
   		Email:<em>(niet zichtbaar op de website)</em><br />
    	<input type='text' name='email' /><br />
    	Bericht:*  <font color= color='#FF0000'>je bericht is te kort</font><br />
    	<textarea name='bericht' rows='10' cols='80'></textarea><br />
		Beoordeling: <br />
		<select name='sterren'>
		<option value='5'>5</option>
		<option value='4'>4</option>
		<option value='3'>3</option>
		<option value='2'>2</option>
		<option value='1'>1</option>
		</select><br />
    	<input type='submit' />
    	</p>
    	</form>
		<br />
		* = verplicht";
		}
		else
		{
		echo "<font color= color='#FF0000'>FOUT</font><br />
    	<form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    	<p>Naam:* <font color= color='#FF0000'>U heeft geen naam ingevuld</font><br  />
    	<input type='text'  name='naam' /> <br  />
   		Email:<em>(niet zichtbaar op de website)</em><br />
    	<input type='text' name='email' /><br />
    	Bericht:*  <font color= color='#FF0000'>je bericht is te kort</font><br />
    	<textarea name='bericht' rows='10' cols='80'></textarea><br />
		Beoordeling: <br />
		<select name='sterren'>
		<option value='5'>5</option>
		<option value='4'>4</option>
		<option value='3'>3</option>
		<option value='2'>2</option>
		<option value='1'>1</option>
		</select><br />
    	<input type='submit' />
    	</p>
    	</form>
		<br />
		* = verplicht";
		}
	}
}
else
{ 
	if (isset($_COOKIE["bericht"]))//check of er de afgelopen 20 minuten een bericht is verstuurd
	echo "U heeft de afgelopen 20 minuten al een bericht geplaats hierna kunt u weer een bericht plaatsen.";
	else
	{ 
	echo "
    <form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    <p>Naam:*<br  />
    <input type='text'  name='naam' /> <br  />
    Email:<em>(niet zichtbaar op de website)</em><br />
    <input type='text' name='email' /><br />
    Bericht:*<br />
    <textarea name='bericht' rows='10' cols='80'></textarea><br />
	Beoordeling: <br />
	<select name='sterren'>
	<option value='5'>5</option>
	<option value='4'>4</option>
	<option value='3'>3</option>
	<option value='2'>2</option>
	<option value='1'>1</option>
	</select><br />
    <input type='submit' />
    </p>
    </form>
	<br />
	* = verplicht";
	}
}
			?>
              
            </p>
            <p>
      </div>
            <p></p>
			<div class="entry">
            <img src='images/blok.jpg' alt='' width='500
              ' height='1' />
			  <?php include("reacties.txt") ?>
			  
          </div>
			<div class="meta"></div>
		</div>
		<div class="post">
			<h2 class="title">&nbsp;</h2>
			<div class="entry">
				<p>&nbsp;</p>
		  </div>
			<div class="meta">
				<p class="links"><a href="#" class="comments"></a></p>
			</div>
		</div>
	</div>
	<!-- end content -->
	<!-- start sidebar -->
	<?php include("sidebar2.php"); ?>
	<!-- end sidebar -->
	<div style="clear: both;">&nbsp;</div>
</div>
<!-- end page -->
<!-- start footer -->
<?php 
include("footer.php"); 
?>
</body>
</html>

contact_plaats.php
PHP:
<?php
session_start();
setcookie("bericht", "1", time()+1200);
$_SESSION['verstuur'] = 1;
$bericht = $_POST["bericht"];
$bericht = htmlentities($bericht);
$bericht = nl2br($bericht);
$_SESSION['bericht'] = stripslashes($bericht);
$_SESSION['naam'] = $_POST["naam"];
$_SESSION['sterren'] = $_POST["sterren"];
$_SESSION['email'] = $_POST["email"];
?>
<meta http-equiv="refresh" content="0; url=http://www.repairit-gouda.nl/contact15.php">

Alvast bedankt!!
Gordon:thumb:
 
Bij contact_plaats.php zou ik nog controleren of $_POST['submit'] isset en op de waarde controleren.
Ook zou je nog met een hidden field een uniek getal laten verzenden.

Op die manier sluit je die pagina wat meer af.

En in contact15.php controleer je steeds de waarde van sterren, om het aantal plaatjes van sterren op het scherm te krijgen. Dat zou ik in een loop zetten. Kun je in de toekomst ook nog op een simpele manier de aantal sterren uitbreiden.
 
Je kunt nog een heleboel winnen door het zo aan te passen dat je niet 5x of 6x dezelfde lap HTML in je file hebt staan, want als je nu een 6e optie aan je gastenboek toevoegt ben je een heleboel tijd kwijt.
 
hey

heel erg bedankt voor de reacties!

ik heb net geprobeerd om die submit check erin te krijgen maar het lukte niet echt dus heb ik die maar achterwegen gelaten, omdat de meer waarde geloof ik niet erg veel is.

wel heb ik nu while gebruikt ipv if.

en ook heb ik een verborgen element toegevoegd aan de form tegen spambots.

dit zijn de scripts nu:

contact15.php
PHP:
<?php session_start();
$email = $_SESSION['email'];
$sterren = $_SESSION['sterren'];
$naam = $_SESSION['naam'];
$bericht = $_SESSION['bericht'];
$verstuur = $_SESSION['verstuur'];
$human = $_SESSION['human'];
?>
<!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>RepairIt</title>
<meta name="keywords" content="" />
<meta name="description"content="" />
<link href="default.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon" />
</head>
<body>
<div id="wrapper">
<!-- start header -->
<?php include ("menu.php"); ?>
<!-- end header -->
</div>
<!-- start page -->
<div id="page">
	<!-- start content -->
	<div id="content">
		<div class="post">
			<h1 class="title">Gastenboek</h1>
            <div class="entry">
            <p>Heb ik uw pc gerepareerd of geholpen met andere dingen, dan zou ik het erg leuk vinden als u daar een reactie over wilt geven. Dat kunt u doen in dit gastenboek!
  </p>
            <p>
              <?php
$datum = date("d-m-Y");
$tijd = date("G:i");
$dent = $datum . " @ " . $tijd;

if ($verstuur == 1)//check of er een bericht vertuurd moet worden
{
	if (strlen($human) == 0 )//check of het verborgen vlak is ingevuld(spambot)
	{
	if (strlen($bericht) > 20)//check grote van bericht
	{
		if (strlen($naam) != 0)//check grote van de naam
		{
		$file = fopen("reacties.txt","r");//open de oude berichten
		$reacties = fread($file,filesize("reacties.txt"));//sla de oude berichen op
			$tellen = 1;
		$ster = "<img src='images/ster.png' alt='' width='17
              ' height='22' />";
		$stererbij = "<img src='images/ster.png' alt='' width='17
              ' height='22' />";
		while ($tellen < $sterren)
		{
		$ster = $ster . $stererbij;
		$tellen++;
		}
			
		$berichtnieuw = "<table width='500' border='0' cellspacing='0' cellpadding='0'>
		      <tr>
		        <td>" . $bericht . "</td>
	          </tr>
		      <tr>
		        <td>" . $naam . " " . $dent . "</td>
	          </tr>
			  <tr>
		        <td>" . $ster . "</td>
	          </tr>
		      </table>
		<p><img src='images/blok.jpg' alt='' width='500
              ' height='1' /></p>";
		$reactiesnieuw = $berichtnieuw . $reacties;//voeg oude en nieuwe berichten samen
		$filew = fopen("reacties.txt","w");//open bestand om te schrijven
		fwrite($filew,$reactiesnieuw);//schrijf in bestand
		fclose($filew);//sluit bestand 
		mail("contact@repairit-gouda.nl","nieuwe reactie in gastenboek","u heeft een nieuwe reactie in het gastenboek van" . $naam . "
		met het bericht:" . $bericht . "
		sterren:" . $sterren . " 
		om:" . $dent,"From: $naam <$email>");
		session_destroy();
		}
		else
		{
		echo "<font color= color='#FF0000'>FOUT</font><br />
    	<form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    	<p>Naam:* <font color= color='#FF0000'>U heeft geen naam ingevuld</font><br  />
		<input class='human' name='human' type'text' />
   	 	<input type='text'  name='naam' /> <br  />
    	Email:<em>(niet zichtbaar op de website)</em><br />
    	<input type='text' name='email' /><br />
    	Bericht:*<br />
    	<textarea name='bericht' rows='10' cols='80'></textarea><br />
		Beoordeling: <br />
		<select name='sterren'>
		<option value='5'>5(goed)</option>
		<option value='4'>4</option>
		<option value='3'>3</option>
		<option value='2'>2</option>
		<option value='1'>1(slecht)</option>
		</select><br />
    	<input type='submit' />
    	</p>
    	</form>
		<br />
		* = verplicht";
		}
	}
	else 
	{
		if (strlen($naam) != 0)//check grote van de naam
		{
		echo "<font color= color='#FF0000'>FOUT</font><br />
    	<form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    	<p>Naam:*<br  />
		<input class='human' name='human' type'text' />
    	<input type='text'  name='naam' /> <br  />
   		Email:<em>(niet zichtbaar op de website)</em><br />
    	<input type='text' name='email' /><br />
    	Bericht:*  <font color= color='#FF0000'>Uw bericht is te kort</font><br />
    	<textarea name='bericht' rows='10' cols='80'></textarea><br />
		Beoordeling: <br />
		<select name='sterren'>
		<option value='5'>5(goed)</option>
		<option value='4'>4</option>
		<option value='3'>3</option>
		<option value='2'>2</option>
		<option value='1'>1(slecht)</option>
		</select><br />
    	<input type='submit' />
    	</p>
    	</form>
		<br />
		* = verplicht";
		}
		else
		{
		echo "<font color= color='#FF0000'>FOUT</font><br />
    	<form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    	<p>Naam:* <font color= color='#FF0000'>U heeft geen naam ingevuld</font><br  />
		<input class='human' name='human' type'text' />
    	<input type='text'  name='naam' /> <br  />
   		Email:<em>(niet zichtbaar op de website)</em><br />
    	<input type='text' name='email' /><br />
    	Bericht:*  <font color= color='#FF0000'>Uw bericht is te kort</font><br />
    	<textarea name='bericht' rows='10' cols='80'></textarea><br />
		Beoordeling: <br />
		<select name='sterren'>
		<option value='5'>5(goed)</option>
		<option value='4'>4</option>
		<option value='3'>3</option>
		<option value='2'>2</option>
		<option value='1'>1(slecht)</option>
		</select><br />
    	<input type='submit' />
    	</p>
    	</form>
		<br />
		* = verplicht";
		}
	}	
	}
	else
	{echo "spambot! je hebt het onzichtbare vlak ingevuld!";}
}

else
{ 
	if (isset($_COOKIE["bericht"]))//check of er de afgelopen 20 minuten een bericht is verstuurd
	echo "U heeft de afgelopen 20 minuten al een bericht geplaats hierna kunt u weer een bericht plaatsen.";
	else
	{ 
	echo "
    <form method='post' action='contact_plaats.php' accept-charset='ISO-8859-1'>
    <p>Naam:*<br  />
	<input class='human' name='human' type'text' />
    <input type='text'  name='naam' /> <br  />
    Email:<em>(niet zichtbaar op de website)</em><br />
    <input type='text' name='email' /><br />
    Bericht:*<br />
    <textarea name='bericht' rows='10' cols='80'></textarea><br />
	Beoordeling: <br />
	<select name='sterren'>
	<option value='5'>5(goed)</option>
	<option value='4'>4</option>
	<option value='3'>3</option>
	<option value='2'>2</option>
	<option value='1'>1(slecht)</option>
	</select><br />
    <input type='submit' />
    </p>
    </form>
	<br />
	* = verplicht";
	}
	
}

			?>
              
            </p>
            <p>
      </div>
            <p></p>
			<div class="entry">
            <img src='images/blok.jpg' alt='' width='500
              ' height='1' />
			  <?php include("reacties.txt") ?>
			  
          </div>
			<div class="meta"></div>
		</div>
		<div class="post">
			<h2 class="title">&nbsp;</h2>
			<div class="entry">
				<p>&nbsp;</p>
		  </div>
			<div class="meta">
				<p class="links"><a href="#" class="comments"></a></p>
			</div>
		</div>
	</div>
	<!-- end content -->
	<!-- start sidebar -->
	<?php include("sidebar2.php"); ?>
	<!-- end sidebar -->
	<div style="clear: both;">&nbsp;</div>
</div>
<!-- end page -->
<!-- start footer -->
<?php 
include("footer.php"); 
?>
</body>
</html>

contact_plaats.php
PHP:
<?php
session_start();
setcookie("bericht", "1", time()+1200);
$_SESSION['verstuur'] = 1;
$bericht = $_POST["bericht"];
$bericht = htmlentities($bericht);
$bericht = nl2br($bericht);
$_SESSION['bericht'] = stripslashes($bericht);
$_SESSION['naam'] = $_POST["naam"];
$_SESSION['sterren'] = $_POST["sterren"];
$_SESSION['email'] = $_POST["email"];
$_SESSION['human'] = $_POST['human'];
?>
<meta http-equiv="refresh" content="0; url=http://www.repairit-gouda.nl/contact15.php">

Gordon
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan