Witam wszystkich. Zabrałem się za zabezpieczenie formularza kontaktowego na swojej stronie(przed ostatnia rzecz do zrobienie na własnej stronie) i mam problem jak zwykle z sesjami oraz ciastkami. A tego trzeba tutaj użyć. Chciałbym prosić wszystkich użytkowników o pomoc w tym skrypcie. Mam już wszystko napisane, ale chcę to zabezpieczyć. Po pierwsze chcę zrobić przepisywanie pierwszej i ostatnie cyfry z kodu wylosowanego, a po drugie chcę po wysłaniu jednej wiadomości dodać ciastko na 10 minut, żeby nie otrzymywać niepotrzebnego spamu. I napisałem coś takiego(pokaże cały kod)

kontakt.php
  1. <?php
  2. include('functions/bbc.php');
  3. include('include/db.php');
  4. echo '<h2>Kontakt</h2>';
  5. $zapytanie = "SELECT * FROM `kontakt` WHERE `id`='1'";
  6. $idzapytania = mysql_query($zapytanie);
  7. while ($wiersz = mysql_fetch_array($idzapytania))
  8. {
  9. echo ''.stripslashes(bbc($wiersz['tresc'])).'<br />';
  10. }
  11. if(!isset($_COOKIE['kontakt']))
  12. {
  13. if(isset($_POST['tresc']))
  14. {
  15. echo '<div align="center"><form action="/kontakt.html" method="post"><br />
  16. Nick:<br /><input type="text" name="nick" value="'.$_POST['nick'].'" /><br />
  17. Twój email:<br /><input type="text" name="email" value="'.$_POST['email'].'" /><br />
  18. Temat:<br /><input type="text" name="temat" value="'.$_POST['temat'].'" /><br />
  19. Treść:<br /><textarea name="tresc" cols="30" rows="10">'.$_POST['tresc'].'</textarea><br />
  20. Przepisz pierwszą i ostatnią liczbe:<br />';
  21. echo $_SESSION['liczba'];
  22. echo '<br /><input type="text" name="liczba" /><br /><br />
  23. <input class="przycisk_kontakt" name="wyslij" type="submit" value="Wyślij" />
  24. <input class="przycisk_kontakt" name="wyczysc" type="reset" value="Wyczyść" /></form><br /><br /></div>';
  25. }
  26. else
  27. {
  28. echo '<div align="center"><form action="/kontakt.html" method="post"><br />
  29. Nick:<br /><input type="text" name="nick" /><br />
  30. Twój email:<br /><input type="text" name="email" /><br />
  31. Temat:<br /><input type="text" name="temat" /><br />
  32. Treść:<br /><textarea name="tresc" cols="30" rows="10"></textarea><br />';
  33. echo 'Przepisz pierwszą i ostatnią liczbe:<br />';
  34. $kod='';
  35. for($i=0;$i<3;$i++)
  36. {
  37. $kod.=rand(0,9);
  38. }
  39. $_SESSION['liczba']=$kod;
  40. echo $kod;
  41. $pomoc = $kod[0].$kod[2];
  42. echo '<br /><input type="text" name="liczba" /><br /><br />
  43. <input class="przycisk_kontakt" name="wyslij" type="submit" value="Wyślij" />
  44. <input class="przycisk_kontakt" name="wyczysc" type="reset" value="Wyczyść" /></form><br /><br /></div>';
  45. }
  46. if(isset($_POST['wyslij']))
  47. {
  48. if(empty($_POST['nick']) or empty($_POST['email']) or empty($_POST['temat']) or empty($_POST['tresc']) or empty($_POST['liczba']))
  49. {
  50. echo '<div align="center"><font color="red"><b>Wypełnij wszystkie pola formularza!</b></font></div><br />';
  51. }
  52. elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  53. {
  54. echo '<div align="center"><font color="red"><b>Podany email jest nieprawidłowy!</b></font></div><br />';
  55. }
  56. elseif($_SESSION['liczba']!=$kod)
  57. {
  58. echo '<div align="center"><font color="red"><b>Podany kod jest nieprawidłowy!</b></font></div><br />';
  59. }
  60. else
  61. {
  62. setcookie("kontakt", 1, time()+10*60);
  63. $message = 'Nick: '.$_POST['nick'].'<br /> email: '.$_POST['email'].'<br /> Temat: '.$_POST['temat'].'<br /> Treść: '.$_POST['tresc'].'';
  64. $naglowki = 'From: '.$_POST['nick'].''.PHP_EOL.'Reply-To: '.$_POST['nick'].''.PHP_EOL.'Content-type: text/html; charset=utf-8';
  65. mail('nansss@nportfolio.pl', 'Wiadomość ze strony WWW', $message, $naglowki);
  66. echo '<div align="center"><font color="green"><b>Wiadomość została wysłana poprawnie!</b></font></div><meta http-equiv="Refresh" content="3; url=/kontakt.html" /><br />';
  67. }
  68. }
  69. }
  70. else
  71. {
  72. echo '<div align="center"><font color="green"><br /><b>Nie można wysłać ponownie wiadomości. Prosimy spróbować za 10 minut.</b></font></div>';
  73. }
  74. mysql_close($connect);
  75. ?>


Proszę o pomoc.
Z góry dziękuje smile.gif

PS. Z ciastkiem się chyba udało. smile.gif Proszę o sprawdzenie.