Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]"Captcha" żle działa - czyli cyferki przez spamem.
Forum PHP.pl > Forum > Przedszkole
szczalpi

Witam
Mam problem z prawidłowym skonfigurowaniem pliku "captcha.php", który jest używany w celu ochrony przed spamem. Pewnie wiecie o co chodzi.
Po wpisaniu cyferek, które się pojawiają wywala mi błąd "Źle przepisany kod. Spróbuj ponownie...". Przedtem ten sam srypt miałem na innym hostingu i działał prawidłowo. Po przerzuceniu na nowy pojawił się błąd. Szukam błędu, ale nie potrafię go zlokalizować. Proszę o waszą pomoc.
Poniżej w skrócie przedstawiam kod jaki mam wstawiony.
Pozdrawiam

  1. <img src="include/captcha.php" style="position:relative;top:8px;">
  2. <label class="labelogl">Przepisz kod:</label>
  3. <input id="vercode" type="text" name="vercode" style="width:50px;"/>
  4. <input type="hidden" name="ok" value="1/">
  5. <input type="submit" name="submit" value="Dodaj" dir="rtl"/>



  1. if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') {
  2. echo '<font style="font-family:arial; font-size:24px; font-weight:bold; color:red;">';
  3. echo 'Źle przepisany kod.<a href="java script:history.back()">Spróbuj ponownie...</a>';
  4. echo '</font>';
  5. }
  6.  
  7. else {
  8.  
  9.  
  10.  
  11.  
  12. $opis =$_POST['opis'];
  13.  
  14. $sql = "insert INTO users VALUES(
  15.  
  16. '$opis'
  17.  
  18. )";
  19.  
  20. echo "Obiekt został dodany";
  21. mysql_query($sql);
  22.  
  23. }
nospor
Pewnie sesja ci nie dziala... sprawdzales?
viking
Temat: Jak poprawnie zadac pytanie

"Po przerzuceniu na nowy pojawił się błąd"
Wróżka mówi że masz błąd.
szczalpi
Mam takie coś:
  1. if((($_POST["vercode"]))=="true"):
  2. {
  3.  
  4. $_SESSION["vercode"]=$_POST["vercode"];
  5.  
  6. }

NIe wiem może i źle. Mam pytanie w jaki sposób sprawdzić sesje questionmark.gif

Już mam. Sesja o podanej nazwie nie istnieje. Teraz pytanie jak zrobić, aby przekazać sesje dalej do strony ?

Wstawiłem taki kod
  1. $_SESSION['vercode']=$_POST["vercode"];;
  2.  
  3. if (isset($_SESSION['vercode'])){
  4. echo'sesja istnieje!';
  5. } else {
  6. echo 'sesja o podanej nazwie nie istnieje!';
  7. }

Pojawia się napis, że sesja istnieje. NIestety dalej pojawia mi się komunikat źle przepisany kod.

Już działa smile.gif
ZaXaZ
Cytat
Mam pytanie w jaki sposób sprawdzić sesje questionmark.gif

  1. print_r($_SESSION);


Cytat
Jak zrobić, aby przekazać sesje dalej do strony ?

tego nie rozumiem, jeśli chodzi tobie o "jak przekazać sesję przechodząc na inną stronę" to było na tutaj.

edit: już chyba nie aktualne bo u mnie ciągle pisze że twój post był dodany minutę temu, i nie pokazuję kiedy edytowales. A treść się dodała.
szczalpi
Źle sad.gif coś jest jak zostawię pusty wpis to pojawia się komunikat "Spróbuj ponownie", a jak wpiszę inny kod jaki mi się pojawia to go akceptuje.
Już nie wiem gdzie tkwi problem.
Mam taki kod:
  1.  
  2.  
  3.  
  4. $_SESSION['vercode']=$_POST["vercode"];;
  5.  
  6. if (isset($_SESSION['vercode'])){
  7. echo'sesja istnieje!';
  8. } else {
  9. echo 'sesja o podanej nazwie nie istnieje!';
  10. }
  11.  
  12.  
  13.  
  14.  
  15.  
  16. if((($_POST["vercode"]))=="true"):
  17. {
  18.  
  19. $_SESSION["vercode"]=true;
  20.  
  21. }
  22.  
  23. endif;
  24.  
  25. if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') {
  26. echo '<font style="font-family:arial; font-size:24px; font-weight:bold; color:red;">';
  27. echo 'Źle przepisany kod.<a href="java script:history.back()">Spróbuj ponownie...</a>';
  28. echo '</font>';
  29. }
  30.  
  31. else{
  32.  
  33. ...... ?>
nospor
Do sesji, to Ty masz zapisywac tylko i wyłącznie kod generowany przez captche a nie to co user wpisze.... To co user wpisze masz porownac z tym co jest w sesji...
Kod w pierwszym poscie byl poprawny. Jedyny problem jaki byl to brak sesji. Albo w pliku include/captcha.php nie generuje ci sie prawidlowo sesja, albo w twoim glownym pliku.
Prawdopodobna przyczyna to wyslanie naglowkow przed startowanie sesji. Bardzo czesty blad.
szczalpi

NOSPOR
Zacznę od początku. Poniżej przedstawiam obecny kod w skrócie, który posiadam. Tak jak wcześniej pisałeś
jest dobry. Proszę o pomoc was nie wiem gdzie jest problem sad.gif.
Pozdrawiam

index.php
  1.  
  2. <img src="include/captcha.php" style="position:relative;top:8px;">
  3. <label class="labelogl">Przepisz kod:</label>
  4. <input id="vercode" type="text" name="vercode" style="width:50px;"/>
  5. <input type="hidden" name="ok" value="1/">
  6. <input type="submit" name="submit" value="Dodaj" dir="rtl"/>

dodano.php
  1.  
  2. $_SESSION['vercode']=$_POST["vercode"];
  3.  
  4. if (isset($_SESSION['vercode'])){
  5. echo'sesja istnieje!';
  6. } else {
  7. echo 'sesja o podanej nazwie nie istnieje!';
  8. }
  9.  
  10.  
  11. if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') {
  12. echo '<font style="font-family:arial; font-size:24px; font-weight:bold; color:red;">';
  13. echo 'Źle przepisany kod.<a href="java script:history.back()">Spróbuj ponownie...</a>';
  14. echo '</font>';
  15. }
  16.  
  17. else{.....
  18.  
  19. ?>

captcha.php
<?
<?

session_start();
$text = rand(10000,99999);
$_SESSION["vercode"] = $text;
$height = 25;
$width = 65;

$image_p = imagecreate($width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$white = imagecolorallocate($image_p, 255, 255, 255);
$font_size = 14;

imagestring($image_p, $font_size, 5, 5, $text, $white);
imagejpeg($image_p, null, 80);

?>
nospor
Poraz kolejny powtarzam:
wywal to
$_SESSION['vercode']=$_POST["vercode"];
!

Jesli nadal ci nie dziala, to wlacz buforowanie w php.ini bo pewnie masz blad z jakims bialys znakiem, albo zedyduj wszystkie pliki by byly z utf8 BEZ BOM

no i zakladam ze twoj FORM sklada sie z
<FORM>
</FORM>
bo w kodzie tego nie ma.
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.