Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CAPTCHA - blokuje wszystko przy includowaniu jej
Forum PHP.pl > Forum > PHP
Majkelo23
Czesc wink.gif

Napisałem sobie captche - wszystko działa. Jednak problem jest tego typu, że przy próbie stworzenia formularza - nie wyświetla się on. Po prostu na samej górze mam:

  1. require_once('captcha.php');


I wyświetla się tylko ta captcha, a formularz itd. już nie. Doszedłem do wniosku, że blokuje mi wszystko ten header:

  1. header('Content-Type: image/jpeg');


Ale nie mogę tego wyrzucić, bo wtedy mam stronę pełną krzaków, jednak formularz się wyświetla. Jakaś rada?
Sephirus
Nie rób:

  1. require_once 'captcha.php';


a:

  1.  
  2. echo '<img src="captcha.php" alt=""/>';
  3.  


smile.gif
Majkelo23
Tylko jak ja mam porównać czy wpisany kod się zgadza? Przecież ja mam zmienną ze znakami w captcha.php.
Sephirus
A to nie możesz mieć obu opcji w tym samym miejscu... Powineś ten kod captchy przypisywać na przykład do sesji przy generacji obrazka... potem po wysłaniu formularza sprawdza czy coś jest w sesji i czy się zgadza z tym co user podał smile.gif Po odświeżeniu obrazka automatycznie w sesji masz aktualny kod wink.gif

Tak w ogóle... Jak masz zmienną ze znakami w catpcha.php to jak w ogóle chciałeś sprawdzać to co podał User?questionmark.gif? :/ Nie kumam
Majkelo23
w captcha.php mam randowe generowanie znaków, zapisane pod zmienną $znaki, więc to chyba żadna łamigłówka?
  1. if ( $_POST['captcha'] == $znaki)
  2. {
  3. echo 'kod poprawny';
  4. }
  5. else
  6. {
  7. echo 'niepoprawny';
  8. }


Nie chcę sie z tym bawić, tylko przetestować. Dwa inputy - post i submit. Wpisuje kod i sprawdzam czy wszystko jest ok, dla pewności. Tyle potrzebuje zrobić.

Dodanie formularza w captcha.php nic nie daje - tez go nie wyswietla.

EDIT:

W ogóle - jakim cudem mam przekazać sesje, nie includując pliku? ;/ Wszystko składa się do jednej i tej samej zmiennej.
kiler129
A może użyj po prostu http://www.google.com/recaptcha ? smile.gif
Mają gotową bibliotekę.

Jeśli chodzi o własną captche to cała zasada wyglada mniej więcej tak:

captcha.php
  1. <?php
  2. header('Content-Type: image/jpeg');
  3. $kod_do_przepisania = rand(); //W przykładzie jakieś sobie cyfry
  4. $_SESSION["captcha"] = $kod_do_przepisania; //Zapisujesz kod w sesji
  5. echo generuj_obrazek_z_tekstem($kod_do_przepisania); //Ta funkcja powinna wygenerować poprawny obrazek i zwrócić "krzaczki"
  6. ?>


formularz.php
  1. <?php
  2.  
  3. if(isset($_POST["captcha"]) { //Formularz został wysłany
  4. echo "Captcha została przepisana ".(((isset($_SESSION["captcha"]) && $_POST["captcha"] == $_SESSION["captcha"]) ? "poprawnie" : "błędnie"));
  5.  
  6. } else { //Formularz nie został wysłany
  7. echo '<form method="POST" action="">
  8. Obrazek: <img src="captcha.php" alt="" /><br/>
  9. Kod z obrazka: <input type="text" name="captcha" /><br/><br/>
  10. <input type="submit" value="Sprawdź kod" />
  11. </form>';
  12. }
  13. ?>

Teraz rozumiesz idee tego rozwiązania? smile.gif
Oczywiście wypadałoby jeszcze zrobić id obrazka i inne cuda ale to już dłuższy temat wink.gif
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.