» »

[PHP] Uporaba ReCaptcha

[PHP] Uporaba ReCaptcha

Blisk ::

Poizkušam v določeno aplikacijo zmontirat recaptcha, zaradi spammerjev.
Vendar mi ne gre.
Če zahteva captcha, mi zadeve ne pošlje naprej.
če pa ni recaptche, pa zadeva gre dalje.

Mi lahko kdo pomaga?
rad bi pa zadevo zmontiral v webcards 1.3


Gre se za tele dve vrstice.
Če jih zamenjam 1x zahteva captcho za pošiljanje vendar ne pošlje.
Drugič pa ne zahteva captche ampak pošlje. Kako narediti, da zahteva captcho in pošlje?

 <form method="post" action="verify.php">

<form action="{{script}}?act=send_card" method="post">



cela koda
 <html>
    <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers -->
    






 <form method="post" action="verify.php">

<form action="{{script}}?act=send_card" method="post">


{{hidden_elements}}

<input type="submit" value="||send_card||" class="chunky" /> <input type="button" value="||go_back||" onClick="javascript:history.go(-1)" class="chunky" />

<!-- Including render_card.html -->
{{render}}



<!-- End including render_card.html -->


<script type="text/javascript"
    src="http://api.recaptcha.net/challenge?k=<6LdjwckSAAAHrmZAZFOG7mUlVlpc>">
</script>
<noscript>
    <iframe src="http://api.recaptcha.net/noscript?k=<6LdjwckSAAAAr2AZFRKkOKI8mlpc>"
        height="300" width="500" frameborder="0"></iframe><br>
    <textarea name="recaptcha_challenge_field" rows="3" cols="40">
    </textarea>
    <input type="hidden" name="recaptcha_response_field" 
        value="manual_challenge">
</noscript>



<br /><br />
<input type="submit" value="||send_card||" class="chunky" /> <input type="button" value="||go_back||" onClick="javascript:history.go(-1)" class="chunky" />

    

</form>

    </body>
  </html>
  • spremenil: Mavrik ()

Looooooka ::

<form method="post" action="verify.php"> <form action="{{script}}?act=send_card" method="post">

ne mores met 2x.
Odloci se za prvo ali drugo verzijo.

Blisk ::

Ja vem da ne morem met 2x, ampak prva je za captcha, druga za pošiljanje.
Kako lahko naredim tako, da se najprej izvede prva za captcha, če je ok, pa potem druga za pošiljanje...

illion ::

z javaskripto, prvo postaš prvo formo, preverš response, če je ok, z javaskripto postaš še drugo formo.

samo to je slabo. v tem primeru si boš mogu zapisat v session da je user pravilno vnesu captcho in ko boš postal druge podatke, se boš mogu nekako sklicevat na ta sesssion in prevert če to spet posta ta user itd.., v nasprotnem primeru ti lahko bot enostavno posta samo tisto formo s podatki in zaobide recaptcho, skratka brezveze kompliciraš zadevo.

posti captcho in formo hkrati, prvo prever če je captcha ok, če ni izpiš error, drgač pa prever še ostale inpute

Nextor ::

Blisk ::

illion je izjavil:

z javaskripto, prvo postaš prvo formo, preverš response, če je ok, z javaskripto postaš še drugo formo.

samo to je slabo. v tem primeru si boš mogu zapisat v session da je user pravilno vnesu captcho in ko boš postal druge podatke, se boš mogu nekako sklicevat na ta sesssion in prevert če to spet posta ta user itd.., v nasprotnem primeru ti lahko bot enostavno posta samo tisto formo s podatki in zaobide recaptcho, skratka brezveze kompliciraš zadevo.

posti captcho in formo hkrati, prvo prever če je captcha ok, če ni izpiš error, drgač pa prever še ostale inpute


Pojma nimam kako to narediti, ker nimam pojma o PHP.

Nextor je izjavil:

https://code.google.com/intl/sl/apis/re...


Saj po tem sem delal pa mi ni ratalo, ker nimam pojma o PHP, zato sem vprašal tukaj vas ki veste!

Zgodovina sprememb…

  • spremenil: Blisk ()

jype ::

V resnici ni povezano s PHP, temveč s HTML oz. HTTP. V enem HTTP zahtevku se hkrati pošlje le en HTML obrazec, zato ne moreš ločiti captcha obrazca od vseh ostalih podatkov, ki jih želiš poslati poleg. Oboje moraš torej združiti v en sam element form.

Blisk ::

jype je izjavil:

V resnici ni povezano s PHP, temveč s HTML oz. HTTP. V enem HTTP zahtevku se hkrati pošlje le en HTML obrazec, zato ne moreš ločiti captcha obrazca od vseh ostalih podatkov, ki jih želiš poslati poleg. Oboje moraš torej združiti v en sam element form.

Vem, vendar tega ne znam....

jype ::

Boš moral prepustiti komu drugemu, trenutno nimam časa preštudirat, če je pa kdo to že počel, ti bo morda lahko pomagal.

Komot narediš svoj lasten captcha s preprostimi vprašanji v slovenščini.

Blisk ::

jype je izjavil:

Boš moral prepustiti komu drugemu, trenutno nimam časa preštudirat, če je pa kdo to že počel, ti bo morda lahko pomagal.

Komot narediš svoj lasten captcha s preprostimi vprašanji v slovenščini.


Ma če se da še bolj enostavno bi bilo super, sam ne znam nič od tega.
Fora je samo v tem, da preprečim spammerjem, da uporabljajo to zadevo, za pošiljanje spama okol, s skripto...

illion ::

greš sm:
http://www.google.com/recaptcha/whyreca...

se vpišeš z google accountom, v input vpišeš svojo domeno od sajta, kliknš na create key

pol zdownloadaš recaptcho

v index.php oz. nek config fajlu recimo definiraš konstanti za public in private recaptcha key, ki si ju dobil ko si kliknu na "create key":
define('RECAPTCHA_PUBLIC_KEY', 'r5af3ra23r3...');
define('RECAPTCHA_PRIVATE_KEY', 'awe4t5rq23t...');


v fajlu, kjer maš formo, includaš recaptcha php library, ki si ga zdownloadal in v formi, na mestu kjer naj se pokaže recaptcha, jo izpišeš s funkcijo, ki je v tem librariyu:

<?php require_once('recaptchalib.php'); ?>
<form method="post" action="verify.php">

...
<?php echo recaptcha_get_html(RECAPTCHA_PUBLIC_KEY); ?>
...

</form>


v fajlu, kjer hendlaš postanje forme (verify.php), includaš php recaptcha lib fajl (isti kokr prej) in z funkcijo iz liba preveriš captcho:

require_once('recaptchalib.php');

$resp = recaptcha_check_answer (RECAPTCHA_PRIVATE_KEY,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
  //recaptcha NI PRAVILNA, ne shrani/pošlji/karkoli podatkov
} else { 
  //recaptcha je pravilna

}

Zgodovina sprememb…

  • spremenil: illion ()

Blisk ::

Ej hvala, ker si se potrudu, sem probal zadevo, ampak mi sploh ne pokaže recaptcha.

Imam index.php sem dal not tist kar si napisal.
Potem sem pa dal v preview_card.html, ki je v bistvu template od te skripte pa tist, kjer bi se captcha morala pokazati.
Samo nič ni ne upošteva captche.
Verify.php fajl je pa od recaptche fajl in ne v originalu od skripte.

Nekje neki nisem vredu naredil, ker ne dela.
Pokaže se recaptcha, vendar je ne upošteva, vseeno lahko pošlješ...

na google sem že dobil oba keya...

Zgodovina sprememb…

  • spremenil: Blisk ()

illion ::

hmm.. mogoče ne gre vse prek indexa (in potem ni tistih prubliin in private key-ov)? ne poznam teh webcardsov in kakšn sistem je to.


probi tko v fajlu s formo:

define('RECAPTCHA_PUBLIC_KEY', 'r5af3ra23r3...');
<?php require_once('recaptchalib.php'); ?>
<form action="{{script}}?act=send_card" method="post">
 
...
<?php echo recaptcha_get_html(RECAPTCHA_PUBLIC_KEY); ?>
...
 
</form>


pa tist html od captche ki ga maš v prvem postu vrž vn, ker recaptcho je treba vsakič zgenerirat, to nardi funkcija recaptcha_get_html()

možno je tud, da narobe includaš fajl za recaptcho, napisat morš pravilno pot do fajla! če je pot pravilna, potem bi se captcha morala pojavt, če boš uporabu zgorno kodo.

aja pa če maš možnost, upgrejdi te webcardse, ker je zuni že 2.7, v 2.3 pa so dodal captcho: http://www.mywebcards.net/blog/page/2/

Zgodovina sprememb…

  • spremenil: illion ()

Blisk ::

Ta verzija, ki jo imam jaz se sploh ne da več updejtat in se nikoli ni dala.
Ker je tip naredil novo sokripo, ki je popolnoma drugačna od te.

Zdaj tistih 50$, še niti ni tak velik strošek, kolikor stane ta skripta, pač pa to
da ni možnosti nadgradit obstoječo in je potrebno spet vse prevest v slovenščino, naredit vse nove kategorije in vnes na novo vse slike in opise, to je bol problem...

illion ::

evo:

v lang/slovenian/index.php dodaj prevode:
...
$lang['captcha_error'] = "a si bot al sam ne znas prepisvat iz slike??";
$lang['captcha_text'] = "prepiši captcho";


v templates/preview_card.html dodaj holder za captcho:
...
{{render}} //to mas ze not

..
<br />
<br />
{{recaptcha_note}}
{{recaptcha}}

...



v index.php tm okol 40. vrstice dodas:
..
require "./source/functions.php"; //to mas ze not

require_once('recaptchalib.php');
define('RECAPTCHA_PUBLIC_KEY', '6Lf238kSAAAAABK5werr6Jjb4......');
define('RECAPTCHA_PRIVATE_KEY', '6Lf238kSAAAAAI95kpsrpyMJ......');
..




pol v index.php na konc funkcije preview() (okol 1100. vrstice):
..
$output = preg_replace("/{{date}}/i", date($conf['date_format']), $output); //to je ze not
	
$note = isset($GLOBALS['recaptcha_note']) ? $GLOBALS['recaptcha_note'] : $lang['captcha_text'];
$output = preg_replace("/{{recaptcha_note}}/", $note, $output);
$output = preg_replace("/{{recaptcha}}/", recaptcha_get_html(RECAPTCHA_PUBLIC_KEY), $output);
	
return $output; //to je ze not


pa se v naslednjo funkcijo add_n_send() takoj spodi, dodaj na zacetek funkcije:
..
global $conf, $DB, $lang; //to je ze not
	
$resp = recaptcha_check_answer (RECAPTCHA_PRIVATE_KEY,
                               $_SERVER["REMOTE_ADDR"],
                               $_POST["recaptcha_challenge_field"],
                               $_POST["recaptcha_response_field"]);
if (! $resp->is_valid) {
		$GLOBALS['recaptcha_note'] = $lang['captcha_error'];
		
		//izpisi preview, ki spet izpise captcho, a v tem primeru izpise napako namest samo 'prepisi captcho..'
		return preview();
}

$recip_email_array = array(); //to je ze not
...




to bo dodal captco tja na preview kartice, sama skripta je dost slabo zamišljena (bla v tej 1.3 verziji :D), najprej morš napisat podatke o kartici, ki jih preden izpiše preview preveri in teži z napakami, nato izriše preview, ko klikneš na 'pošlji kartico' pa zadevo direkt pošlje, brez ponovnega preverjanja. Tja ti lahko boti pošiljajo karkoli, zato sm captcho dodal na preview in preverjanje captche tik predn pošlje kartico.

Zgodovina sprememb…

  • spremenil: illion ()

Blisk ::

Ej, hvala za pomoč, jaz to ne bi spacal skup v 100 letih.
Zadevo sem zmontiral vse naredil BP,zadeva dela super.

Sem dolžan pivo :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Nov CAPTCHA: Nisem robot

Oddelek: Novice / Omrežja / internet
3012114 (8085) Ganon
»

WP captcha

Oddelek: Izdelava spletišč
101395 (1071) sebavet
»

Nov spam/abuse bot na phpBB forumih?

Oddelek: Omrežja in internet
122135 (1483) Iskraman
»

Kontaktni obrazec in spam

Oddelek: Izdelava spletišč
111742 (1481) mte
»

Digitalizacija knjig in anti-spam obenem

Oddelek: Novice / Znanost in tehnologija
164216 (2981) sverde21

Več podobnih tem