2016-07-15 58 views
0

我有这样的命令:NCAT命令对命令行,但不能在PHP脚本

echo -e 'GET/HTTP/1.0\n\n' | ncat www.website.com 80 

其中在命令行工作完全正常。这不,但是,工作在PHP脚本:

<?php 

$html = system("echo -e 'GET/HTTP/1.0\n\n' | ncat www.website.com 80"); 

print $html; 

?> 

,而不是返回正确的HTML,它返回一个“您的浏览器发送的请求,服务器无法理解”的错误。我该如何解决?

回答

1

你写了PHP,因此在字符串中的\n被PHP解析成实际的换行符:

$html = system("echo -e 'GET/HTTP/1.0\n\n' | ncat www.website.com 80"); 
             ^^^^^ 

和你结束干什么发送到system()启动外壳看上去像:

echo -e 'GET/HTTP/1.0 

'| ncat www.website.com 80 

尝试

$html = system("echo -e 'GET/HTTP/1.0\\n\\n' | ncat www.website.com 80"); 
             ^--^---note these 

代替。

0

它应该是这样的:

<?php 

$html = system("echo 'GET/HTTP/1.0\n\n' | ncat www.website.com 80"); 

print $html; 

?> 

我不得不从echo命令删除-e。我检查了Wireshark的数据包,什么是被发送是这样的:

-e GET/HTTP/1.0 

去图...

相关问题