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
1 svar · 673 visningar · startad av Blockqoute
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"> </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?
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