2014-01-22 134 views
-1

首先讓我說我根本不是一個PHP程序員,但我正在幫助(或嘗試)一個客戶端了解如何快速設置遠程登錄頁面。提交後自動提交一個PHP表格

本質上我有一個2表單字段 - 用戶&密碼 - 它被提交給自己。字符串是使用ID,API密鑰,UTC時間戳,表單用戶名和表單密碼構建的。這將轉換爲UTF-8,然後轉換爲base64。

然後,該字符串需要作爲名爲strAuth的表單變量發佈到遠程頁面。

我有登錄表單工作和正確構建的字符串,但不知道最好的方法讓它自己發佈。

<?php 
    $bpid = '193493'; 
    $rkey = '3CE1334241ADA18CD'; 
    $ts = gmdate("Y-m-d H:i:s", $timestamp = time()); 
    $user = $_POST["user"]; 
    $pass = $_POST["pass"]; 
    $str = $bpid . ',' . $rkey . ',' . $ts . ',' . $user . ',' . $pass; 
    $ustr = mb_convert_encoding($str,'UTF-8'); 
    $bstr = base64_encode($ustr); 

上面生成一個字符串,如果我發佈手動檢出並正常工作。使用PHP自動發佈此信息的最佳方式是什麼?我嘗試過,但它會生成第二個提交按鈕,不會自動發送數據。

if (!empty($_POST)) { 
    echo " 
<form action=\"remoteurltologin\" method=\"post\" id=\"loginForm\"> 
<input name=\"strAuth\" type=\"hidden\" value=\"$bstr\"> 
<input type=\"submit\"> 
</form> 
<script type=\"text/javascript\"> 
    $('#loginForm').submit(); 
    </script>"; 
}; 

感謝和對於noob問題抱歉!

+1

你應該看看cURL。提交後提交 – jeroen

+0

提交後,你的意思是殺死某人死亡? –

+0

那麼,你想爲遠程服務器發佈POST,然後重新發布第二個url? –

回答

2

你應該嘗試用curl,而不是印刷形式和前端提交它:

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => 'remoteurltologin', 
    CURLOPT_POST => 1, 
    CURLOPT_POSTFIELDS => array(
     'strAuth' => $bstr 
    ) 
)); 

$resp = curl_exec($curl); 
curl_close($curl); 
+0

謝謝 - 我認爲這很接近,但它並沒有像'formur action ='remoteurltologinto'那樣重定向到'remoteurltologin'。它希望得到迴應,顯然遠程登錄頁面不會迴應 - 它要麼登錄併發送到正確的頁面,要麼重定向到它自己的登錄幫助頁面。 – Steve

+0

在'$ resp'中,您有來自您發佈的信息頁的回覆。 – hsz

0

也許你沒有叫jQuery腳本,所以使用本地JavaScript

if (!empty($_POST)) { 
    echo " 
<form action=\"remoteurltologin\" method=\"post\" id=\"loginForm\"> 
<input name=\"strAuth\" type=\"hidden\" value=\"$bstr\"> 
<input type=\"submit\"> 
</form> 
<script type=\"text/javascript\"> 
    document.getElementById('loginForm').submit(); 
    </script>"; 
}; 
0

如果你不想要一個提交按鈕,刪除:

<input type=\"submit\"> 

的按鈕,只需要讓人們點擊提交。在你的情況下,它不需要在那裏。

至於表格,請輸入表格autofocus然後用JS onfocus提交。 PS:我將提交包裝在一個函數中。

if (!empty($_POST)) { 
     echo " 
    <form action=\"remoteurltologin\" method=\"post\" id=\"loginForm\"> 
    <input name=\"strAuth\" type=\"hidden\" value=\"$bstr\" autofocus onfocus='submitAgain()'> 
    <input type=\"submit\"> 
    </form> 
    <script type=\"text/javascript\"> 
    function submitAgain() { 
     document.getElementById('loginForm').submit(); 
     } 
     </script>"; 
    };