Sunday, January 27, 2013
How to Create CAPTCHA Protection using PHP
there are following stpes
1. html code
<img src="/captcha.php/?rand=0.608989860869691" id="captcha_image"/>
<a href="javascript:void(0);" onClick="refreshcaptcha();" >Refresh</a>
<input type="text" name="norobot" id="norobot" value="Enter Image Code" />
2. js
function refreshcaptcha(){
var capimage = document.getElementById('captcha_image').src;
var full_img=capimage.split('rand=');
document.getElementById('captcha_image').setAttribute('src', full_img[0]+'rand='+Math.random());
}
3.captcha.php
$randomnr = rand(1000, 9999);
$session["randomnr"] = md5($randomnr));
$im = imagecreatetruecolor(100, 38);
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 150, 150, 150);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 200, 35, $black);
//path to font - this is just an example you can use any font you like:
$font = '/font/karate/Karate.ttf';
imagettftext($im, 20, 4, 22, 30, $grey, $font, $randomnr);
imagettftext($im, 20, 4, 15, 32, $white, $font, $randomnr);
//die(111);
//prevent caching on client side:
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
exit;
4. On post action file
if (md5($data['norobot']) == $session["randomnr"]) {
// here you place code to be executed if the captcha test passes
} else {
// here you place code to be executed if the captcha test fails
echo "Please enter correct code.";
return;
}
1. html code
<img src="/captcha.php/?rand=0.608989860869691" id="captcha_image"/>
<a href="javascript:void(0);" onClick="refreshcaptcha();" >Refresh</a>
<input type="text" name="norobot" id="norobot" value="Enter Image Code" />
2. js
function refreshcaptcha(){
var capimage = document.getElementById('captcha_image').src;
var full_img=capimage.split('rand=');
document.getElementById('captcha_image').setAttribute('src', full_img[0]+'rand='+Math.random());
}
3.captcha.php
$randomnr = rand(1000, 9999);
$session["randomnr"] = md5($randomnr));
$im = imagecreatetruecolor(100, 38);
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 150, 150, 150);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 200, 35, $black);
//path to font - this is just an example you can use any font you like:
$font = '/font/karate/Karate.ttf';
imagettftext($im, 20, 4, 22, 30, $grey, $font, $randomnr);
imagettftext($im, 20, 4, 15, 32, $white, $font, $randomnr);
//die(111);
//prevent caching on client side:
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
exit;
4. On post action file
if (md5($data['norobot']) == $session["randomnr"]) {
// here you place code to be executed if the captcha test passes
} else {
// here you place code to be executed if the captcha test fails
echo "Please enter correct code.";
return;
}
Labels:
PHP
Thursday, January 24, 2013
Magento : Create an attribute for customer mobile number
Consider package : Bd_Customermobile
1. Bd_Customermobile.xml
<?xml version="1.0"?>
<config>
<modules>
<Bd_Customermobile>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</Bd_Customermobile>
</modules>
</config>
2. config.xml
<?xml version="1.0"?>
<config>
<modules>
<Bd_Customermobile>
<version>0.1.0</version>
</Bd_Customermobile>
</modules>
<global>
<helpers>
<customermobile>
<class>Bd_Customermobile_Helper</class>
</customermobile>
</helpers>
<models>
<customermobile>
<class>Bd_Customermobile_Model</class>
<resourceModel>customermobile_mysql4</resourceModel>
</customermobile>
</models>
<resources>
<customerattribute_setup>
<setup>
<module>Bd_Customermobile</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</customerattribute_setup>
<customerattribute_write>
<connection>
<use>core_write</use>
</connection>
</customerattribute_write>
<customerattribute_read>
<connection>
<use>core_read</use>
</connection>
</customerattribute_read>
</resources>
</global>
</config>
3. mysql4-install-0.1.0.php
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute("customer", "bd_customer_mobile", array(
"type" => "varchar",
"backend" => "",
"label" => "Customer Mobile",
"input" => "text",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => "Additional attribute for mobile number"
));
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "bd_customer_mobile");
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
;
$attribute->save();
$installer->endSetup();
1. Bd_Customermobile.xml
<?xml version="1.0"?>
<config>
<modules>
<Bd_Customermobile>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</Bd_Customermobile>
</modules>
</config>
2. config.xml
<?xml version="1.0"?>
<config>
<modules>
<Bd_Customermobile>
<version>0.1.0</version>
</Bd_Customermobile>
</modules>
<global>
<helpers>
<customermobile>
<class>Bd_Customermobile_Helper</class>
</customermobile>
</helpers>
<models>
<customermobile>
<class>Bd_Customermobile_Model</class>
<resourceModel>customermobile_mysql4</resourceModel>
</customermobile>
</models>
<resources>
<customerattribute_setup>
<setup>
<module>Bd_Customermobile</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</customerattribute_setup>
<customerattribute_write>
<connection>
<use>core_write</use>
</connection>
</customerattribute_write>
<customerattribute_read>
<connection>
<use>core_read</use>
</connection>
</customerattribute_read>
</resources>
</global>
</config>
3. mysql4-install-0.1.0.php
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute("customer", "bd_customer_mobile", array(
"type" => "varchar",
"backend" => "",
"label" => "Customer Mobile",
"input" => "text",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => "Additional attribute for mobile number"
));
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "bd_customer_mobile");
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
;
$attribute->save();
$installer->endSetup();
Labels:
Magento
Tuesday, January 15, 2013
Magento: Mobile number validation using custom class
HTML code
<input type="text" name="telephone" id="telephone" value="<?php echo $this->htmlEscape($this->getFormData()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text validate-custommobile" />
Js code
<script type="text/javascript">
//<{0,1}(\-){0,1}(\s){0,1}[1-9]{1}[0-9]{7}$";
// var matchArray = v.match(timePat);
if(v.length > 0){
if(v.length !=10){
return false;
}else if(v[0] != 9 || v[1] != 1 ){
//return false;
}else if(v[2]!=9 && v[2]!=8 && v[2]!=7){
return false;
}
return true;
}else {
return false;
}
}
]])};
var dataForm = new VarienForm('form-id', true);
//]]>
</script>
<input type="text" name="telephone" id="telephone" value="<?php echo $this->htmlEscape($this->getFormData()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text validate-custommobile" />
Js code
<script type="text/javascript">
//<{0,1}(\-){0,1}(\s){0,1}[1-9]{1}[0-9]{7}$";
// var matchArray = v.match(timePat);
if(v.length > 0){
if(v.length !=10){
return false;
}else if(v[0] != 9 || v[1] != 1 ){
//return false;
}else if(v[2]!=9 && v[2]!=8 && v[2]!=7){
return false;
}
return true;
}else {
return false;
}
}
]])};
var dataForm = new VarienForm('form-id', true);
//]]>
</script>
Labels:
Magento
Subscribe to:
Comments (Atom)