File search and wildcards in PHP

Posted by Stanislav Furman on June 7, 2013

This post will continue one of my previous posts Reading file list from a mapped Windows network drive.

Recently, I have had a challenge with reading files from a directory using a wildcard pattern (i.e. " *.jpg "). Obviously, regular is_file() or file_exists() functions do not work in this case. So, I started looking for a solution that could help me with my problem.

Luckily, there is a function glob() that searches for the pathnames matching given pattern.

foreach(glob('*.jpg') as $image) {
  if( !is_dir($image) ) {
    $images[] = $image;
Continue reading

Do you use Skype? Then Microsoft reads everything you write!

Posted by Stanislav Furman on May 21, 2013

More or less, every clever IT professional understands that big corporations such as Microsoft and Google are able to read correspondences of Gmail and Skype users.

Recently, I found a post where guys from The H Security explain how they found out that Microsoft actually monitors what you write in Skype.

Actually, it is not a big secret. Everyone who uses Skype, must agree with the item that Microsoft could read everything you write (see privacy statement in Skype). Especially I liked that "Skype may capture and manually review instant messages or SMS in connection". However, it's interesting why they pay their attention to HTTPS links and ignore HTTP.

So, if you use Skype for Internet communication, you should know that it is not 100% private.

Concatenating NULL and blank fields in MySQL

Posted by Stanislav Furman on May 17, 2013

If you ever need to concatenate fields that are empty or equal null, you may run into troubles because MySQL doesn't concatenate NULL-fields as you might expect - if there is one of the concatenating fields equals NULL, the whole concatenating value will be NULL.

See the following dummy table:

firstname | middlename | lastname | email
John        J.           Smith      [email protected]
Amanda      NULL         Smith      [email protected]

As you can see Amanda Smith doesn't have middle name. So, if you now run a query that will try to concatenate first name, middle name and last name, you'll get NULL value instead of expected concatenated value.

Continue reading

How to protect against SQL injection, and why SQL injection is dangerous

Posted by Stanislav Furman on May 14, 2013
What is SQL injection? Why SQL injection is dangerous? How to protect against SQL injection?

jQuery 2.0 has released!

Posted by Stanislav Furman on April 24, 2013

In this release JQuery core developers threw out the support for Internet Explorer 6, 7 and 8 (Yay!). Thanks to this, the size of the library has decreased by 12% and now it's smaller and faster. It can be even smaller if you make your own build, disabling some of  built-in default modules (there is 12 of them).

Those who need old IE support should remain on the branch 1.x, which will continue supporting old IE versions.

Continue reading

How to trim array elements in PHP in one shot

Posted by Stanislav Furman on April 18, 2013
Remove all leading and trailing white spaces in all PHP array values.

How to get most accurate visitor's IP address in PHP

Posted by Stanislav Furman on April 15, 2013

Web developers often need to get visitor's IP address to use it in web applications. This can be used in internal traffic analytics tools, or as a part of security measures.

Most common and standard method of getting visitor's IP address is getting the value "REMOTE_ADDR" from the global PHP array $_SERVER:

$visitor_ip = $_SERVER['REMOTE_ADDR'];

However, standard PHP $_SERVER['REMOTE_ADDR'] value not necessarily contains the originating visitor's IP address because, for example, visitor can use a proxy server to access your web site. Using PHP we could try to detect user's IP address even if he uses proxy, but keep in mind that there is no guarantee that IP address that you get is 100% accurate (e.g. proxy can be anonymous).

Continue reading

Why start and run your own blog?

Posted by Stanislav Furman on April 1, 2013

There is a lot of different blogs exist in the Internet. However, every day people set up tons of new blogs, and at the same time huge number of blogs die every day. So, why would people create and run their own blogs?

Continue reading

Reading file list from a mapped Windows network drive

Posted by Stanislav Furman on March 25, 2013

Last week I ran into a situation when I had to read directory file list from a mapped Windows network drive. At your very first look it may seem pretty simple. It is! However, there is a little trick - Windows may require your network/domain credentials, and then standard PHP functions such as opendir() won't be able to access the directory. Fortunately, the solution is pretty simple:

Continue reading

MySQL. How to insert a row or update if exists in MySQL.

Posted by Stanislav Furman on February 25, 2013
Insert a row into DB, or update row on duplicated key in MySQL.