There was a big problem for adding captcha in sf web to lead forms but I did.
Here I put some code to help anyone who is looking for it.
you should have 2 files:
The first file is a web page file that you put the web to lead form that you have made it before in salesforce.
The second one is the php file to check the captcha code and then send data to sf leads.
Note:
1- For this captcha you should signup for "publickey" and "privatekey" from here
2- Download the recaptchalib.php from here
3- The server (host) should support cUrl php library
First file code (contactus.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Form</title>
</head>
<body>
<!-- Your form must be put instead of this form and put the bold parts in that form -->
<form action="check-this-first.php" method="post" name="emailForm" id="test" style="padding: 0px; margin: 0px;" >
<input type=hidden name="oid" value="00D200000008By">
<input type=hidden name="retURL" value="your return url like www.yahoo.com">
<table>
<tr>
<td >Title: <br />
<input style="width:200px;" id="title" maxlength="5" name="title" size="7" type="text"/>
</td>
</tr>
<tr>
<td >First Name: <br />
<input style="width:200px;" id="first_name" maxlength="40" name="first_name" size="20" type="text"/>
</td>
</tr>
<tr>
<td >Last Name: <br />
<input style="width:200px;" id="last_name" maxlength="80" name="last_name" size="20" type="text" />
</td>
</tr>
<tr>
<td >Email:<br />
<input style="width:200px;" id="email" maxlength="80" name="email" size="20" type="text" /></td>
</tr>
<tr>
<td >Country: <br />
<input style="width:200px;" id="country" maxlength="40" name="country" size="20" type="text" />
</td>
</tr>
<tr>
<td >City: <br />
<input style="width:200px;" id="city" maxlength="40" name="city" size="20" type="text" />
</td>
</tr>
<tr>
<td >Company:<br />
<input style="width:200px;" id="company" maxlength="40" name="company" size="20" type="text" />
</td>
</tr>
<tr>
<td >Mobile: <br />
<input style="width:200px;" id="mobile" maxlength="40" name="mobile" size="20" type="text" />
</td>
</tr>
<tr>
<td >Description: <br />
<textarea name="description"></textarea>
</td>
</tr>
<tr>
<td align="left" >
<span class="style1 style2">Verify Code:<br />
<br />
<!-- Captcha//-->
<?php
require_once('recaptcha/recaptchalib.php');
$publickey = "***************"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<!-- Captcha //-->
</td>
</tr>
<tr>
<td>
<br /><br />
<input type="submit" name="submit">
</td>
</tr>
</table>
</form>
</body>
</html>
Second file (check-this-first.php)
<?php
session_start();
ob_start();
require_once('recaptcha/recaptchalib.php');// download and put in the recaptcha folder
//Recaptcha Settings
$publickey = "********************"; // you got this from the signup page
$privatekey = "********************";//your private key
//curl method posting
//extract data from the post
extract($_POST);
if ($submit){
$ok = 1;
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
$ok = 0;
}
if ($ok){
//set POST variables
$url = 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';
$fields = array(
'oid'=>urlencode($oid),
'retURL'=>urlencode($retURL),
'title'=>urlencode($title),
'first_name'=>urlencode($first_name),
'last_name'=>urlencode($last_name),
'email'=>urlencode($email),
'country'=>urlencode($country),
'city'=>urlencode($city),
'company'=>urlencode($company),
'mobile'=>urlencode($mobile),
'description'=>urlencode($description)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//print_r($fields_string);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
echo 'Congratulation the leads has been sent successfully.';
} //if ok
else {
echo "<h4>Sorry - Invalid Captcha Please try again </h4>";
}
} //if submit.
?>
Here I put some code to help anyone who is looking for it.
you should have 2 files:
The first file is a web page file that you put the web to lead form that you have made it before in salesforce.
The second one is the php file to check the captcha code and then send data to sf leads.
Note:
1- For this captcha you should signup for "publickey" and "privatekey" from here
2- Download the recaptchalib.php from here
3- The server (host) should support cUrl php library
First file code (contactus.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Form</title>
</head>
<body>
<!-- Your form must be put instead of this form and put the bold parts in that form -->
<form action="check-this-first.php" method="post" name="emailForm" id="test" style="padding: 0px; margin: 0px;" >
<input type=hidden name="oid" value="00D200000008By">
<input type=hidden name="retURL" value="your return url like www.yahoo.com">
<table>
<tr>
<td >Title: <br />
<input style="width:200px;" id="title" maxlength="5" name="title" size="7" type="text"/>
</td>
</tr>
<tr>
<td >First Name: <br />
<input style="width:200px;" id="first_name" maxlength="40" name="first_name" size="20" type="text"/>
</td>
</tr>
<tr>
<td >Last Name: <br />
<input style="width:200px;" id="last_name" maxlength="80" name="last_name" size="20" type="text" />
</td>
</tr>
<tr>
<td >Email:<br />
<input style="width:200px;" id="email" maxlength="80" name="email" size="20" type="text" /></td>
</tr>
<tr>
<td >Country: <br />
<input style="width:200px;" id="country" maxlength="40" name="country" size="20" type="text" />
</td>
</tr>
<tr>
<td >City: <br />
<input style="width:200px;" id="city" maxlength="40" name="city" size="20" type="text" />
</td>
</tr>
<tr>
<td >Company:<br />
<input style="width:200px;" id="company" maxlength="40" name="company" size="20" type="text" />
</td>
</tr>
<tr>
<td >Mobile: <br />
<input style="width:200px;" id="mobile" maxlength="40" name="mobile" size="20" type="text" />
</td>
</tr>
<tr>
<td >Description: <br />
<textarea name="description"></textarea>
</td>
</tr>
<tr>
<td align="left" >
<span class="style1 style2">Verify Code:<br />
<br />
<!-- Captcha//-->
<?php
require_once('recaptcha/recaptchalib.php');
$publickey = "***************"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<!-- Captcha //-->
</td>
</tr>
<tr>
<td>
<br /><br />
<input type="submit" name="submit">
</td>
</tr>
</table>
</form>
</body>
</html>
Second file (check-this-first.php)
<?php
session_start();
ob_start();
require_once('recaptcha/recaptchalib.php');// download and put in the recaptcha folder
//Recaptcha Settings
$publickey = "********************"; // you got this from the signup page
$privatekey = "********************";//your private key
//curl method posting
//extract data from the post
extract($_POST);
if ($submit){
$ok = 1;
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
$ok = 0;
}
if ($ok){
//set POST variables
$url = 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';
$fields = array(
'oid'=>urlencode($oid),
'retURL'=>urlencode($retURL),
'title'=>urlencode($title),
'first_name'=>urlencode($first_name),
'last_name'=>urlencode($last_name),
'email'=>urlencode($email),
'country'=>urlencode($country),
'city'=>urlencode($city),
'company'=>urlencode($company),
'mobile'=>urlencode($mobile),
'description'=>urlencode($description)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//print_r($fields_string);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
echo 'Congratulation the leads has been sent successfully.';
} //if ok
else {
echo "<h4>Sorry - Invalid Captcha Please try again </h4>";
}
} //if submit.
?>