外部形式行动。在PHP中发布验证。没有Javascript

时间:2014-11-28 09:38:00

标签: php html forms post

我有这样的表格:

    <form name="form2" method="post" action="http://1.1.101.1/reg.php">
        <input id="field12" type="text" value="{$username}" name="username" maxlength="32" placeholder="Username" required="required" />
        <input id="field22" type="text" value="{$password}" name="password" maxlength="32" placeholder="Password" required="required" />
        <input name="checkbox" type="hidden" id="checkbox" value="checkbox" />
        <input type="hidden" name="url" value=""/><br/>
        <input type="submit" value="Connect to WiFi" name="button1" /><br/> 
    </form>

该操作是外部网址。

如果在提交按钮提交(name = button1)之前我如何检查我的php,然后再转到该网址。

现在我有了这个,但它没有工作因为它直接从表单直接转到动作网址。

if ($_SERVER['REQUEST_METHOD'] == "post") {
    var_dump($_POST);
    exit; 
}

3 个答案:

答案 0 :(得分:0)

你不能。

不使用客户端代码验证它的唯一方法是将表单提交到您自己的服务器端代码。

然后,您无法在保持POST的同时可靠地重定向请求。

答案 1 :(得分:0)

我基本上有两种选择。

如果用户没有必要查看外部脚本的输出,您可以从后端自行发布。即将表单的操作更改为您自己的脚本,并执行以下操作:

  • 验证字段
  • 如果验证正常,请通过CURL(或类似)
  • 将数据发布到外部URL
  • 如果POST到外部网址没问题,请重定向到用户应该最终到达的位置

如果用户必须以此外部网址结束,则可以分两步完成。首先将表单操作设置为您自己的服务器端验证。如果它通过,请为用户提供一个确认页面,其中包含一个包含相同数据的表单,然后将其发布到外部URL。这些字段可能应隐藏/只读在此页面上,以防止在最终提交之前更改它们。

这最后一种方法肯定是可能的,因为它很容易首先使用有效值,然后在进行最终提交之前更改HTML中的数据。因此,如果安全性在这里很重要,那么你就会遇到第一个选择。

答案 2 :(得分:-2)

试试这个

 <?php
 if(isset($_POST['button1'])){
 //action
 header('Refresh:3; url=http://1.1.101.1/reg.php');
 }
 ?>