I'm creating an IRC bot, and I wanted to store some functions in a different file. I reference the file in my main file with include()
and it works, but when I try to give fwrite()
a variable like so:
$data ="THIS IS DATA\r\n";
fwrite($sock, $data);
It throws this error:
PHP Warning: feof() expects parameter 1 to be resource, null given in /home/kinz/Desktop/Eve/Eve.php on line 18
PHP Warning: fgets() expects parameter 1 to be resource, null given in /home/kinz/Desktop/Eve/Eve.php on
But when I put:
fwrite($sock, "THIS IS DATA\r\n");
It works perfectly fine. Here is my full code:
function connect_s ($serv, $port, $nick) { $sock = fsockopen($serv, $port); fwrite($sock, "USER $nick $nick $nick :$nick\r\n"); fwrite($socket, "NICK $nick\r\n"); }
function write_d ($data) { fwrite($sock, $data); }
function join_c ($chan) { write_d("JOIN $chan\r\n"); }
function get_in ($in) { for ($i = 3; $i <= count($in); $i++) { $out .= " $in[$i]"; } return trim("$out\r\n"); }
function change_n ($nick) { write_d("NICK $nick\r\n"); } ?>
I want to know why I can't use a variable as the second parameter in fwrite. Any help is greatly appreciated
Each new function has it's own scope for the variables. You've defined $sock in one function but it's not defined in the other functions. You need to do one of 3 things:
global $sock;
at the beginning of each of your functions3 would be the "best" solution, 1 would be how to accomplish this in a functional context, and 2 is probably the easiest but using globals in this way is the last resort.