Autor Zpráva
akali
Profil *
Ahoj, měl bych dotaz ohledně smapů na fóru. Tady je kód

1if (isset($_POST['odeslano']))
2{
3    if (empty($_POST['jmeno']) || empty($_POST['text']) || ($_POST['spam']!='5'))
4    {   
5 
6        echo "<div id=\"neodeslano\">
7        <table align=left>
8        <tr><td>Vaše zpráva nebyla odeslána! Jedno z políček</td></tr>
9        <tr><td> má prázdnou, nebo nesprávnou hodnotu!</td></tr>
10        </table></div>";
11    }
12    else 
13 
14----- pokračování php kódu----
15 
16a pak mám tři políčka v html
17 
18<input name="jmeno" size="10"><br>
19<input name="text" size="10"><br>
20<input name="spam" size="10"><br>
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']) || ($_POST['spam']!='5'))
    {   
 
        echo "<div id=\"neodeslano\">
        <table align=left>
        <tr><td>Vaše zpráva nebyla odeslána! Jedno z políček</td></tr>
        <tr><td> má prázdnou, nebo nesprávnou hodnotu!</td></tr>
        </table></div>";
    }
    else 
 
----- pokračování php kódu----
 
a pak mám tři políčka v html
 
<input name="jmeno" size="10"><br>
<input name="text" size="10"><br>
<input name="spam" size="10"><br>


Myslel jsem, že takto zabráním spamům, když napíšu před input "spam" příklad 10-5 a nevyplní se 5 tak se to neodešle, ale omyl je pravdou, spamů je víc a víc. Pomohl by mi někdo vyřešit tuto situaci? Popřípadě jak se to dělá v dnešní době?
Radovan789
Profil *
Já například předpokládám že internetoví bot nemá zaplé Cookies a většina uživatelů zaplé cookies má.
akali
Profil *
To si mi poradil. Nevím z toho hlavu ani patu.
Radovan789
Profil *
Takže:
vytvořím si 2 proměné s (int) od 1 do 10
a pak třeba můžu zapsat do dokumentu.
1<?php
2$promena1 = mt_rand(1,10);
3$promena2 = mt_rand(1,10);
4 
5$cookie = md5(md5($promena1+$promena2)."tajná sůl");
6 
7setcookie("cookie",$cookie);
8?>
9 
10<script type="text/javascript">
11document.write(["<?=$promena1?>", "<?=$promena2?>"].join(" + "));
12</script>
13 
14<input type="text" name="email">
<?php
$promena1 mt_rand(1,10);
$promena2 mt_rand(1,10);
 
$cookie md5(md5($promena1+$promena2)."tajná sůl");
 
setcookie("cookie",$cookie);
?>
 
<script type="text/javascript">
document.write(["<?=$promena1?>", "<?=$promena2?>"].join(" + "));
</script>
 
<input type="text" name="email">


Doporučuji použít name=email protože boti tam začnou cpát emaily.

A když se to postne tak:
if ($_COOKIE["cookie"] == md5(md5(POST["email"])."tajná sůl")) {
echo "vse ok";
}
if ($_COOKIE["cookie"] == md5(md5(POST["email"])."tajná sůl")) {
echo "vse ok";
}
Bubák
Profil
akali:
Pro jistotu se zeptám, jde o spam od spambotů, a ne od lidí, spamerů?

Zdejší antispam používá něco podobného, hodnotu vyplňuje JavaScript. Kdo má JS vypnutý, musí hodnotu vyplnit ručně. Dříve bylo číslo jednomístné, pak se nějaký spam od spambotů začal objevovat, nyní je číslo dvoumístné a spam od spambotů se neobjevuje.
Radovan789
Profil *
Bubák:
Co myslíš tím Zdejší antispam ?
akali
Profil *
Je to rozhodně od spam botů. Přes noc jich přibyde zhruba 25

S cookies jsem na webu ještě nikdy nepracoval a ten návod od Radovana nějak nechápu. Spíš ani nevím jak to do mýho kódu zapracovat.
Radovan789
Profil *
Tak sem pošli celý tvůj kód a já ti to tam přidám.
akali
Profil *
Možná se tohoto kódu zděsíš, ale nejsem na tom se znalostmi tak jak Vy, bohužel :(

1<?php
2if (isset($_POST['odeslano']))
3{
4    if (empty($_POST['jmeno']) || empty($_POST['text']) || ($_POST['spam']!='5'))
5    {   
6 
7        echo "<div id=\"neodeslano\">
8        <table align=left>
9        <tr><td>Vaše zpráva nebyla odeslána! Jedno z políček</td></tr>
10        <tr><td> má prázdnou, nebo nesprávnou hodnotu!</td></tr>
11        </table></div>";
12        
13        
14    }
15    else
16    {   
17        $ref = $REMOTE_ADDR;
18        $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); 
19 
20        // Připojení k databázi.
21include '../db.php';
22 
23        // Správné nastavení češtiny.
24        $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'");
25 
26        // Vytvoření SQL příkazu typu INSERT.
27        $sql_prikaz = 
28            "INSERT INTO muzi(jmeno, datum, ip_adresa, text) "
29            ."VALUES('"
30            .mysqli_real_escape_string($db_spojeni,$_POST['jmeno'])
31            ."','"
32            .mysqli_real_escape_string($db_spojeni,$datum)
33            ."','" 
34            .mysqli_real_escape_string($db_spojeni,$ref)
35            ."','"
36            .mysqli_real_escape_string($db_spojeni,$_POST['text'])
37            ."')"
38        ;
39 
40        // Zaslání SQL příkazu do databáze.
41        $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz);
42    
43    header("Location: forum.php?odeslano");
44     
45  }  
46}
47?>
48 
49<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
50<html>
51<head>
52<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
53<link rel="stylesheet" type="text/css" href="../style.css">
54<meta http-equiv="Content-Style-Type" content="text/css">
55<meta http-equiv="Content-Script-Type" content="text/javascript">
56<meta name="author" content="; kittlerpeta@centrum.cz: ">
57<meta name="description" content="Velký Beranov - fotbal, muži (fórum)">
58<link rel="shortcut icon" href="../images/favicon.jpg">
59<title>Velký Beranov - fotbal</title>
60</head>   
61 
62<?php 
63 
64include '../db.php';
65          
66$objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'");
67 
68$objekt_vysledku = mysqli_query($db_spojeni, 
69  'SELECT * FROM ip_ban');
70 
71while ($radek = mysqli_fetch_array($objekt_vysledku))
72{
73$ban[] = $radek['ip_adresa'];  
74}
75 
76mysqli_free_result($objekt_vysledku);
77 
78if ($db_spojeni)
79  mysqli_close($db_spojeni);
80 
81 
82$ip = $_SERVER['REMOTE_ADDR'];
83if(in_array($ip, $ban)){
84include ("ban.php");
85}
86else
87{
88?>
89 
90 
91 
92<body>
93<div id="main">
94<div id="head">
95<img alt='' src="../images/hlavicka_vb_c.jpg" onmouseover="this.src = '../images/hlavicka_vb_b.jpg'" onmouseout="this.src = '../images/hlavicka_vb_c.jpg'">
96 
97 
98</div>
99 
100 
101<div style="padding: 0 0 0 0;">
102 
103<div id="levy_menu">
104<div id="menu">
105 <ul class="glossymenu">
106<li><a href="../home_novinky.php">Home</a></li>
107<li><a href="../kontakt.php">Kontakt</a></li>
108<li><a href="../ml_zaci/ml_zaci.php">Mladší žáci</a></li>
109<li><a href="../st_zaci/st_zaci.php">Starší žáci</a></li>
110<li><a href="../dorost/dorost.php" >Dorost</a></li>
111<li><a href="../muzi/muzi.php" class="trida">Muži</a></li>        
112 </ul>
113</div>
114<div style="position: absolute; left: 20px; top: 400px;"><img src="images/muzi_vlevo.jpg" alt=''> </div>
115<div style="position: absolute; z-index : 2; padding: 200px 0px 5px 250px;"><img src="images/mic.jpg" alt=''> </div>
116</div>
117 
118 
119<div style="float: left; width: 447px; background-image: url(../images/pozadi_menu.jpg); background-repeat: repeat-x;">
120<div style="width: 355px; min-height:550px; position: relative; left: 45px; top: 20px;">
121<div style="max-width:355px; height: 15px; background-color: #98B22F; text-align: right; line-height: 0.8;">
122 <table>
123 <tr>
124 <td style="width: 110px;"></td>
125 <td style="width: 50px;"><a href="forum.php">Fórum</a></td>
126 <td style="width: 78px;"><a href="galerie/index.php">Fotogalerie</a></td>
127 <td style="width: 52px;"><a href="http://nv.fotbal.cz/domaci-souteze/kao/vysocina/jihlava/souteze.asp?soutez=612A1A">Tabulka</a></td>
128 <td style="width: 50px;"><a href="hraci.php">Hráči</a></td> 
129 </tr>
130 </table> 
131</div>
132<div style="position: relative; top: 10px; width=355px;">
133 
134 
135<form name="odeslano" action="#" method="post">
136<b><font color="#808080">-Jméno:</font></b><br>
137<input name="jmeno" size="10"><br>
138<b><font color="#808080">-Zpráva:</font></b><br>
139<textarea name="text" onKeyPress="maxpocet(this,400)" onKeyUp="maxpocet(this,400)" rows="3" cols="30" id="policko">
140</textarea><br>
141<b><font color="#808080">-Spam</b> (napiš číslicí)</font><br>
142<b><font color="#808080">10 - 5 =</font></b><input name="spam" size="2"><br> <br>
143<input type="submit" name="odeslano" value="Odeslat zprávu">
144</form>
145 
146<div id="infobox" style="visibility:hidden; position:absolute; top: 1px; left: 135px; color:white; font-size:11px;">
147Text ve zprávě je omezen na 400 znaků<br>
148Zbývá <b><span id="zbyva"></span></b> znaků<br>
149Nyní je napsáno <b><span id="napsano"></span></b> znaků
150</div>
151 
152<script type="text/javascript" src="../script.js"></script>
153 
154<div id="ip_adresa">
155Při zaslání příspěvku do tohoto fóra, je zapisována Vaše ip-adresa, chovejte se proto tak, jak máte. Vyjadřujte se slušně 
156</div>
157 
158<?php
159  if(isset($_GET["odeslano"]))
160 echo "<div id=\"odeslano\"><img src=../images/ok.png height=20px width=20px><span style=\"vertical-align: top\">Vaše zpráva byla úspěšně odeslána</span></div>"; 
161?>
162<hr>
163 
164 
165 
166 
167<?php 
168/********Vypis****************************************************************************************************/ 
169// Připojení k databázi.
170include '../db.php';
171 
172// Správné nastavení češtiny.
173$objekt_vysledku = mysqli_query($db_spojeni,"SET NAMES 'UTF8'");
174 
175// zjištění počtu řádků v tabulce:
176$radku=MySQLi_Fetch_Row(MySQLi_Query($db_spojeni,"SELECT COUNT(0) FROM muzi"));$radku=$radku[0]/20;
177 
178// Zaslání SQL příkazu do databáze.
179$strana=IntVal($_GET['strana']); //číselná hodnota ?strana=
180  $strana=$strana*20;
181$objekt_vysledku = mysqli_query($db_spojeni,"SELECT * FROM muzi ORDER BY id DESC LIMIT $strana,20");
182 
183 
184Echo '<div style="background-color: #2C292A; text-align: center; color: white; ">';
185Echo 'Strana: ';
186For($i = 0; $i < $radku; $i++) Echo '<a href="'.$_SERVER["SCRIPT_NAME"].'?strana='.Floor($i).'">'.Floor($i + 1).'</a>'.($i + 1 < $radku ? ', ' : '');
187Echo '</div><br>';
188 
189 
190// Zobrazení všech vrácených dat.
191while ($radek = mysqli_fetch_array($objekt_vysledku))
192{
193  echo '<font color="white"><b>',$radek['jmeno'],'</b><br>';
194  echo '',$radek['datum'],'<br>';
195  echo '',$radek['text'],'<br></font>';
196  echo '<br>';
197}
198 
199// Zavření objektu výsledku, protože už ho nebudeme používat.
200mysqli_free_result($objekt_vysledku);
201 
202// Odpojení od databáze.
203if ($db_spojeni)
204  mysqli_close($db_spojeni);
205  
206Echo '<div style="background-color: #2C292A; text-align: center; color: white; ">';
207Echo 'Strana: ';
208For($i = 0; $i < $radku; $i++) Echo '<a href="'.$_SERVER["SCRIPT_NAME"].'?strana='.Floor($i).'">'.Floor($i + 1).'</a>'.($i + 1 < $radku ? ', ' : '');
209Echo '</div>';
210?>
211 
212 
213</div>
214</div>
215</div>
216 
217<div id="pravy_
218    
<?php
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']) || ($_POST['spam']!='5'))
    {   
 
        echo "<div id=\"neodeslano\">
        <table align=left>
        <tr><td>Vaše zpráva nebyla odeslána! Jedno z políček</td></tr>
        <tr><td> má prázdnou, nebo nesprávnou hodnotu!</td></tr>
        </table></div>";
        
        
    }
    else
    {   
        $ref $REMOTE_ADDR;
        $datum StrFTime("%d/%m/%Y %H:%M:%S"Time()); 
 
        // Připojení k databázi.
include '../db.php';
 
        // Správné nastavení češtiny.
        $objekt_vysledku mysqli_query($db_spojeni"SET NAMES 'UTF8'");
 
        // Vytvoření SQL příkazu typu INSERT.
        $sql_prikaz = 
            "INSERT INTO muzi(jmeno, datum, ip_adresa, text) "
            ."VALUES('"
            .mysqli_real_escape_string($db_spojeni,$_POST['jmeno'])
            ."','"
            .mysqli_real_escape_string($db_spojeni,$datum)
            ."','" 
            .mysqli_real_escape_string($db_spojeni,$ref)
            ."','"
            .mysqli_real_escape_string($db_spojeni,$_POST['text'])
            ."')"
        ;
 
        // Zaslání SQL příkazu do databáze.
        $objekt_vysledku mysqli_query($db_spojeni$sql_prikaz);
    
    header("Location: forum.php?odeslano");
     
  }  
}
?>
 
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../style.css">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="author" content="; kittlerpeta@centrum.cz: ">
<meta name="description" content="Velký Beranov - fotbal, muži (fórum)">
<link rel="shortcut icon" href="../images/favicon.jpg">
<title>Velký Beranov - fotbal</title>
</head>   
 
<?php 
 
include '../db.php';
          
$objekt_vysledku mysqli_query($db_spojeni"SET NAMES 'UTF8'");
 
$objekt_vysledku mysqli_query($db_spojeni, 
  'SELECT * FROM ip_ban');
 
while ($radek mysqli_fetch_array($objekt_vysledku))
{
$ban[] = $radek['ip_adresa'];  
}
 
mysqli_free_result($objekt_vysledku);
 
if ($db_spojeni)
  mysqli_close($db_spojeni);
 
 
$ip $_SERVER['REMOTE_ADDR'];
if(in_array($ip$ban)){
include ("ban.php");
}
else
{
?>
 
 
 
<body>
<div id="main">
<div id="head">
<img alt='' src="../images/hlavicka_vb_c.jpg" onmouseover="this.src = '../images/hlavicka_vb_b.jpg'" onmouseout="this.src = '../images/hlavicka_vb_c.jpg'">
 
 
</div>
 
 
<div style="padding: 0 0 0 0;">
 
<div id="levy_menu">
<div id="menu">
 <ul class="glossymenu">
<li><a href="../home_novinky.php">Home</a></li>
<li><a href="../kontakt.php">Kontakt</a></li>
<li><a href="../ml_zaci/ml_zaci.php">Mladší žáci</a></li>
<li><a href="../st_zaci/st_zaci.php">Starší žáci</a></li>
<li><a href="../dorost/dorost.php" >Dorost</a></li>
<li><a href="../muzi/muzi.php" class="trida">Muži</a></li>        
 </ul>
</div>
<div style="position: absolute; left: 20px; top: 400px;"><img src="images/muzi_vlevo.jpg" alt=''> </div>
<div style="position: absolute; z-index : 2; padding: 200px 0px 5px 250px;"><img src="images/mic.jpg" alt=''> </div>
</div>
 
 
<div style="float: left; width: 447px; background-image: url(../images/pozadi_menu.jpg); background-repeat: repeat-x;">
<div style="width: 355px; min-height:550px; position: relative; left: 45px; top: 20px;">
<div style="max-width:355px; height: 15px; background-color: #98B22F; text-align: right; line-height: 0.8;">
 <table>
 <tr>
 <td style="width: 110px;"></td>
 <td style="width: 50px;"><a href="forum.php">Fórum</a></td>
 <td style="width: 78px;"><a href="galerie/index.php">Fotogalerie</a></td>
 <td style="width: 52px;"><a href="http://nv.fotbal.cz/domaci-souteze/kao/vysocina/jihlava/souteze.asp?soutez=612A1A">Tabulka</a></td>
 <td style="width: 50px;"><a href="hraci.php">Hráči</a></td> 
 </tr>
 </table> 
</div>
<div style="position: relative; top: 10px; width=355px;">
 
 
<form name="odeslano" action="#" method="post">
<b><font color="#808080">-Jméno:</font></b><br>
<input name="jmeno" size="10"><br>
<b><font color="#808080">-Zpráva:</font></b><br>
<textarea name="text" onKeyPress="maxpocet(this,400)" onKeyUp="maxpocet(this,400)" rows="3" cols="30" id="policko">
</textarea><br>
<b><font color="#808080">-Spam</b> (napiš číslicí)</font><br>
<b><font color="#808080">10 - 5 =</font></b><input name="spam" size="2"><br> <br>
<input type="submit" name="odeslano" value="Odeslat zprávu">
</form>
 
<div id="infobox" style="visibility:hidden; position:absolute; top: 1px; left: 135px; color:white; font-size:11px;">
Text ve zprávě je omezen na 400 znaků<br>
Zbývá <b><span id="zbyva"></span></b> znaků<br>
Nyní je napsáno <b><span id="napsano"></span></b> znaků
</div>
 
<script type="text/javascript" src="../script.js"></script>
 
<div id="ip_adresa">
Při zaslání příspěvku do tohoto fóra, je zapisována Vaše ip-adresa, chovejte se proto tak, jak máte. Vyjadřujte se slušně 
</div>
 
<?php
  if(isset($_GET["odeslano"]))
 echo "<div id=\"odeslano\"><img src=../images/ok.png height=20px width=20px><span style=\"vertical-align: top\">Vaše zpráva byla úspěšně odeslána</span></div>"; 
?>
<hr>
 
 
 
 
<?php 
/********Vypis****************************************************************************************************/ 
// Připojení k databázi.
include '../db.php';
 
// Správné nastavení češtiny.
$objekt_vysledku mysqli_query($db_spojeni,"SET NAMES 'UTF8'");
 
// zjištění počtu řádků v tabulce:
$radku=MySQLi_Fetch_Row(MySQLi_Query($db_spojeni,"SELECT COUNT(0FROM muzi"));$radku=$radku[0]/20;
 
// Zaslání SQL příkazu do databáze.
$strana=IntVal($_GET['strana']); //číselná hodnota ?strana=
  $strana=$strana*20;
$objekt_vysledku mysqli_query($db_spojeni,"SELECT * FROM muzi ORDER BY id DESC LIMIT $strana,20");
 
 
Echo '<div style="background-color: #2C292A; text-align: center; color: white; ">';
Echo 'Strana: ';
For($i 0$i $radku$i++) Echo '<a href="'.$_SERVER["SCRIPT_NAME"].'?strana='.Floor($i).'">'.Floor($i 1).'</a>'.($i 1 < $radku '' : '');
Echo '</div><br>';
 
 
// Zobrazení všech vrácených dat.
while ($radek mysqli_fetch_array($objekt_vysledku))
{
  echo '<font color="white"><b>',$radek['jmeno'],'</b><br>';
  echo '',$radek['datum'],'<br>';
  echo '',$radek['text'],'<br></font>';
  echo '<br>';
}
 
// Zavření objektu výsledku, protože už ho nebudeme používat.
mysqli_free_result($objekt_vysledku);
 
// Odpojení od databáze.
if ($db_spojeni)
  mysqli_close($db_spojeni);
  
Echo '<div style="background-color: #2C292A; text-align: center; color: white; ">';
Echo 'Strana: ';
For($i 0$i $radku$i++) Echo '<a href="'.$_SERVER["SCRIPT_NAME"].'?strana='.Floor($i).'">'.Floor($i 1).'</a>'.($i 1 < $radku '' : '');
Echo '</div>';
?>
 
 
</div>
</div>
</div>
 
<div id="pravy_
    
akali
Profil *
Dokončení kódu, jinak nevím, proč to na každým novým řádku udělalo mezeru

1<div id="pravy_menu">
2  <div id="pravy_obr">
3  <script type="text/javascript">
4            var obrazky = new Array("images/vb-jamne.jpg", "images/hriste.jpg", "images/kabiny.jpg");
5            document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>");
6            document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>");
7            document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>");
8  </script>  
9   </div>
10  <div style="position: relative; top: 157px;"><img src="../images/prava_sil.jpg" alt=''></div>
11</div>
12</div>
13 
14<br class="cleaner"> <br>
15<?php
16include '../footer.php';
17?>
18 
19</div>
20</body>
21<?
22}
23?> 
24</html>
<div id="pravy_menu">
  <div id="pravy_obr">
  <script type="text/javascript">
            var obrazky = new Array("images/vb-jamne.jpg", "images/hriste.jpg", "images/kabiny.jpg");
            document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>");
            document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>");
            document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>");
  </script>  
   </div>
  <div style="position: relative; top: 157px;"><img src="../images/prava_sil.jpg" alt=''></div>
</div>
</div>
 
<br class="cleaner"> <br>
<?php
include '../footer.php';
?>
 
</div>
</body>
<?
}
?> 
</html>
Radovan789
Profil *
No tak bych to viděl nějak takhle, doufám že to pochopíš:
1if (isset($_POST['odeslano']))
2{
3    if (empty($_POST['jmeno']) || empty($_POST['text']) || $_COOKIE["cookie"] != md5(md5(POST["email"])."tajná sůl"))
4    {   
5 
6        echo "<div id=\"neodeslano\">
7        <table align=left>
8        <tr><td>Vaše zpráva nebyla odeslána! Jedno z políček</td></tr>
9        <tr><td> má prázdnou, nebo nesprávnou hodnotu!</td></tr>
10        </table></div>";
11    }
12    else 
13 
14----- pokračování php kódu----
15 
16a pak mám tři políčka v html
17 
18<input name="jmeno" size="10"><br>
19<input name="text" size="10"><br>
20<?php
21$promena1 = mt_rand(1,10);
22$promena2 = mt_rand(1,10);
23 
24$cookie = md5(md5($promena1+$promena2)."tajná sůl");
25 
26setcookie("cookie",$cookie);
27?>
28 
29Kolik je 
30<script type="text/javascript">
31document.write(["<?=$promena1?>", "<?=$promena2?>"].join(" + "));
32</script>
33?
34<input name="email" size="10"><br>
if (isset($_POST['odeslano']))
{
    if (empty($_POST['jmeno']) || empty($_POST['text']) || $_COOKIE["cookie"] != md5(md5(POST["email"])."tajná sůl"))
    {   
 
        echo "<div id=\"neodeslano\">
        <table align=left>
        <tr><td>Vaše zpráva nebyla odeslána! Jedno z políček</td></tr>
        <tr><td> má prázdnou, nebo nesprávnou hodnotu!</td></tr>
        </table></div>";
    }
    else 
 
----- pokračování php kódu----
 
a pak mám tři políčka v html
 
<input name="jmeno" size="10"><br>
<input name="text" size="10"><br>
<?php
$promena1 mt_rand(1,10);
$promena2 mt_rand(1,10);
 
$cookie md5(md5($promena1+$promena2)."tajná sůl");
 
setcookie("cookie",$cookie);
?>
 
Kolik je 
<script type="text/javascript">
document.write(["<?=$promena1?>", "<?=$promena2?>"].join(" + "));
</script>
?
<input name="email" size="10"><br>
Radovan789
Profil *
Mám chybu na řádku 3:

Má tam být:

3... if (empty($_POST['jmeno']) || empty($_POST['text']) || $_COOKIE["cookie"] != md5(md5($_POST["email"])."tajná sůl"))
4... {
akali
Profil *
Jak jste se v tom vyznal? :-)
Ještě mi to hlásí chybku na tomto řádku

if (empty($_POST['jmeno']) || empty($_POST['text']) || $_COOKIE["cookie"] != md5(md5(POST["email"])."tajná sůl"))


Parse error: syntax error, unexpected '[' in /home/www/velkyberanov-fotbal.cz/subdomeny/www/muzi/forum.php on line 4
Bubák
Profil
Radovan789:
Co myslíš tím Zdejší antispam ?
Antispam použitý v této Diskusi. Kdo si ho chce užít, musí si vypnout JavaScript.
Na serveru se v PHP zkontroluje odeslaná hodnota, ale s tím akali nemá problém.
akali
Profil *
Omlouvám se, nevšimnul jsme si Vaší zprávy. Ještě to hlásí chybu zde


setcookie("cookie",$cookie);
?>

Warning: Cannot modify header information - headers already sent by (output started at /home/www/velkyberanov-fotbal.cz/subdomeny/www/muzi/forum.php:11) in /home/www/velkyberanov-fotbal.cz/subdomeny/www/muzi/forum.php on line 142
Radovan789
Profil *
Bubák:
Zdejší antispam používá něco podobného, hodnotu vyplňuje JavaScript. Kdo má JS vypnutý, musí hodnotu vyplnit ručně. Dříve bylo číslo jednomístné, pak se nějaký spam od spambotů začal objevovat, nyní je číslo dvoumístné a spam od spambotů se neobjevuje.

Zřejmě si ten můj anti-spam nepochopil, uživatel musí mít zaplý JS i Cookies ale za nikoho nic nevyplňuje.

akali:
Vyzkoušej tu opravu co jsem napsal a napiš jestli jede.
Radovan789
Profil *
akali:
No tak to budete muset dát celého soboru:
<?php
ob_start();
?>
<?php
ob_start();
?>


a uplně nakonec celého souboru:
<?php
ob_end_flush();
?>
<?php
ob_end_flush();
?>
Radovan789
Profil *
<?php
ob_start();
?>
<?php
ob_start();
?>


Na začátek souboru.

<?php
ob_end_flush();
?>
<?php
ob_end_flush();
?>


Na konec souboru.

Omlouvám se za překlep
akali
Profil *
Výborně. Nyní to funguje tak, jak má
Snad jen bych byl rád, kdyby jste měl ještě chviličku času a vysvětlil mi tyto dva řádky
$cookie = md5(md5($promena1+$promena2)."tajná sůl");
a
setcookie("cookie",$cookie);
$cookie md5(md5($promena1+$promena2)."tajná sůl");
a
setcookie("cookie",$cookie);
Radovan789
Profil *
$cookie = md5(md5($promena1+$promena2)."tajná sůl");

Uděláme si hash (otisk) viz http://cs.wikipedia.org/wiki/MD5 kvuli znepřístupnění hodnoty spam bota.

příklad:
echo md5("ahoj");

vypíše: 79c2b46ce2594ecbcb5b73e928345492

Tím pádem když třeba zašifrujeme čísla 5+10 tak útočník je nikdy nezjistí.

A slovo tajná sůl je jenom takoví přestředek k zabezpečení (viz wikipedie). Takže slovo "tajná sůl" doporučuji změnit na nějaký nesmysl a pak to stejné slovo dát i do podmínky.

setcookie("cookie",$cookie);
Vytvoří u klienta cookie s názvem cookie a hodnotou $cookie (zašifrovaná informace).

viz: http://cs.wikipedia.org/wiki/Cookie


Nejsem moc dobrý na vysvětlování.

Ale zítra napište jestli tenhle anti-spam funguje :-)
akali
Profil *
možná to nechápu, ale ty slova mám přepsat takto? + přidat do podmínky

$cookie = md5(md5($promena1+$promena2)."nesmyslná slova");
setcookie("nesmyslná slova",$cookie);
Bubák
Profil
Radovan789:
Zřejmě si ten můj anti-spam nepochopil, uživatel musí mít zaplý JS i Cookies ale za nikoho nic nevyplňuje.
Pochopil, já popsal antispam Diskuse Jak psát web, přes který spam neprochází, a nepotřebuje cookies.
Radovan789
Profil *
akali:
Ne... podmínka je IF
takže:

$cookie = md5(md5($promena1+$promena2)."nesmyslná slova");
+
if (empty($_POST['jmeno']) || empty($_POST['text']) || $_COOKIE["cookie"] != md5(md5($_POST["email"])."nesmyslná slova"))
akali
Profil *
Díky za ochotu, vysvětlení a hlavně kvalitní filtr. Dnes jsem na fóru, kam jsem filtr aplikoval nenašel jediný spam, na ostatních bohužel ano. Takže to aplikuji na ostatní. Díky mockrát!
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0