Visit Our UNIX and Linux User Community


PHP function kills my code?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting PHP function kills my code?
# 1  
Old 12-11-2003
PHP function kills my code?

So I'm making a page for one of my web sites that scans the visitors ports (just a few specific ones, not ALL) and tells them if they have any open. Now I made up the code and it worked great. Now instead of having the same chunk of code all over my script, I tried to make my own subroutine so I could just call it from all over. But since I did that, it now gives me an error of type 0, which means it couldn't even try to connect to the host, before it got an error. I can't figure it out at all?

Here's my code
PHP Code:
<? function sniff( $portnumber ) {
         if (! $sock = fsockopen($REMOTE_ADDR, $portnumber, $errno, $errstr, 7) )
             {
              if ($errno == 60)
                  {
                  echo "Timeout";
                  }
                  else 
                  {
                  echo "Closed $errno";
                 }
            }
            else
            {
              echo "<font color=#ff3300>Open</font>";
              fclose($sock);
              }
      } ?>
And here is how I call the function...
PHP Code:
<? sniff(22); ?>
I'm new to writing php's, but I don't think I have any syntax problems?
# 2  
Old 12-11-2003
OK, I am very much a beginer at PHP. It appears to work fine if you add quotes around the first argument (maybe because the fsockopen's first argument is a string? (anybody?)). Also slightly modifed your syntax. See below. On my PC, the output was: "Closed 9 " when trying port 22, but trying port 80, the output was "Open"

Code:
<? function sniff( $portnumber ) {
	$REMOTE_ADDR="localhost";
	$sock = fsockopen("$REMOTE_ADDR", $portnumber, $errno, $errstr, 80);
         if (!$sock)
             {
              if ($errno == 60)
                  {
                  echo "Timeout";
                  }
              else 
                  {
                  echo "Closed $errno";
                 }
            }
            else
            {
              echo "<font color=#ff3300>Open</font>";
              fclose($sock);
            }
      } ?>

<? sniff(22); ?>


Last edited by google; 12-11-2003 at 09:30 PM..
# 3  
Old 12-11-2003
Quote:
Originally posted by google
OK, I am very much a beginer at PHP. It appears to work fine if you add quotes around the first argument: On my PC, the output was: "Closed 9 " when trying port 22, but trying port 80, the output was "Open"

Code:
<? function sniff( $portnumber ) {
	$REMOTE_ADDR="localhost";
		$sock = fsockopen("$REMOTE_ADDR", $portnumber, $errno, $errstr, 80);
         if (!$sock)
             {
              if ($errno == 60)
                  {
                  echo "Timeout";
                  }
              else 
                  {
                  echo "Closed $errno";
                 }
            }
            else
            {
              echo "<font color=#ff3300>Open</font>";
              fclose($sock);
$sock</p>";
              }
      } ?>

<? sniff(22); ?>

Why do you keep posting then deleting your posts? Anyway most of the changes you made are no change. I don't think adding the quotes is going to make a difference because the code worked fine without them when it wasn't in its own function. Nope, just tested, no change.
# 4  
Old 12-11-2003
Sorry, editing the post. Well, all I can say is that the function works on my pc as written. As I said, I am a beginer at PHP too. I will add though that the code you posted does not work for me. I get the same error as you mentioned "Closed 0"

Last edited by google; 12-11-2003 at 11:14 PM..
# 5  
Old 12-11-2003
The code works perfect for me when I insert it directly into my page. But when I try to encapsulate it into a function, it stops working and I have no clue why.
# 6  
Old 12-12-2003
Put a return into your code.

such as
Code:
return $sock;

or
Code:
return 0;

and in your main code you need a var.

Code:
$var = sniff(22);

or just use a procedure.
# 7  
Old 12-12-2003
I tried that and it had no effect. I don't think my problem is calling my function, the problem is somehow that the script can't great a new socket from within the function. I do already get a result from the function, its just an error code from the socket. And I thought you didn't NEED a return if you didn't need the result of the function.

Previous Thread | Next Thread
Test Your Knowledge in Computers #685
Difficulty: Medium
Reverse Polish notation (RPN), also known as Polish programming notation.
True or False?

9 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

A Program Which Generates a Script Which Kills It

I have a C++ program, running on Fedora Linux, which has to be able to update itself to a new version, which it can obtain from a server. The way I do this is to have it create a shell script which kills it (the parent process), uninstalls it, downloads the new version (actually it does this... (1 Reply)
Discussion started by: BrandonShw
1 Replies

2. UNIX for Dummies Questions & Answers

xend kills network connectivity on boot

red hat 5 update 4 64bit. linux newby. on an interactive boot i can ping -t my vm linux server from my physical MS XP workstation and a vm W2000 64 bit server until xend is started, after that i get destination unreachable. if i choose not to start xend on the interactive boot i retain... (1 Reply)
Discussion started by: slartibartfast9
1 Replies

3. Shell Programming and Scripting

Script, child kills parent

Hello everyone, I'm trying to write a script, i would like to say the child kills the parent, how would i do that? (2 Replies)
Discussion started by: jessy21
2 Replies

4. UNIX for Dummies Questions & Answers

kills command

what are the header files required for the kills command in kernel version 2.4? (1 Reply)
Discussion started by: shwe
1 Replies

5. UNIX for Dummies Questions & Answers

Exiting eXceed window kills my process

Hi, I run a binary application with GUI accessibility. To launch and close the application i follow the following steps: 1.Log into a console session. Export display to the local workstation. 2.Launch X windows app ( eXceed ) 3.From terminal session go to the my application directory and... (2 Replies)
Discussion started by: shantaputi
2 Replies

6. Shell Programming and Scripting

application exit kills shells

Hi all, I start my application from a shell command-line. When I exit my application, it kills the shell that its returning too. Worse yet, since I have init respawning the shell all those subsequent shells get killed automatically...so I get output like the following (the >> is the prompt for... (2 Replies)
Discussion started by: q1001001
2 Replies

7. SuSE

Linux kills windows :(

Hey all, I've tired installing Suse 9.2 (DVD) on my computer, dual boot. But everytime I do it Linux seems to kill my Windows install. This is my setup, a 120GB HDD and for 30GB for Windows 60GB for Data and 30 GB for Linux. Windows works fine, then install SuSe and that works fine. ... (6 Replies)
Discussion started by: woofie
6 Replies

8. UNIX for Dummies Questions & Answers

Crash Kills Printer Device

A user accidentally unplugged her server from the wall. She has rebooted twice, but the system does not recognize the default printer device, which previously was lp02. There is a file which reads /dev/lp0 and then garble. I'm a total newbie at all of this, with some Unix experience many,... (2 Replies)
Discussion started by: ckurt
2 Replies

9. UNIX for Dummies Questions & Answers

exit from telnet kills orbix process

Hi, I'm using a bourne shell to kick off a 3rd Pty app. This app uses Orbix. When I exit from the telnet session which started the app or hit CTRL-C at the command line, the orbix process dies, yet all other process remain. I've tried starting the app as a background process, but it still... (1 Reply)
Discussion started by: edgarm
1 Replies

Featured Tech Videos