2016-07-15 61 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 

去圖...

相關問題