10 code snippets for PHP developers

I've compiled a small list of some useful code snippets which might help you when writing your PHP scripts...


Email address check
Checks for a valid email address using the php-email-address-validation class.
Source and docs: http://code.google.com/p/php-email-address-validation/

 
include('EmailAddressValidator.php');
 
$validator = new EmailAddressValidator;
if ($validator->check_email_address('test@example.org')) {
    // Email address is technically valid
}
else {
    // Email not valid
}
 

Random password generator
PHP password generator is a complete, working random password generation function for PHP. It allows the developer to customize the password: set its length and strength. Just include this function anywhere in your code and then use it.
Source : http://www.webtoolkit.info/php-random-password-generator.html

 
function generatePassword($length=9, $strength=0) {
    $vowels = 'aeuy';
    $consonants = 'bdghjmnpqrstvz';
    if ($strength & 1) {
        $consonants .= 'BDGHJLMNPQRSTVWXZ';
    }
    if ($strength & 2) {
        $vowels .= "AEUY";
    }
    if ($strength & 4) {
        $consonants .= '23456789';
    }
    if ($strength & 8) {
        $consonants .= '@#$%';
    }
 
    $password = '';
    $alt = time() % 2;
    for ($i = 0; $i < $length; $i++) {
        if ($alt == 1) {
            $password .= $consonants[(rand() % strlen($consonants))];
            $alt = 0;
        } else {
            $password .= $vowels[(rand() % strlen($vowels))];
            $alt = 1;
        }
    }
    return $password;
}
 

Get IP address
Returns the real IP address of a visitor, even when connecting via a proxy.
Source : http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html

 
function getRealIpAddr(){
	if (!empty($_SERVER['HTTP_CLIENT_IP'])){
		//check ip from share internet
		$ip = $_SERVER['HTTP_CLIENT_IP'];
	}
	elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
		//to check ip is pass from proxy
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
	else{
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	return $ip;
}
 

XSL transformation
PHP5 version
Source : http://www.tonymarston.net/php-mysql/xsl.html

 
$xp = new XsltProcessor();
 
// create a DOM document and load the XSL stylesheet
$xsl = new DomDocument;
$xsl->load('something.xsl');
 
// import the XSL styelsheet into the XSLT process
$xp->importStylesheet($xsl);
 
// create a DOM document and load the XML datat
$xml_doc = new DomDocument;
$xml_doc->load('something.xml');
 
// transform the XML into HTML using the XSL file
if ($html = $xp->transformToXML($xml_doc)) {
	echo $html;
}
else {
	trigger_error('XSL transformation failed.', E_USER_ERROR);
} // if
 

PHP4 version

 
function xml2html($xmldata, $xsl){
   /* $xmldata -> your XML */
   /* $xsl -> XSLT file */
 
   $arguments = array('/_xml' => $xmldata);
   $xsltproc = xslt_create();
   xslt_set_encoding($xsltproc, 'ISO-8859-1');
   $html = xslt_process($xsltproc, $xmldata, $xsl, NULL, $arguments);
 
   if (empty($html)) {
       die('XSLT processing error: '. xslt_error($xsltproc));
   }
   xslt_free($xsltproc);
   return $html;
}
 
echo xml2html('myxmml.xml', 'myxsl.xsl');
 

Force downloading of a file
Forces a user to download a file, for e.g you have an image but you want the user to download it instead of displaying it in his browser.

 
header("Content-type: application/octet-stream");
 
// displays progress bar when downloading (credits to Felix ;-))
header("Content-Length: " . filesize('myImage.jpg'));
 
// file name of download file
header('Content-Disposition: attachment; filename="myImage.jpg"');
 
// reads the file on the server
readfile('myImage.jpg');
 

String encoding to prevent harmful code
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks. The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc)
Source : http://phed.org/reform-encoding-library/

 
include('Reform.php');
Reform::HtmlEncode('a potentially harmful string');
 

Sending mail
Using PHPMailer
PHPMailer a powerful email transport class with a big features and small footprint that is simple to use and integrate into your own software.
Source : http://phpmailer.codeworxtech.com/

 
include("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = 'noreply@htmlblog.net';
$mail->FromName = 'HTML Blog';
$mail->Host = 'smtp.site.com';
$mail->Mailer = 'smtp';
$mail->Subject = 'My Subject';
$mail->IsHTML(true);
$body = 'Hello<br/>How are you ?';
$textBody = 'Hello, how are you ?';
$mail->Body = $body;
$mail->AltBody = $textBody;
$mail->AddAddress('asvin [@] gmail.com');
if(!$mail->Send())
	echo 'There has been a mail error !';
 

Using Swift Mailer
Swift Mailer is an alternative to PHPMailer and is a fully OOP library for sending e-mails from PHP websites and applications.
Source : http://swiftmailer.org/

 
// include classes
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";
 
$swift =& new Swift(new Swift_Connection_SMTP("smtp.site.com", 25));
$message =& new Swift_Message("My Subject", "Hello<br/>How are you ?", "text/html");
if ($swift->send($message, "asvin [@] gmail.com", "noreply@htmlblog.net")){
    echo "Message sent";
}
else{
    echo 'There has been a mail error !';
}
 
//It's polite to do this when you're finished
$swift->disconnect();
 

Uploading of files
Using class.upload.php from Colin Verot
Source : http://www.verot.net/php_class_upload.htm

 
$uploadedImage = new Upload($_FILES['uploadImage']);
 
if ($uploadedImage->uploaded) {
	$uploadedImage->Process('myuploads');
	if ($uploadedImage->processed) {
		echo 'file has been uploaded';
	}
}
 

List files in directory
List all files in a directory and return an array.
Source : http://www.laughing-buddha.net/jon/php/dirlist/

 
function dirList ($directory) {
    // create an array to hold directory list
    $results = array();
 
    // create a handler for the directory
    $handler = opendir($directory);
 
    // keep going until all files in directory have been read
    while ($file = readdir($handler)) {
 
        // if $file isn't this directory or its parent,
        // add it to the results array
        if ($file != '.' && $file != '..')
            $results[] = $file;
    }
 
    // tidy up: close the handler
    closedir($handler);
 
    // done!
    return $results;
}
 

Querying RDBMS with MDB2 (for e.g MySQL)
PEAR MDB2 provides a common API for all supported RDBMS.

Source : http://pear.php.net/package/MDB2

 
// include MDB2 class
include('MDB2.php');
 
// connection info
$db =& MDB2::factory('mysql://username:password@host/database');
// set fetch mode
$db->setFetchMode(MDB2_FETCHMODE_ASSOC);
 
// querying data
$query = 'SELECT id,label FROM myTable';
$result = $db->queryAll($query);
 
// inserting data
// prepare statement
$statement = $db->prepare('INSERT INTO mytable(id,label) VALUES(?,?)');
// our data
$sqlData = array($id, $label);
// execute
$statement->execute($sqlData);
$statement->free();
 
// disconnect from db
$db->disconnect();
 
Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • StumbleUpon
  • Mixx
  • Ma.gnolia
  • Technorati
  • Netvouz
  • Reddit
  • Propeller
  • Slashdot
  • description

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

Great list!
But, for protection against XSS exploits, without blocking harmless HTML/CSS, check out http://humanbagel.com/opencode.php Click the XSS Protect link, it’s peer reviewed open source. good stuff.

I especially like the upload files one :)

glob() does the same thing as dirList() and it also supports wildcards such as glob(”*.txt”)

Thanks for pointing the way to Swift. Good list.

Not that these are terrible, but seriously. People who can’t write these themselves, shouldn’t be programming. All of these things could be done by a noobie with some research.

[...] The html blog | 10 code snippets for PHP developers (tags: php) [...]

Exactly Jesse you’re right, these are basic things, but this post prevents them from doing the research, having all the useful things under 1 post and discovering some new classes like class.upload.php, EmailAddress validator.

To Kevin, thx for the glob function, didn’t know about that.

nice ideas

You should include a Content-Length header in the file download example. This way the browser will be able to display a proper progress bar.

Thnx Felix, already updated the code ;-)

Thanks for the nice list.

But for listing files in directory I prefer the DirectoryIterator [1] in the SPL.

Witi

[1] http://de.php.net/manual/de/class.directoryiterator.php

nice

Awesome list…will use for sure.

[...] 10 code snippets for PHP developers [...]

[...]  10 code snippets for PHP developers () [...]

[...] Developers, don’t feel left out this roundup. The HTML Blog provides 10 code snippets for PHP developers. [...]

[...] The html blog | 10 code snippets for PHP developers (tags: webdevelopment webdev webdesign web-design web validation tutorials tutorial tricks) [...]

[...] Ways to Hack Your Brain For A Better Life JD-GUI | Java Decompiler The html blog | 10 code snippets for PHP developers Student emails MIT’s Comp. Sci. mailing list with an OS question. Here is Richard Stallman’s reply. [...]

[...] The html blog | 10 code snippets for PHP developers (tags: php webdesign tutorial blog) [...]

Why using the php-email-address-validation class ?
The function filter_var exists with good filters for mail verification.

filter_var requires PHP 5.2 whereas the php-email-address-validation class can be hacked to work with PHP4 by just removing public/protected from the functions.

i agree that all of these are functions that one would encounter if you programmed everyday in a commercial and none commercial environment. I think mixing php4 and 5 oop is not such a great idea

[...] The html blog | 10 code snippets for PHP developers More Snippets of greatness for us PHP Developers (tags: web Tutorials webdevelopment validation web-design reference webdesign development howto programming tips tools tricks dev snippets php html webdev blog Resources list bit200f08 shortcuts snippet good programmers code) [...]

[...] The html blog | 10 code snippets for PHP developers http://htmlblog.net/10-code-snippets-for-php-developers/ [...]

[...] buena colección de snippets (trozos de códigos) para programadores php. Entre los que podemos [...]

Nice snippets. Thanks. Though the mail validator could just use a regex rather than a whole class…

Good Job! thanks for share!!!

Greetings

david

Here’s a few I’ve written:

/*
Function will parse the content looking for syntax like this:
{function name=”functionName” value=”passVariableData”}
and replace this text with the result of the function. Be sure
that the function called is accessable by the current page.
*/
public function parseContent($content)
{
$pattern = “/\{function name=(['|\"])(.*)(\\1) value=(['|\"])(.*)(\\4)\}/i”;
$matches = preg_match_all($pattern, $content, $pMatches);
if(!empty($pMatches[2][0]))
{
$result = call_user_func($pMatches[2][0], $pMatches[5][0]);
$content = str_replace($pMatches[0][0], $result, $content);
}
/* Add more filters to content here */

return $content;
}

/*
Function will parse content and replace any URLs with a hyperlink.
*/
function parseUrls($originalInput, $target = “_blank”)
{
$originalInput = str_replace(”\n”, ” \n”, $originalInput);
$inputTokens = explode(” “, $originalInput);
$input = “”;
foreach($inputTokens as $token)
{
if(strlen($token) > 5)
{
// check for https://, http://
if((($pos = strpos($token, “http://”)) !== false) ||
(($pos = strpos($token, “https://”)) !== false)||
(($pos = strpos($token, “ftp://”)) !== false))
{

$pref = substr($token, 0, $pos);
$link = substr($token, $pos);

if(strlen($link) > 8) $token = “$pref” . str_replace(array(”\n”, “\r”, ” “), “”, $link) . ““;
}

// check for http://www.
else if(strpos($token, “www.”) === 0) {
$token = “$token“;
}
}

$input .= $token.” “;
}

return $input;
}

function htmlOptions($theArray, $default = ”, $useKeyVal = false, $useKeyDisp = false)
{
foreach($theArray as $k => $val)
{
$str = “”;
if($userKeyDisp)
$str .= $k;
else
$str .= $val;

$str .= “”;
echo $str;
}
}

And here’s a file class I wrote. Very simple and no real documentation but someone might find it interesting/useful:

http://www.abetterframework.com/_include/helpers/file.class.phps

Nice listing, very informative, thanks.

I can’t post my comment!!!

Interesting code samples

Thanks for such a time saver. Going to bookmark the code snippets. I know I am going to have to refer back to one of these in the future.

Ivan, the comments are moderated ;-)

Great list thanks so much

[...] are 10 bits of code that you can include in your PHP development to do some cool stuff.  Why program it from scratch [...]

scandir does the same thing as dirList function does.

php built in functions are faster, too — so use it. :)

Great that solves 2 of my problems instantly!
Cheers!

Nice tips, thank you for sharing ;)

great codes. We used something similar to get IP address in our contact form.

[...] código útil en The HTML Blog [Mostrar marcadores] [Cerrar marcadores] [...]

[...] Visit Article [...]

Leave a comment

(required)

(required)