Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Komentarze bez bazy danych + weryfikacja obrazkowa
Forum PHP.pl > Forum > Przedszkole
-lokotheboy-
Witam.

Na swojej stronie mam możliwość dodawania komentarzy bez zapisu w bazie danych

  1. <?
  2. ob_start();
  3. ?>
  4. <p>&nbsp;</p><p>
  5.  
  6. <?
  7. if(isset($_POST['submit']))
  8. {
  9. $im=$_POST['imie']; $message=$_POST['message'];
  10. if ($message && $im)
  11. {
  12. if(isset($_COOKIE['czas']))
  13. {
  14. echo'<b style="color:red;">Komentarz możesz dodać co 15minut.</b>';
  15. }
  16. else
  17. {
  18.  
  19. $date = date("Y-m-d H:i:s");
  20. $message = "<B>$im</B> -- $date<P> $message <BR><HR>";
  21. $fp = fopen (basename($_SERVER['PHP_SELF']).".text", "a");
  22. fwrite ($fp, $message);
  23. fclose ($fp);
  24. setcookie("czas", "1", time()+(15*60));
  25. }
  26.  
  27. }
  28. else
  29. {
  30. echo '<b style="color:red;">Wypełnij wszystkie pola.</b>';
  31. }
  32. }
  33.  
  34. ?>
  35.  
  36. <FORM action="" method="post">
  37. <b>Twój nick:</b><BR><INPUT name="imie" type="text" size="20"><BR>
  38. <b>Komentarz:</b><BR><TEXTAREA name="message" rows=8 cols=30 wrap=virtual>
  39. <INPUT name="submit" type="submit" value="Dodaj komentarz">
  40. </FORM>
  41.  
  42. <?
  43. @readfile(basename(($_SERVER['PHP_SELF'].".text")));
  44. $message ="";
  45. ?>
  46.  
  47. </p>
  48. <?
  49. ob_end_flush();
  50. ?>


Czy jest możliwość dodania weryfikacji obrazkowej przed dodaniem komentu?
Jak to zrobić i gdzie.

Z góry dziękuję i pozdrawiam,
BK
bzeebzee
Oczywiście, że jest. Poczytaj o captcha. To powinno rozwiązać twój problem.
-lokotheboy-
Mam plik form.php
  1. <?php
  2.  
  3.  
  4. $status = "";
  5.  
  6. if ( isset ( $_POST["submit"] ) )
  7. {
  8.  
  9. if ( strtolower ( htmlspecialchars ( $_POST["captcha"] ) ) == strtolower ( $_SESSION["captcha"] ) )
  10. {
  11.  
  12. $status = "info";
  13.  
  14. }
  15. else
  16. {
  17.  
  18. $status = "error";
  19.  
  20. }
  21.  
  22. }
  23.  
  24. $_SESSION["captcha"] = substr(str_replace(array(1, 0, "O", "I", "L"), array("X"), strtoupper(md5(date("Y-m-d H:i:s" . rand(0, 999))))), 0, 6);
  25.  
  26. ?>
  27. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  28. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  29. <head>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  31. <title>Test formularza zabezpieczonego captcha</title>
  32. <meta name="author" content="JG24 TEAM - Marusz" />
  33. <meta name="copyright" content="2009" />
  34. <style type="text/css">
  35. * { font-family: Arial, Verdana; font-size: 12px; }
  36. input, textarea { display: block; padding: 3px; margin: 2px 0; border: 1px solid grey; }
  37. form { padding: 15px; }
  38. div#error { border: 2px solid #000; background-color: #ff0000; color: #fff; font-weight: bold; padding: 10px; }
  39. div#info { border: 2px solid orange; background-color: yellow; color: #000; font-weight: bold; padding: 10px; }
  40. </style>
  41. </head>
  42. <body>
  43.  
  44. <?php
  45.  
  46. if ( !empty ( $status ) )
  47. {
  48.  
  49. ?><div id="<?php echo $status; ?>"><?php echo $status == "info" ? "Formularz został wysłany poprawnie" : "Wystąpił błąd - formularz nie zostanie wysłany..." ?></div><?php
  50.  
  51. }
  52.  
  53. ?>
  54.  
  55. <form method="post">
  56. Imię:
  57. <input type="text" name="imie" value="<?php if ( isset ( $_POST["imie"] ) && $status != "info" ) { echo htmlspecialchars($_POST["imie"]); } ?>" />
  58. Tekst:
  59. <br />
  60. <textarea name="tekst"><?php if ( isset ( $_POST["tekst"] ) && $status != "info" ) { echo htmlspecialchars($_POST["tekst"]); } ?></textarea>
  61. <hr />
  62. <img src="captcha.php" alt="captcha" />
  63. <br />
  64. Przepisz tekst z powyższego obrazka:
  65. <input type="text" name="captcha" value="" />
  66. <hr />
  67. <input type="submit" name="submit" value="Wyślij formularz" />
  68. </form>
  69.  
  70. </body>
  71. </html>


i captcha.php
  1. <?php
  2.  
  3.  
  4. $status = "";
  5.  
  6. if ( isset ( $_POST["submit"] ) )
  7. {
  8.  
  9. if ( strtolower ( htmlspecialchars ( $_POST["captcha"] ) ) == strtolower ( $_SESSION["captcha"] ) )
  10. {
  11.  
  12. $status = "info";
  13.  
  14. }
  15. else
  16. {
  17.  
  18. $status = "error";
  19.  
  20. }
  21.  
  22. }
  23.  
  24. $_SESSION["captcha"] = substr(str_replace(array(1, 0, "O", "I", "L"), array("X"), strtoupper(md5(date("Y-m-d H:i:s" . rand(0, 999))))), 0, 6);
  25.  
  26. ?>
  27. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  28. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  29. <head>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  31. <title>Test formularza zabezpieczonego captcha</title>
  32. <meta name="author" content="JG24 TEAM - Marusz" />
  33. <meta name="copyright" content="2009" />
  34. <style type="text/css">
  35. * { font-family: Arial, Verdana; font-size: 12px; }
  36. input, textarea { display: block; padding: 3px; margin: 2px 0; border: 1px solid grey; }
  37. form { padding: 15px; }
  38. div#error { border: 2px solid #000; background-color: #ff0000; color: #fff; font-weight: bold; padding: 10px; }
  39. div#info { border: 2px solid orange; background-color: yellow; color: #000; font-weight: bold; padding: 10px; }
  40. </style>
  41. </head>
  42. <body>
  43.  
  44. <?php
  45.  
  46. if ( !empty ( $status ) )
  47. {
  48.  
  49. ?><div id="<?php echo $status; ?>"><?php echo $status == "info" ? "Formularz został wysłany poprawnie" : "Wystąpił błąd - formularz nie zostanie wysłany..." ?></div><?php
  50.  
  51. }
  52.  
  53. ?>
  54.  
  55. <form method="post">
  56. Imię:
  57. <input type="text" name="imie" value="<?php if ( isset ( $_POST["imie"] ) && $status != "info" ) { echo htmlspecialchars($_POST["imie"]); } ?>" />
  58. Tekst:
  59. <br />
  60. <textarea name="tekst"><?php if ( isset ( $_POST["tekst"] ) && $status != "info" ) { echo htmlspecialchars($_POST["tekst"]); } ?></textarea>
  61. <hr />
  62. <img src="captcha.php" alt="captcha" />
  63. <br />
  64. Przepisz tekst z powyższego obrazka:
  65. <input type="text" name="captcha" value="" />
  66. <hr />
  67. <input type="submit" name="submit" value="Wyślij formularz" />
  68. </form>
  69.  
  70. </body>
  71. </html>


jak to poskładać w całość?
cz łączyć z plikiem z pierwszego posta?

z gór dziękuję i pozdrawiam,
BK
lokotheboy
(nie wiem gdzie edytuje się wcześniejszy post więc)

możliwość dodania komentu + captcha mam na stronie, ale pojawia się błąd:
  1. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/....php:29) in /home/.../komentator.php on line 3


Wykorzystuje na stronie include, czyli: index.php / include / komentator.php +captcha.php

Majkelo23
Zobacz czy gdzieś w includowanych plikach itp. nie masz dodane kilka razy session_start();

Jesli masz np. w głównym pliku session_start(); a potem w includowanym to samo to jedno usuń.
lokotheboy
Usunięcie pomogło z errorem, ale kod literowy nie pojawia się, a obrazek czasem jest, a czasem nie.
skorzystałem z tego: http://marusz.net/?txt=12


includowany plik komentator.php
  1. <?php
  2.  
  3.  
  4. $status = "";
  5.  
  6. if ( isset ( $_POST["submit"] ) )
  7. {
  8.  
  9. if ( strtolower ( htmlspecialchars ( $_POST["captcha"] ) ) == strtolower ( $_SESSION["captcha"] ) )
  10. {
  11.  
  12. $status = "info";
  13.  
  14. }
  15. else
  16. {
  17.  
  18. $status = "error";
  19.  
  20. }
  21.  
  22. }
  23.  
  24. $_SESSION["captcha"] = substr(str_replace(array(1, 0, "O", "I", "L"), array("X"), strtoupper(md5(date("Y-m-d H:i:s" . rand(0, 999))))), 0, 6);
  25.  
  26. ?>
  27. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  28. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  29. <head>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  31. <title>Test formularza zabezpieczonego captcha</title>
  32. <meta name="author" content="JG24 TEAM - Marusz" />
  33. <meta name="copyright" content="2009" />
  34. <style type="text/css">
  35. * { font-family: Arial, Verdana; font-size: 12px; }
  36. input, textarea { display: block; padding: 3px; margin: 2px 0; border: 1px solid grey; }
  37. form { padding: 15px; }
  38. div#error { border: 2px solid #000; background-color: #ff0000; color: #fff; font-weight: bold; padding: 10px; }
  39. div#info { border: 2px solid orange; background-color: yellow; color: #000; font-weight: bold; padding: 10px; }
  40. </style>
  41. </head>
  42. <body>
  43.  
  44. <?php
  45.  
  46. if ( !empty ( $status ) )
  47. {
  48.  
  49. ?><div id="<?php echo $status; ?>"><?php echo $status == "info" ? "Formularz został wysłany poprawnie" : "Wystąpił błąd - formularz nie zostanie wysłany..." ?></div><?php
  50.  
  51. }
  52.  
  53. ?>
  54.  
  55. <form method="post">
  56. Imię:
  57. <input type="text" name="imie" value="<?php if ( isset ( $_POST["imie"] ) && $status != "info" ) { echo htmlspecialchars($_POST["imie"]); } ?>" />
  58. Tekst:
  59. <br />
  60. <textarea name="tekst"><?php if ( isset ( $_POST["tekst"] ) && $status != "info" ) { echo htmlspecialchars($_POST["tekst"]); } ?></textarea>
  61. <hr />
  62. <img src="captcha.php" alt="captcha" />
  63. <br />
  64. Przepisz tekst z powyższego obrazka:
  65. <input type="text" name="captcha" value="" />
  66. <hr />
  67. <input type="submit" name="submit" value="Wyślij formularz" />
  68. </form>
  69.  
  70. </body>
  71. </html>


captcha.php
  1. <?php
  2.  
  3.  
  4. /* config */
  5.  
  6. $imgPatch = "images-captcha/";
  7. $fntPatch = "fonts/";
  8.  
  9. $images = preg_grep("/.+\..+/si", scandir($imgPatch));
  10. $images = $images[array_rand($images)];
  11.  
  12. $fonts = preg_grep("/.+\..+/si", scandir($fntPatch));
  13. $fonts = $fntPatch . $fonts[array_rand($fonts)];
  14.  
  15. /* script */
  16.  
  17. $i = imagecreatefromjpeg($imgPatch . $images);
  18. imagettftext($i, 25, rand(-7, 7), rand(1, 20), ceil(next(getimagesize($imgPatch . $images))/2)+10, imagecolorallocatealpha($i, 255, 255, 255, 60), $fonts, $_SESSION["captcha"]);
  19.  
  20. header('Content-Type: image/jpeg');
  21. imagejpeg($i);
  22. imagedestroy($i);
  23.  
  24. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.