2014-06-23 51 views
0

我遇到了一個問題,我正在構建一個應用程序,允許用戶更改通常只能在管理面板中更改的數據。我的應用程序過濾掉所有易受攻擊的數但是,當我更改應用程序中的數據時,還必須在原始管理面板中進行更新。爲此,我必須將一個xml文件上傳到管理面板。目前這是手動操作,但它必須是自動的。但是,我必須通過管理面板上傳它,否則數據將不會在此面板中更新。用file_put_contents直接更新它並不可悲。php在不同的網站上運行操作

這段代碼位於mydomain.com/system_backup.php。這是在管理面板中,它需要您使用用戶名登錄並通過才能使用它。

//The html on this page. system_backup.php 
<form action="system_backup.php" method="post" enctype="multipart/form-data"> 
    //Downloads the current xml-file from the server 
    <input name="Download" type="submit" class="formbtn" id="download" value="Download configuration"> 
    //select the xml file from your local system. 
    <input name="conffile" type="file" class="formfld" id="conffile" size="40"> 
    //restore/update the xml-file. 
    <input name="Restore" type="submit" class="formbtn" id="restore" value="Restore configuration"> 
</form> 

這看起來像這樣。
buttons

當您在瀏覽器中打開頁面時,以javascript/jquery提供以下登錄提示。
loginprompt

那麼有沒有辦法用php創建一個自動化腳本,用這個管理面板登錄並更新這個文件?如果用php不可能,那麼它是否可以使用不同的語言?我將不得不每天晚上用cron-job來運行它。

+0

據我所知,這是不可能在PHP中。我認爲可能的語言(因爲您可以使用'webcontrol')是C#... – Mathlight

+3

登錄提示不會使用JavaScript顯示,但它是HTTP基本訪問身份驗證。在請求資源時,您需要發送適當的標題。你可以使用AJAX或者服務器端,使用cURL。 –

+0

@SergiuParaschiv是的我可以使用'file_get_contents(http:// user:[email protected]/system_backup.php);' – kpp

回答

0

這是可能的,很容易。您只需確定Web服務器用於驗證用戶身份並在標頭(或cookie)中發送適當數據的方法即可。

例如,如果你的服務器是使用Basic access authentication(很可能如此),你有一個頭添加到您的要求,看起來像這樣:

Authorization: Basic xxxxxxxxxxxxx 

其中XXXXXXXXXXXXX是一個字符串的Base64編碼: username:password

+0

'file_get_contents(http:// user:[email protected]/system_backup.php);'這個可以,但是我得到了localy的東西,我需要知道如何讓php激活這兩個按鈕。 – kpp

+0

你不能。 PHP在服務器上運行,與瀏覽器中的用戶提示無關。 –

+0

你不需要「激活」任何按鈕。只需通過POST發送適當的數據到網址。 – Liberat0r