Avatar billede raan Nybegynder
06. juli 2008 - 14:53 Der er 13 kommentarer og
1 løsning

Spam i tagwall

Hej.
jeg har et mega problem med spam i min tagwall. Har dog fundet en simpel løsning på problemet, men kan ikke sammensætte de to koder.

Løsning:
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<?
$tal = array("nul", "en", "to", "tre", "fire", "fem", "seks", "syv", "otte", "ni", "ti");
$x = rand (0, 5);
$y = rand (0, 5);
$xy = $x+$y;
?>
Hvad er <?=$tal[$x]?> plus <?=$tal[$y]?>
<select name="resultat">
    <option value="11" SELECTED>- Vælg resultat -</option>
<?foreach ($tal as $valg) {?>
    <option><?=$valg?></option>
<?}?>
</select>
<input type="hidden" name="gemtresultat" value="<?=$xy?>">
<input type="submit">
</form>

<?
if(!empty($_POST)) {
    if($tal[$_POST['gemtresultat']] ==  strtolower($_POST['resultat'])) {?>
OK
<?    }
    else {?>
Forkert
<?    }
}
?>

Tagwall:
<?php
include("sql.php");
$query = mysql_query("SELECT * FROM **** ORDER BY id DESC")or die(mysql_error());
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
echo "<b>Af ".$row['afsender']." d. ".$row['dato']."<br></b>".$row['besked']."<br><br>";

}
}
else
{
echo "<center>Ingen gæster har valgt at skrive i gæstebogen.</center>";
}

echo "<hr width=80%>";

$todo = "" . trim($_GET["database"]);

if ($todo == "OK")
{
$afsender = mysql_escape_string($_POST["afsender"]);
$mail = mysql_escape_string($_POST["mail"]);
$besked = mysql_escape_string($_POST["besked"]);
$dato = date("j. m. Y");
$ip = $_SERVER['REMOTE_ADDR'];

$errorMsg = "";
if ($besked == "") $errorMsg .= "Skriv noget i tekst feltet?<br>";
if ($afsender == "") $errorMsg .= "Du mangler at udfylde Navn<br>";
if ($mail == "") $errorMsg .= "Du mangler at udfylde din e-mail.<br>";

if ($errorMsg == "")
{
mysql_query("INSERT INTO **** (besked,afsender,mail,dato,ip) VALUES ('$besked', '$afsender', '$mail', '$dato', '$ip')") or die("Invalid query: " . mysql_error());
echo "Din besked er nu tilføjet i gæstebogen!";
}
if( strlen($errorMsg) > 0)
echo "<b>Der var desværre fejl i det indtastede: </br></b>" . $errorMsg;
}
else {
$modtager = mysql_real_escape_string($_GET[username]);
?>
<form action="?side=tagwall&database=OK" method="post">
<b>Navn:</b><br>
<input type="text" name="afsender" size="29"><br>
<b>E-mail:</b><br>
<input type="text" name="mail" size="29"> (Din email kan kun ses af admins)<br>
<b>Besked:</b><br>
<textarea name="besked" rows="7" cols="38" ></textarea><br>
<input type="submit" value="Tilføj"></form>   
<?
}
?>
Avatar billede jakobdo Ekspert
06. juli 2008 - 19:11 #1
Prøv denne:

<?php
include("sql.php");
$query = mysql_query("SELECT * FROM **** ORDER BY id DESC")or die(mysql_error());
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
echo "<b>Af ".$row['afsender']." d. ".$row['dato']."<br></b>".$row['besked']."<br><br>";

}
}
else
{
echo "<center>Ingen gæster har valgt at skrive i gæstebogen.</center>";
}

echo "<hr width=80%>";

$todo = "" . trim($_GET["database"]);

if ($todo == "OK" && $tal[$_POST['gemtresultat']] ==  strtolower($_POST['resultat']))
{
$afsender = mysql_escape_string($_POST["afsender"]);
$mail = mysql_escape_string($_POST["mail"]);
$besked = mysql_escape_string($_POST["besked"]);
$dato = date("j. m. Y");
$ip = $_SERVER['REMOTE_ADDR'];

$errorMsg = "";
if ($besked == "") $errorMsg .= "Skriv noget i tekst feltet?<br>";
if ($afsender == "") $errorMsg .= "Du mangler at udfylde Navn<br>";
if ($mail == "") $errorMsg .= "Du mangler at udfylde din e-mail.<br>";

if ($errorMsg == "")
{
mysql_query("INSERT INTO **** (besked,afsender,mail,dato,ip) VALUES ('$besked', '$afsender', '$mail', '$dato', '$ip')") or die("Invalid query: " . mysql_error());
echo "Din besked er nu tilføjet i gæstebogen!";
}
if( strlen($errorMsg) > 0)
echo "<b>Der var desværre fejl i det indtastede: </br></b>" . $errorMsg;
}
else {
$modtager = mysql_real_escape_string($_GET[username]);
?>
<form action="?side=tagwall&database=OK" method="post">

<?
$tal = array("nul", "en", "to", "tre", "fire", "fem", "seks", "syv", "otte", "ni", "ti");
$x = rand (0, 5);
$y = rand (0, 5);
$xy = $x+$y;
?>
Hvad er <?=$tal[$x]?> plus <?=$tal[$y]?>
<select name="resultat">
    <option value="11" SELECTED>- Vælg resultat -</option>
<?foreach ($tal as $valg) {?>
    <option><?=$valg?></option>
<?}?>
</select>
<input type="hidden" name="gemtresultat" value="<?=$xy?>">

<b>Navn:</b><br>
<input type="text" name="afsender" size="29"><br>
<b>E-mail:</b><br>
<input type="text" name="mail" size="29"> (Din email kan kun ses af admins)<br>
<b>Besked:</b><br>
<textarea name="besked" rows="7" cols="38" ></textarea><br>
<input type="submit" value="Tilføj"></form> 
<?
}
?>
Avatar billede raan Nybegynder
07. juli 2008 - 12:23 #2
det virker ikke :s
Avatar billede jakobdo Ekspert
07. juli 2008 - 12:31 #3
Ok
Avatar billede raan Nybegynder
07. juli 2008 - 12:40 #4
har du et forslag til hvad fejlen kunne være?
Avatar billede jakobdo Ekspert
07. juli 2008 - 12:50 #5
Ja, linje 17 er forkert.
Avatar billede raan Nybegynder
07. juli 2008 - 13:01 #6
hvad er fejlen? :)
Avatar billede jakobdo Ekspert
07. juli 2008 - 13:08 #7
Du melder ikke nogen fejl, så jeg har ingen ide om hvad fejlen er.
Får du en fejl på din skærm ?
Avatar billede raan Nybegynder
07. juli 2008 - 13:11 #8
nej overhovedet ikke, den viser bare som normalt, også når man prøver at tilføje en besked er det ligesom den bare opdatere siden engang.
Avatar billede jakobdo Ekspert
08. juli 2008 - 10:35 #9
Det virker hvis du rykker linjen:
$tal = array("nul", "en", "to", "tre", "fire", "fem", "seks", "syv", "otte", "ni", "ti");
til toppen af dit script..

Eller ihf. bare over linjen:
if ($todo == "OK" && $tal[$_POST['gemtresultat']] ==  strtolower($_POST['resultat']))
Avatar billede raan Nybegynder
08. juli 2008 - 18:15 #10
nu virker den.

men den viser ingen fejl hvis man regner forkert. hvordan gør man det?
Avatar billede jakobdo Ekspert
08. juli 2008 - 19:01 #11
if ($todo == "OK"){
if($tal[$_POST['gemtresultat']] ==  strtolower($_POST['resultat'])){
//INDSÆT I DATABASEN
}else{
//DU HAR TASTET FORKERT
}
}
Avatar billede raan Nybegynder
08. juli 2008 - 19:10 #12
mange tak for hjælpen.
- det virker perfekt.


smid et svar.
Avatar billede jakobdo Ekspert
08. juli 2008 - 19:43 #13
Svar!
Avatar billede jakobdo Ekspert
09. juli 2008 - 06:43 #14
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester