首先让我说我根本不是一个PHP程序员,但我正在帮助(或尝试)一个客户端,应该快速设置一个远程登录页面。
基本上我有一个2表单字段 - user&密码 - 提交给自己。使用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问题!
答案 0 :(得分: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);
答案 1 :(得分:1)
我想你想使用cURL php库:http://php.net/manual/en/book.curl.php
希望这有帮助!
答案 2 :(得分: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>";
};
答案 3 :(得分: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>";
};