Archive for August, 2008

How to Add a Cool Tag Cloud to a WordPress Blog

Posted in WordPress by ShortLikeAFox on August 27th, 2008

Isn’t that cool? I think it’s cool. It’s a very customizable tag cloud available with the plugin titled WP-Cumulus. Getting it is as easy as downloading it from the link provided, installing it like any plugin, customizing it, and adding this line of code where you want it to appear: <?php wp_cumulus_insert(); ?>.

Have fun!

How to Add a Table of Contents to a WordPress Blog

Posted in WordPress by ShortLikeAFox on August 27th, 2008

So you run a WordPress blog and want to add a table of contents or sitemap. No Problem. Just download the Dagon Design Sitemap Generator. I use that plugin for this site and it is highly customizable to match your needs. I have personally found that it works better than many of the other sitemap/table of contents generators out there.

How to Divide One Image Into Multiple Images Using PHP

Posted in functions, php by ShortLikeAFox on August 26th, 2008

So you want to break one large image into multiple smaller images? No problem. This may seem like an obscure problem, but there are multiple reasons you’d want to do this. Maybe you want to create a visual sliding puzzle. Or maybe you are running a unique WordPress theme. Or maybe you want to create a collage of some kind. It really doesn’t matter why you want to split an image into smaller image, PHP makes this task easy. The example below only deals with jpegs. Changing the function to deal with other types of images wouldn’t be that hard.

 

<?php
//This function will split an image into a number of equally sized columns and rows.
function split_image($number_of_rows, $number_of_cols, $path_to_image, $file_name){

//$number_of_rows = # of rows you want;
//$number_of_cols = # of cols you wnat
//$path_to_image = the path to the folder the image is in, something like: /home/content/username/html/list/uploads/
//$file_name = The filename of the image: archery.jpg, etc.

// parse path for the extension
$info = pathinfo($path_to_image . $file_name);

//make sure we are dealing with a jpeg
if ( (strtolower($info['extension']) == ‘jpg’) || (strtolower($info['extension']) == ‘jpeg’) ){

// load image and get image size
$source = imagecreatefromjpeg( "{$path_to_image}{$file_name}" );
$width = imagesx( $source ); //Find the width
$height = imagesy( $source ); //Find the height
$segment_width = $width/$number_of_cols; //Determine the width of the individual segments
$segment_height = $height/$number_of_rows; //Determine the height of the individual segments

for( $col = 0; $col < $number_of_cols; $col++)
{

for( $row = 0; $row < $number_of_rows; $row++)
{

$fn = sprintf( "img%02d_%02d.jpg", $col, $row );
echo( "$fn" ); //I print the image name here, so that the process shows itself as it runs
$im = @imagecreatetruecolor( $segment_width, $segment_height );
imagecopyresized( $im, $source, 0, 0, $col * $segment_width, $row * $segment_height, $segment_width, $segment_height, $segment_width, $segment_height );
$file = "test.jpg";
//Save the images
if(imagejpeg( $im,"INSERT DESTINATION HERE ", 100 )) //The destination will be something like/home/content/c/h/d/images/$fn

echo("Has been made!<br/>");

}

}

}

}

?>

How to Include Functioning PHP Code in Your WordPress Posts

Posted in WordPress, php by ShortLikeAFox on August 17th, 2008

So you want to be able to use PHP in your WordPress blog posts and pages. That’s no problem. Just using <?php……..?> is going to make WordPress angry unless you install a plugin first. There are a few plugins out there that claim to offer this capability, but the one that I have found works the best is Exec-PHP.To begin using PHP code, follow these steps:

  1. Download Exec-PHP
  2. Install it like you would any plugin (The link above and readme file will walk you through this)
  3. If you are currently using it, you must turn off the WYSIWYG editor. To do this, go to Users -> Your Profile and uncheck the Use the visual editor when writing checkbox
  4. Start writing php code like you normally would: <?php ….code goes here ?>

That’s all there is to it!

How to Create and Use Dynamically Named Variables with PHP

Posted in php by ShortLikeAFox on August 17th, 2008

So you want to use dynamic variable names in your code. No problem. Let’s say you have 100 variables named dog0, dog1, dog2, …., dog98, dog99. Why you would want to use 100 variables like this instead of an array is beyond me, but it doesn’t matter for this example. To set these variables in a quick loop you could use the following:

for ($i = 0; $i < 100; $i ++){

$variableName = "dog$i";
$$variableName = $i; //sets $dog1 to 1, $dog2 to 2, $dog 34 to 34, etc….

}

Now let’s say you wanted to access all of these variables. You could use the following:

for ($i = 0; $i < 100; $i ++){

$variableName = "dog$i";
echo("<br/>");
echo("$variableName: ");
echo($$variableName);

}

This loop prints:

dog0: 0
dog1: 1
dog2: 2
dog3: 3
dog4: 4
dog5: 5
dog6: 6
dog7: 7
dog8: 8

etc… all the way to
dog99: 99

How to Intergrate ISBN Access on Your Webpages Using PHP

Posted in php by ShortLikeAFox on August 12th, 2008

ISBNs or International Standard Book Numbers are useful identifiers that can be used to find information about individual books. If you want to integrate ISBN lookups in your web applications PHP makes it doable.

Step One: ISBNdb.com is a has created an API that allows users from around the web to access their database of ISBN records. Here is their own description of the API:

ISBNdb.com’s remote access application programming interface (API) is designed to allow other websites and standalone applications use the vast collection of data collected by ISBNdb.com since 2003. As of this writing, in July 2005, the data includes nearly 1,800,000 books; almost 3,000,000 million library records; close to a million subjects; hundreds of thousands of author and publisher records parsed out of library data; more than 10,000,000 records of actual and historic prices.

To use this API you must first register. Registration takes literally seconds to complete. After this, you need to set up a key. Keys allow you to directly access the ISBN database from your own code. The ISBNdb.com website makes setting up keys easy.

Step Two: Now you’re start writing code to interact with the database. A request for an ISBN lookup will look something like this:

$isbnData = "http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1=$isbnQuery";

You would insert your access key in the place of XXXXXX. $isbnQuery would be the isbn number you are interested in. $isbnData is an XML file. To access this data you need to let your code know what it is dealing with. Something like this will work:

$xmlData = @simplexml_load_file($isbnData) or die ("no file loaded") ;

Now you can access individual variables with calls similar to this:

$title = $xmData->BookList[0]->BookData[0]->Title ;

Here is a complete working example:

<?php

$searchQuery = "9780684801223"; //The ISBN for Ernest Hemingway’s Old Man and the Sea
$isbnData = "http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1=$searchQuery"; //Remember to replace XXXXXX with your own access key
$xmlData = @simplexml_load_file($isbnData) or die ("no file loaded") ;
$title = $xmlData->BookList[0]->BookData[0]->Title ;
$authors = $xmlData->BookList[0]->BookData[0]->AuthorsText ;
$publisher = $xmlData->BookList[0]->BookData[0]->PublisherText ;

echo("$title<br/>");
echo("$authors<br/>");
echo("$publisher<br/>");

//This example prints:
//The old man and the sea
//Ernest Hemingway
//New York : Scribner Paperback Fiction, 1995.

?>

How to Help Users Easily Embed Videos on an SMF Site

Posted in SMF (Simple Machine Forum) by ShortLikeAFox on August 10th, 2008

So you are in charge of setting up a Simple Machines Forum based site and want a foolproof way to allow users to embed videos from popular video sites (YouTube, Google Video, IGN, etc.). You may justifiably be afraid in allowing users to simply use the embed code from those individual sites, because God knows what the results will be. The solution to this problem is as simple as can be. Karl Benson wrote a modification package that makes video embedding as simple as cutting and pasting the URL of the page the video appears in. This package works for over 150 sites and is called AEVAC (Audio Embed Video/Audio Clips). The most recent release is version 3.1.2 and it can be found here.

This is a mod I highly recommend. Used correctly it has the potential to greatly reduce the frequency and severity of forum administrator headaches.

How to Confirm an Email Address Using PHP

Posted in php by ShortLikeAFox on August 5th, 2008

So you need confirmation of a user’s email address? No problem. There are a lot of reasons to require email confirmation, and PHP makes it simple.

Email confirmation can be completed is these steps:

  1. Prompt the user for whatever information you need from them (including their email address)
  2. Input this data in a database
  3. Send the user an email with a special confirmation key
  4. "Unlock" the data in the database once the confirmation key is entered.

How to do it:

<?php

//First, let’s connect to the database

$user_name = "dbUserName ";
$host = "dbHost";
$my_password = "dbPassword";
$db_name = "dbName";

//Connect to server and select database.
mysql_connect("$host", "$user_name", "$my_password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");

//The following line basically asks if the user needs to have the form displayed. Read down a little if you want to see where the variables come from

if(!(@$_GET['first'] == "no") && !(@$_GET['confirm'] == "yes"){
//Since this is the page’s first display and no confirmation code is included we should display the form for the user to fill out
//This form only takes one argument (the user’s email address).

?>

<form name="emailConfirmation" method="post" action="index.php?first=no">

<table align="center">
<tr>
<td>
Email: <input name="email" type="text" id="email" size="30" />
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="Submit" value="Submit"/>
</td>
</tr>
</table>
</form>

 

<?php

}

//if the form has been filled out, we need to generate a confirmation code, insert the confirmation code and user email into a database, and send an email to the email address.
elseif (@$_GET['first'] == "no"){ //if the form has been filled out…

//is_valid_email_address is NOT a valid php function. Insert your own email address checking function here…
if (!is_valid_email_address($_POST['email']))

echo("Sorry! The email address you entered is not valid.");

//If the email address appears valid and safe…
else{

$email = ($_POST['email']);
//Generate a confirmation code here. This is the way I choose to do it, but there are innumerable ways that will work.
$confirmation_code=md5(uniqid(rand()));
//Everything is more or less OK to enter into the database and then send an email to the user
$query = "INSERT INTO emailConfirmationTable(user_email, con_code) VALUES(’$email’, ‘$confirmation_code’)";
$result = mysql_query($query) or die ("Config Error 2223 ");
//Send the email
$to=$email;
$subject="Your shortlikeafox example confirmation";// From
$header="from: shortlikeafox <info@shortlikeafox.com>";
// Your message
$message="Your Comfirmation link! \r\n";
$message.="Click on this link to activate your account \r\n";
$message.="This link with expire whenever I feel like cleaning out the unconfirmed emails (every week or so) \r\n";
$message.="http://www.shortlikeafox.com/simple-email-confirmation-example/index.php?confirm=yes&confirmCode=$confirmation_code \r\n";
$sentmail = mail($to,$subject,$message,$header);

echo("Your Confirmation Email Has Been Sent!");

}

}
//If the user found this script from a link in his email, confirm it….
elseif(@$_GET['confirm'] == "yes"){
//Make the confirmCode relatively safe to use

$confirmCode = mysql_real_escape_string(@$_GET['confirmCode']);

$query = "SELECT * FROM emailConfirmationTable WHERE con_code = ‘$confirmCode’ AND is_confirmed = ‘0′";
$result = mysql_query($query) or die ("Error 234234");
$nrows = mysql_num_rows($result);
if ($nrows==1){
$query = "UPDATE emailConfirmationTable SET is_confirmed = ‘1′ WHERE con_code = ‘$confirmCode’ ";
$result = mysql_query($query) or die ("Config Error 222231231233 ");
if ($result)
echo("EMAIL CONFIRMED!!!");

}
else

echo("Could not confirm Email");

}

 

?>

It is very important to remember to validate the information that the user inserts in any form. I didn’t include a function for email address validation above, but a good place to start is Cal Henderson’s email validation function found here.

If you want to see this script in action, you can do so here.