Category - PHP/MySQL/AJAX

Basic SQL Injection Tutorial
Online MD5 Hasher/Cracker
What is AJAX?

Basic SQL Injection Tutorial

Since first laying eyes on Magento, the open source eCommerce software, I been impressed by it’s power, flexibility and rigid code structure. But despite Magento’s almost endless list of strengths, it also has some significant weaknesses, that often leave me frustrated and confused. One such weakness is the apparent lack of any functionality in regards to copying products and categories.

I had created a category, with about 10 child categories. Now I just wanted to duplicate that category 5 times, rather than creating another 4 from scratch, each with 10 children (4×10=40 categories!). Rather than spend the next couple of hours adding categories, I knocked together this quick PHP script. Simply pass in the ID of the category you’d like to duplicate, and it will create a copy of the category, along with all of it’s child categories, as deep as they go!

Ideally, this would be a proper Magento module, but I’m just starting out with Magento. Give me 6 months, eh?!

To use the script, simply copy it into a file such as copycat.php in your Magento root directory and call it like so:[CATEGORY ID TO COPY]

if(!is_numeric($_GET['id']))die('Please specify a category ID');
$catId = $_GET['id'];
$xml = simplexml_load_file('app/etc/local.xml');
$host = $xml->global->resources->default_setup->connection->host;
$username = $xml->global->resources->default_setup->connection->username;
$password = $xml->global->resources->default_setup->connection->password;
$dbname = $xml->global->resources->default_setup->connection->dbname; 
$res = mysql_pconnect($host, $username, $password);   
$catsDone = 0;
echo $catsDone . ' Categories duplicated.';
function duplicate_entity($id, $parent_id = null){
	global $catsDone;
	// Grab category to copy
	$sql = "SELECT * FROM catalog_category_entity WHERE entity_id = " . $id;
	$query_entity = mysql_query($sql);
	$entity = mysql_fetch_object($query_entity);
	if(!$parent_id)$parent_id = $entity->parent_id;
	mysql_query("INSERT INTO catalog_category_entity (entity_type_id, attribute_set_id, parent_id, created_at, updated_at, path, position, level, children_count)
						VALUES ({$entity->entity_type_id}, {$entity->attribute_set_id}, {$parent_id}, NOW(), NOW(), '', {$entity->position}, {$entity->level}, {$entity->children_count})");
	$newEntityId = mysql_insert_id();
	$query = mysql_query("SELECT path FROM catalog_category_entity WHERE entity_id = " . $parent_id);
	$parent = mysql_fetch_object($query);
	$path = $parent->path . '/' . $newEntityId;
	mysql_query("UPDATE catalog_category_entity SET path='". $path."' WHERE entity_id=". $newEntityId);
	foreach(array('datetime', 'decimal', 'int', 'text', 'varchar') as $dataType){
		$sql = "SELECT * FROM catalog_category_entity_".$dataType."
				WHERE entity_id=" . $entity->entity_id;
		$query = mysql_query($sql);
		while ($value = mysql_fetch_object($query)){
			mysql_query("INSERT INTO catalog_category_entity_".$dataType." (entity_type_id, attribute_id, store_id, entity_id, value)
							VALUES ({$value->entity_type_id}, {$value->attribute_id}, {$value->store_id}, {$newEntityId}, '{$value->value}')");
	$sql = "SELECT entity_id FROM catalog_category_entity WHERE parent_id = " . $id;
	$query = mysql_query($sql);
	while ($entity = mysql_fetch_object($query)){
		duplicate_entity($entity->entity_id, $newEntityId);

Online MD5 Hasher/Cracker

Cloud CrackerIf you’ve ever worked with a PHP/MySQL application which handles user logins, then you will have worked with MD5 Hashes. An MD5 is a one-way encryption algorithm commonly used by web applications to store passwords.
When a new user creates an account, their password is ‘hashed’ using MD5 and the hash is stored along with their username in the database. When they attempt to login in the future, their entered password is hashed and compared to the hash in the database. If they match, they are authenticated. This is great as the password does not have to be visible in the database.

If you forget your admin password when developing an app and haven’t coded a ‘reset your password’ part yet (I always code these boring bits last!) you have 2 choices. You can create a new MD5 hash and replace the one in the database, or you can ‘crack’ the hash to find out your password. But how?

Enter Cloud Cracker, the free online MD5 hasher/cracker. This nifty little tool will take any password and give you it’s MD5 hash. It will also attempt to ‘crack’ an entered hash and show you the plaintext password.

Click Here to check out Cloud Cracker now. and feel free to hit the ‘Digg’ button if you like it.

What is AJAX?

AjaxWhat is AJAX?
If you find yourself asking this question then you’re either new to PHP/Javascript or you have been hiding under a rock for the past three years.
Since around 2006, the term/buzzword ‘AJAX’ has been thrown around like a frisbee in a playground. So what exactly is AJAX?

If you’ve had an auto-suggest bubble pop up as you’re searching, or if you’ve seen form sub-sections magically appear as you choose options, then you have already used AJAX. Slow, static web pages have given way to speedy, animated interfaces with more nifty features.

Some examples of what you can achieve with AJAX include:

  • Auto-suggest popups
  • Form elements appearing/hiding as you complete the form
  • Slider controls
  • Draggable/droppable content

The term AJAX stands for ‘Asynchronous Javascript And XML’. Technically, AJAX is when javascript sends requests back to the server, receives a response in XML and acts upon it. These days though, AJAX is used more of a blanket term of for anything interactive which uses javascript.

If you have been developing PHP and looking to take your applications to the next level of interactivity, then check out some of the nifty AJAX Javascript frameworks out there that do all the hard work for you:

Copyright © 2018. Created by Hayden Kibble.