Tek bir işlevli soketi açmak ve aynı sayfaya başka bir işlevle bu sokete komut göndermek mümkün mü? Bunu çalıştığınızdaPHP fsockopen işlevler arasında paylaşın sayfa
alıyorum: Warning: fputs(): supplied argument is not a valid stream resource
Bu benim nasıl olacak bu iş almak için
connect();
cmd("cd /home/tom\n ls\n");
close();
function connect() {
global $passwd;
if (!$fp = @fsockopen("127.0.0.1", 23, $errno, $errstr, 5)) {
exit('Login Failed');
}
stream_set_timeout($fp, 1);
fputs($fp, "tom\n"); sleep(1);
fputs($fp, "$passwd\n"); sleep(1);
$res = fread($fp,1024);
var_dump($res);
}
function cmd ($cmd) {
global $fp;
fputs($fp, $cmd); sleep(1);
$res = fread($fp,1024);
var_dump($res);
}
function close() {
global $fp;
fclose($fp);
}
herhangi bir fikir kullanıyorum kodudur? Teşekkürler
burada anki neden içeride 'sen _not_' beyan küresel olarak $ fp' do ') (bağlamak olduğunu ve ne zaman kaybetti: Ben muhtemelen şöyle kendime nesne yönelimli yapardı fonksiyonu sen yap. – arkascha
Ancak, 'global' deyimini kullanmak gerçekten kötü bir stil olsa da, kodunuzu yeniden yazmanız için yeniden yazmanız gerekir. Tipik olarak bir dosya tanıtıcısını bir özellik olarak tutan bir sınıf uygular. Bu şekilde, sınıfın tüm yöntemleri, küresel olmasa da, ona erişebilir, çünkü tüm yöntemler sınıftan çıkarılmış olan aynı nesne üzerinde çalışır. – arkascha
Kodunuza göre, cmd() 'den erişilebilir olmak için connect() yönteminin başlangıcında global olarak $ fp bildirmelisiniz. –