"Linux Gazette...making Linux just a little more fun!"
Developing Web Applications - Part II
By
As I promised, I was going to give you guys another example of a php3 program. This program is a very simple program, and yet somewhat useful.
One night, I was at the university working and I tried to call home to talk to my wife. Unfortunately, I had left my computer connected that day, and could not get through. So, since my computer was running Apache, I decided to scan through the IPs of my ISP , and find out which computer was my computer, so I could telnet to it, and remotely disconnect it.
The fastest, and simplest way to do this was either through php3 or java, but since I am not very fond of java applets, I decided to do it in php3.
//Opens socket and goes through a bunch of sequential IPs, and
//it returns all the address that have a web server running.
// This loop will go through all addresses in the block 10.0.0.x
// The 10.0.0.x series is a fictional example, these IPs are normally
// for intranet addresses, I am just trying to keep my ISP safe from
for($i=1; $i < 256; $i++)
// $path is the variable that will hold the URL you are testing.
$path = "http://10.0.0.".$i;
// Opens socket on server PAI, port 80.
$fp = fsockopen("pai", 80, &$errno, &$errstr);
// Sends the HTTP request that returns the info we need to know.
fputs($fp,"GET $path HTTP/1.0\n\n");
set_socket_blocking($fp, false);
// This is the string we wait for as a reply to the HTTP request.
$str2 = "HTTP/1.0 200 OK";
// Gives the program 2 seconds to try to connect to the server.
// Captures the line from the HTTP request.
// If str2 is the same line, then we have a match, and there is a web
// server running. Then go ahead and show me the name of the server with
if (strcmp($line, $str2) == 0)
echo "<A HREF=".$path.">".gethostbyaddr($pathhost)."</a><br>\n";
One important observation, this process is very simple, but it is very inefficient, since for every IP you check you will wait a maximum of 2 seconds. So, don't abuse this script, because you will probably get a time out operation from your web server, or you will be stuck waiting for all the iterations for a long time.
But still, it is a good example of what you as a home user can do with php3.
Next month, I will write yet another example of php3 program, this time I will show you how to create your own guest book, using php3 and mySQL.
Copyright © 2000, Anderson Silva
Published in Issue 49 of Linux Gazette, January 2000