2014-01-07 20 views
-1

this question之後,我意識到只有在使用表單時才能使用$ POST。PHP網址 - 這是一個可行的黑客?

當沒有表單仍然使用jQuery或cURL不會解決我需要在URL中發佈一個長字符串的問題。

問題

我需要將數據從一個桌面應用程序發送到我的數據庫,所以想出最好的辦法是使用以下URL格式並追加數據到最後,所以就變成:

www.mysite.com/myscript.php?testdata=somedata,moredata,123,xyz,etc,etc,thisgetslong 

與我以前的腳本,我使用$ GET來讀取[testdata =]字符串和我的虛擬主機告訴我$ GET只能讀取512個字符,所以這是問題。

哈克

使用下面的腳本,我現在可以寫幾千字的;我的問題,這是可行的還是有更好的辦法?

<? 
include("connect.php"); //Connect to the database 

//hack - read the url directly and search the string for the data i need 

$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
$findme = '='; 
$pos = strpos($actual_link, $findme) + 1; //find start of data to write 
$data = substr($actual_link, $pos); //grab data from url 

$result = mysql_query("INSERT INTO test (testdata) VALUES ('$data')"); 

// Check result 
if ($result) {echo $data;} 
else echo "Error ".$mysqli->error; 

mysql_close(); ?> 

編輯: 用PHP代碼替換圖像。

我已經學會了如何不是要問一個問題 - 不要使用黑客這個詞,因爲它激怒了人們的羽毛,並且不使用圖像代碼。

我只是不知道如何將一個長字符串傳遞給一個無形的PHP頁面,雖然我很欣賞人們的回答,但關於cURL的答案對我來說沒有意義。從this page,我不清楚你是如何從.NET應用傳遞字符串的。我顯然需要做大量的研究併爲我的asinine問題道歉。

+1

不相關,我知道這是測試代碼,但請注意,您很容易受到SQL注入攻擊。 – Vache

+0

爲什麼不直接發送POST請求並將其放入主體? – SLaks

+0

@SLaks - 我不知道你的意思,抱歉我的困惑。我在哪裏把它放在身體裏?我需要從一個獨立的應用程序發送一大塊數據,我只使用一個url接口,所以我如何創建一個body?你的意思是我應該創建一個PHP表單頁面,然後腳本可以使用$ POST? – Data46

回答

1

該網址有一個實際的fixed limit of ~2000 chars,所以你應該而不是將數千個字符傳遞到URL中。 URL的查詢部分僅用於相對較短的一組參數。

相反,你可以建立一個通過cURL/jQuery/etc發送POST請求的請求體。瀏覽器將如何提交表單數據,您應該也可以這樣做。

+0

https://stackoverflow.com/a/3080222/1890644 - 從這段代碼我如何將$ myvars從url傳遞到cURL?對不起,如果這聽起來很明顯,但我不明白如何傳遞數據;我錯過了什麼? – Data46

0

在您的方案中,您需要檢查兩個重要元素。

首先,執行http操作的客戶端是什麼?如果客戶端將成爲瀏覽器或應用程序,我無法從您的文本中看出來。客戶端是您的解決方案中將要調用GET或POST操作的任何東西。

這很重要。當您在線閱讀關於查詢字符串長度限制的信息時,通常在使用帶有長URL的瀏覽器的人的上下文中。跨瀏覽器的最大URL長度沒有標準。但是,如果你以實際的方式思考它,你永遠不會想要通過發佈或通過電子郵件發送一個非常大的URL;必須做到剪切和粘貼到客戶端瀏覽器會讓人很快感到沮喪。另一方面,如果客戶端是應用程序,那麼它只是兩臺機器交換數據,並且實際上沒有涉及人爲因素。

要檢查的第二點是網絡服務器。 Web服務器實現可能會限制URL長度,或者可能不會。再次,沒有標準。在任何情況下,如果您使用GET操作,您的約束將是您的客戶端和服務器都允許的最小值(即,如果兩者都沒有限制,則沒有限制;如果其中一個的最大值爲200字節,你的限制是200字節;如果一個人有200字節的限制,另一個人有400字節的限制,你的限制是200字節)

回頭看看,你提到「桌面應用程序」,但沒有告訴我們你正在開發什麼語言,以及什麼操作系統。這很重要 - 那是你的客戶。

祝你好運。

相關問題