NetTalk Central
NetTalk Web Server => Web Server - Share Knowledge => Topic started by: DonRidley on June 24, 2010, 08:41:48 AM
-
Special thanks to Bill Shields. Without him I could not have put this together.
I have attached a zip file containing a web app that has a CAPTCHA.
The app was compiled using Clarion 7.2 7248.
Solution requires NetTalk and WinEvent
The login name is: demo. The password is: demo
You will have to setup an account with reCaptcha. They use an IP address to issue a public key and a private key. You will need these keys in your code.
For testing purposes, I used the IP address to my home's cable modem.
There's a text file named YourJavascriptCode. There's some info for you in there.
If you have any questions, please ask them here.
Don
[attachment deleted by admin]
-
Here's a screenshot of it in action....
[attachment deleted by admin]
-
Hi Don,
I am very interested in your captcha example.
I am on 6.3 though so it is hard for me (and others) to check it out.
Is there any way for me to get hold of a 6.3 version?
Rene Simons
-
I would love to but I don't own a copy of C6.x . Here's a brief overview:
Create an WebForm procedure.
Create local variable: lresponse
I have the lresponse variable in the "fields" section of the form but it is hidden with no prompt.
Insert code into embeds:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Validate lresponse
lResponse = PostFormResponse('http://api-verify.recaptcha.net/verify','privatekey=6LdXErsSAAAAAKEj4LSWqHjjheCDqwWiUkPEGr7o &remoteip='&p_web.RequestData.FromIP&'&challenge='&CLIP(p_web.GetValue('recaptcha_challenge_field'))&'&=&response='&p_web.GetValue('recaptcha_response_field'))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Validate lresponse (same embed but used twice..see attached screenshot)
IF INSTRING('true',clip(lresponse),1,1)
!loc:invalid = 'lresponse'
!loc:alert = 'The captcha words are incorrect!'
ELSIF INSTRING('false',clip(lresponse),1,1)
loc:invalid = 'lresponse'
loc:alert = 'The captcha words are incorrect!'
END
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Create a standard Window procedure
Create local variable: MyText String (1024)
Insert code into embed points:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ErrorTrap PROCEDURE(string errorDtr.string fundtionName),VIRTUAL
Before Parent Call
MyText = ''
POST(Event:CloseWindow)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PageReceived PROCEDURE,VIRTUAL
Before Parent Call
IF WebClient.PageLen <= 0
MyText = ''
ELSIF WebClient.PageLen < Size(MyText)
MyText = SUB(WebClient.Page,WebClient.HeaderLen,WebClient.PageLen-WebClient.HeaderLen+1)
ELSE
MyText = WebClient.Page [WebClient.HeaderLen : SIZE(MyText)-WebClient.HeaderLen+1]
.
POST(EVENT:CloseWindow)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Window Events - Open Window
WebClient.SetAllHeadersDefault()
WebClient.CanUseProxy = 1
WebClient.HeaderOnly = 0
WebClient.AsyncOpenUse = 1
WebClient.AsyncOpenTimeOut = 1200 !12 seconds
WebClient.InActiveTimeout = 2000 !20 seconds
WebClient.ContentType = 'application/x-www-form-urlencoded'
WebClient.AcceptEncoding = ''
WebClient.ProxyConnectionKeepAlive = 0
WebClient.ConnectionKeepAlive = 0
WebClient.ContentLength = LEN(CLIP(lPost))
WebClient.Post(CLIP(lURL),CLIP(lPost))
[attachment deleted by admin]