Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> CAPTCHA - blokuje wszystko przy includowaniu jej
Majkelo23
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


Czesc (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie rób:

  1. require_once 'captcha.php';


a:

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


(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Majkelo23
post
Post #3





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


Tylko jak ja mam porównać czy wpisany kod się zgadza? Przecież ja mam zmienną ze znakami w captcha.php.
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ł (IMG:style_emoticons/default/smile.gif) Po odświeżeniu obrazka automatycznie w sesji masz aktualny kod (IMG:style_emoticons/default/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?(IMG:style_emoticons/default/questionmark.gif) ? :/ Nie kumam

Ten post edytował Sephirus 22.02.2012, 16:48:58
Go to the top of the page
+Quote Post
Majkelo23
post
Post #5





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Majkelo23 22.02.2012, 17:09:47
Go to the top of the page
+Quote Post
kiler129
post
Post #6





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


A może użyj po prostu http://www.google.com/recaptcha ? (IMG:style_emoticons/default/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? (IMG:style_emoticons/default/smile.gif)
Oczywiście wypadałoby jeszcze zrobić id obrazka i inne cuda ale to już dłuższy temat (IMG:style_emoticons/default/wink.gif)

Ten post edytował kiler129 23.02.2012, 02:19:46
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 19:55