Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz kontaktowy + TOKEN
Forum PHP.pl > Forum > PHP
albectus
Witam serdecznie, mam taki oto formularz kontaktowy
Kod
<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
// wyświetlamy formularz
echo "<table border=\"0\"><FORM id=form method=post >  
                          
<tr>
<td>

<IMG style=\"MARGIN: 92px 0px 0px 20px; FLOAT: left \" border=0 src=\"namst.gif \" width=16 height=16>
<textarea placeholder=\"Tekst wiadomości \" name='tresc' cols='30' rows='3' wrap='virtual' style=\"background: none; border: solid 0px #3f5763; color: black; width: 250px; height: 180px; margin: 7px 0 0 5px; font-size: 14px; \">Tekst wiadomości</textarea>
</td>
</tr>

<tr> <td>
<input placeholder=\"Imię i Nazwisko\" type='Text' name='imie' maxlength='50' value='Imię i Nazwisko' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
<b style=\"color: red; \">*</b></td>
</tr>

<tr> <td>
<input placeholder=\"Imię i Nazwisko\" type='Text' name='email' maxlength='50' value='Email' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
<b style=\"color: red; \">*</b></td>
</tr>

<td><input type=\"submit\" style= \"width: 100px \" name=\"submit\" value=\"Wyślij\">&nbsp;
</tr>
</table>";
}
// sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
// jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
// zmienna $message zawiera treść wiadomości
$message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
// zmienna $header zawiera przede wszystkim adres zwrotny
$header = "From: $_POST[imie] <$_POST[email]>";
// funkcja mail() za pomocą której wiadomość zostanie wysłana
@mail("xxxxxx","Wiadomosc ze strony Dxxx","$message","$header")
or die('Nie udało się wysłać wiadomości');
// wyświetlenie komunikatu w przypadku powodzenia
echo "<br><br><Br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\"><strong>Wiadomość została wysłana poprawnie!</strong><br><br><br>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<br><br><br><br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\">Wypełnij wszystkie pola formularza!</span><br><br><br><br><br><br><br>";

?>


Chciałbym do niego dorobić TOKENa jednak nie wiem jak... proszę o pomoc!
adrianozo
CAPTCHA czy jakiś inny np taki jak na

http://www.nportfolio.pl/kontakt.html
fr33d0m
  1. for($i=0;$i<5;$i++) {
  2. $numer = rand(0,9);
  3. $_SESSION['token'] .= $numer;
  4. $img .= '<img src="'.$numer.'.gif" />'; }
  5. echo $img;

1. Robisz pętelkę losowania 5 liczb
2. Losujesz liczby od 0 do 9 i przypisujesz do zmiennej $numer
3. Tworzysz sesje o nazwie token i przypisujesz jej wylosowany numer (ad.2)
4. Wkładasz (pojedynczo)losowy numer w tagi img
5. Wyświetlasz token

Później robisz inputa do przepisania kodu -> wysyłasz i porównujesz inputa z $_SESSION['token'] smile.gif
ahh... zapomniałem, musisz jeszcze stworzyć 9 gifów(łącznie z zerem) i nazwać je kolejno 0.gif 1.gif 2.gif itp. analogicznie w obrazie każdego gifa liczba odpowiadająca nazwie.
Dla jasności taki token to tylko zwykła prowizorka.
albectus
Wszystko działa do miejsca gdzie trzeba porownac kod z obrazka z kodem wpisanym... Prosze o pomoc bo nie działa mi to, napisalem skrypt ktory patrzy czy pole nie jest puste nie wiem jak zrobic taki by porównywał...
adrianozo
  1. if($_SESSION['token']!=$_POST['token'])
  2. echo 'Zły kod z obrazka';
albectus
W którym miejscu muszę wkleic w/w kod tak by kiedy był źle przepisany token nie wyrzucał komunikatu wiadomość została wysłana a zarazem nieprawidłowo przepisany kod...

Kod
// sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
// jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
// zmienna $message zawiera treść wiadomości
$message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
// zmienna $header zawiera przede wszystkim adres zwrotny
$header = "From: $_POST[imie] <$_POST[email]>";
// funkcja mail() za pomocą której wiadomość zostanie wysłana
@mail("xxxxxx","Wiadomosc ze strony Dxxx","$message","$header")
or die('Nie udało się wysłać wiadomości');
// wyświetlenie komunikatu w przypadku powodzenia
echo "<br><br><Br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\"><strong>Wiadomość została wysłana poprawnie!</strong><br><br><br>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<br><br><br><br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\">Wypełnij wszystkie pola formularza!</span><br><br><br><br><br><br><br>";

?>


fr33d0m
Dlaczego nie używasz tagów PHP? aż nie chce się wnikać w taki kod.
Wyżej kolega adrianozo podał Tobie odpowiedź. Jeśli zaingerujemy w Twój kod i damy Ci całego gotowca to niczego się nie nauczysz.
Zwróć szczególną uwagę na te linijkę i zastanów się jak wykorzystać odpowiedź adrianozo.
  1. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
albectus
Zrobiłem coś takiego:

Kod
.else if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']))  && !empty ($_SESSION['token']!=$_POST['token']))   {

Ale nie chce to działać... gdzie jest błąd?
fr33d0m
  1. wyrażenie && wyrażenie

Zwraca prawdę, jeżeli oba wyrażenia są prawdziwe.

  1. !wyrażenie

Zwraca prawdę, jeżeli wyrażenie jest fałszywe i fałsz, jeśli prawdziwe.

Trochę przekombinowałeś...
Spróbuj tak:
  1. else if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) && $_SESSION['token']==$_POST['token'])
albectus
Nadal ten sam błąd co ja miałem...

Kod
Parse error: syntax error, unexpected T_BOOLEAN_AND in /home/dada/public_html/domenyy.net/index.php on line 95
fr33d0m
Moje nie dopatrzenie, teraz będzie działać:
  1. else if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && ($_SESSION['token']==$_POST['token']))
albectus
Niestety niby wszystko działa... ale formularz nie wysyła, pisze bym wypełnił wszystkie pola formularza
fr33d0m
Aby na pewno, zrobiłeś inputa do przepisania kodu z obrazka o nazwie "token" questionmark.gif
Pokaż jak to zrobiłeś, tylko użyj tagów [ PHP ] a nie [ KOD ]
albectus
  1.  
  2. <?php
  3. // sprawdzamy, czy zmienna $submit jest pusta
  4. if (empty($_POST['submit'])) {
  5. // wyświetlamy formularz
  6. echo "<table border=\"0\"><FORM id=form method=post >
  7.  
  8. <tr>
  9. <td>
  10.  
  11. <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo_tekstowe.png) no-repeat; HEIGHT: 200px \">
  12. <IMG style=\"MARGIN: 92px 0px 0px 20px; FLOAT: left \" border=0 src=\"grafika/icon_name.gif \" width=16 height=16>
  13. <textarea placeholder=\"Tekst wiadomości \" name='tresc' cols='30' rows='3' wrap='virtual' style=\"background: none; border: solid 0px #3f5763; color: black; width: 250px; height: 180px; margin: 7px 0 0 5px; font-size: 14px; \">Tekst wiadomości</textarea>
  14. </DIV>
  15. </td>
  16. </tr>
  17.  
  18. <tr> <td>
  19. <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo.png) no-repeat; HEIGHT: 40px \">
  20. <input placeholder=\"Imię i Nazwisko\" type='Text' name='imie' maxlength='50' value='Imię i Nazwisko' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
  21. <b style=\"color: red; \">*</b></DIV>
  22. </td>
  23. </tr>
  24.  
  25. <tr> <td>
  26. <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo.png) no-repeat; HEIGHT: 40px \">
  27. <input placeholder=\"Imię i Nazwisko\" type='Text' name='email' maxlength='50' value='Email' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
  28. <b style=\"color: red; \">*</b></DIV>
  29. </td>
  30. </tr>
  31.  
  32.  
  33.  
  34.  
  35. <tr> <td>Wpisz widoczny poniżej kod:<br><br>";
  36.  
  37. for($i=0;$i<5;$i++) {
  38. $numer = rand(0,9);
  39. $_SESSION['token'] .= $numer;
  40. $img .= '<img src="token/'.$numer.'.gif" />'; }
  41. echo $img;
  42.  
  43.  
  44. echo " <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo.png) no-repeat; HEIGHT: 40px \">
  45. <input placeholder=\"token\" type='Text' name='token' maxlength='50' value='token' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
  46. <b style=\"color: red; \">*</b></DIV>
  47. </td>
  48. </tr>
  49.  
  50. <td><input type=\"submit\" style= \"width: 100px \" name=\"submit\" value=\"Wyślij\">&nbsp;
  51. </tr>
  52. </table>";
  53. }
  54. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  55. else if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && ($_SESSION['token']==$_POST['token'])) {
  56. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  57.  
  58. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  59. // zmienna $message zawiera treść wiadomości
  60. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  61. // zmienna $header zawiera przede wszystkim adres zwrotny
  62. $header = "From: $_POST[imie] <$_POST[email]>";
  63. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  64. @mail("email","Wiadomosc ze strony","$message","$header")
  65. or die('Nie udało się wysłać wiadomości');
  66. // wyświetlenie komunikatu w przypadku powodzenia
  67. echo "<br><br><Br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\"><strong>Wiadomość została wysłana poprawnie!</strong><br><br><br>";
  68. }
  69. // lub w przypadku nie wypełnienia formularza do końca
  70. else echo "<br><br><br><br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\">Wypełnij wszystkie pola formularza!</span><br><br><br><br><br><br><br>";
  71.  
  72. ?>
  73.  


fr33d0m
  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4. $_SESSION['token'] = '';
  5. for($i=0;$i<5;$i++) {
  6. $numer = rand(0,9);
  7. $_SESSION['token'] .= $numer;
  8. $img .= '<img src="token/'.$numer.'.gif" />'; }
  9. // wyświetlamy formularz
  10. echo "<table border=\"0\"><FORM id=form method=post >
  11.  
  12. <tr>
  13. <td>
  14.  
  15. <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo_tekstowe.png) no-repeat; HEIGHT: 200px \">
  16. <IMG style=\"MARGIN: 92px 0px 0px 20px; FLOAT: left \" border=0 src=\"grafika/icon_name.gif \" width=16 height=16>
  17. <textarea placeholder=\"Tekst wiadomości \" name='tresc' cols='30' rows='3' wrap='virtual' style=\"background: none; border: solid 0px #3f5763; color: black; width: 250px; height: 180px; margin: 7px 0 0 5px; font-size: 14px; \">Tekst wiadomości</textarea>
  18. </DIV>
  19. </td>
  20. </tr>
  21.  
  22. <tr> <td>
  23. <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo.png) no-repeat; HEIGHT: 40px \">
  24. <input placeholder=\"Imię i Nazwisko\" type='Text' name='imie' maxlength='50' value='Imię i Nazwisko' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
  25. <b style=\"color: red; \">*</b></DIV>
  26. </td>
  27. </tr>
  28.  
  29. <tr> <td>
  30. <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo.png) no-repeat; HEIGHT: 40px \">
  31. <input placeholder=\"Imię i Nazwisko\" type='Text' name='email' maxlength='50' value='Email' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
  32. <b style=\"color: red; \">*</b></DIV>
  33. </td>
  34. </tr>
  35.  
  36.  
  37.  
  38.  
  39. <tr> <td>Wpisz widoczny poniżej kod:<br><br>";
  40.  
  41.  
  42. echo $img;
  43.  
  44.  
  45. echo " <DIV style=\"TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 300px; BACKGROUND: url(tlo.png) no-repeat; HEIGHT: 40px \">
  46. <input placeholder=\"token\" type='Text' name='token' maxlength='50' value='token' style=\"background: none; border: solid 0px black; width: 250px; margin: 7px 0 0 25px; font-size: 14px; \">
  47. <b style=\"color: red; \">*</b></DIV>
  48. </td>
  49. </tr>
  50.  
  51. <td><input type=\"submit\" style= \"width: 100px \" name=\"submit\" value=\"Wyślij\">&nbsp;
  52. </tr>
  53. </table>";
  54. }
  55. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  56. else if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && ($_SESSION['token']==$_POST['token'])) {
  57. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  58.  
  59. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  60. // zmienna $message zawiera treść wiadomości
  61. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  62. // zmienna $header zawiera przede wszystkim adres zwrotny
  63. $header = "From: $_POST[imie] <$_POST[email]>";
  64. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  65. @mail("email","Wiadomosc ze strony","$message","$header")
  66. or die('Nie udało się wysłać wiadomości');
  67. // wyświetlenie komunikatu w przypadku powodzenia
  68. echo "<br><br><Br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\"><strong>Wiadomość została wysłana poprawnie!</strong><br><br><br>";
  69. }
  70. // lub w przypadku nie wypełnienia formularza do końca
  71. else echo "<br><br><br><br><span style=\"color: #FF0000; text-align:center; font-size: 15pt;\">Wypełnij wszystkie pola formularza!</span><br><br><br><br><br><br><br>";
  72. ?>
albectus
Dzieki teraz działa winksmiley.jpg)
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.