【问题标题】:Posting form data to another page and then Posting it again将表单数据发布到另一个页面,然后再次发布
【发布时间】:2011-05-11 13:02:27
【问题描述】:

我目前正在使用此代码将表单的数据发布到https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx

<script type="text/javascript">

        $(document).ready(function(){
            $("#textnextofkin").validate({
                debug: false,
                rules: {
                    name: "required",
                    email: {
                        required: true,
                        email: true
                    }
                },
                messages: {
                    name: "Please let us know who you are.",
                    email: "",
                },
                submitHandler: function(form) {
                    // do other stuff for a valid form
                    $.post('http://www.example.co.uk/erc/process2.php', $("#textnextofkin").serialize(), function(data) {
                        $('#results').html(data);
                    });
                }
            });
        });

</script>

    <form name="textnextofkin" id="textnextofkin" method="POST" action="">
        <div class="hiddenfields">
            <p>Username:<br>
                <input name="EsendexUsername" type="text" value="AAAAA"></p>
            <p>Password:<br>
                <input name="EsendexPassword" type="password" value="AAAAA"></p>
            <p>Account:<br>
                <input name="EsendexAccount" type="text" value="AAAAA"></p>
            <p>Send Name<br>
                <input name="EsendexOriginator" type="text" value="example"></p>
            <p>Recipient:<br>
                <input name="EsendexRecipient" type="text" value="01234123456"></p>
            <p>Message:<br>
                <input name="EsendexBody" rows="3" cols="20" value="Hello test message"></p></div>
                <input type="submit" class="email-buttons" name="submit" value="Text next of kin">
    </form>

process2.php:

<?php 
    // Initialise CURL
    $curl_handle = curl_init();
    $data ="EsendexUsername=AAAAA&EsendexPassword=AAAAA&EsendexAccount=AAAAA&EsendexRecipient=01234123456&EsendexBody=test"; 
    $url = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx";
    curl_setopt ($curl_handle, CURLOPT_URL,$url);
    curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $data);

    $result = curl_exec ($curl_handle);
    curl_close ($curl_handle); 
?>

我需要更改它,以便可以将表单数据发布到 process.php,然后使用 process.php 将信息发送到 Esendex 网站。我需要这样做,因为 process.php 包含我需要包含在表单中的数据(例如 $_SESSION['first_name'] )。我想我需要将上面的 Esendex URL 更改为 process.php,但是我不知道在 process.php 页面中输入什么来发送它收到的信息。

有人可以帮我做这件事吗?

感谢您的帮助

【问题讨论】:

标签: php javascript html ajax forms


【解决方案1】:

您需要知道的最重要的是,您需要启用 curl,然后才能使用下面的代码。 Curl 通常已启用,但值得检查

<?php 
    // Initialise CURL
    $curl_handle = curl_init();
    $data ="EsendexUsername=value&EsendexUsername=value&EsendexAccount=value"; 
    $url = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx";
    curl_setopt ($curl_handle, CURLOPT_URL,$url);
    curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $data);

    $result = curl_exec ($curl_handle);
    curl_close ($curl_handle); 
?>

编辑

试试这个代码

<?php 
    // Initialise CURL
    $curl_handle = curl_init();
    $data ="EsendexUsername=value&EsendexUsername=value&EsendexAccount=value"; 
    $url = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx";
    curl_setopt ($curl_handle, CURLOPT_URL,$url);
    curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $data);
    curl_setopt( $curl_handle, CURLOPT_SSL_VERIFYPEER, false );  //so we can post to https  
    $result = curl_exec ($curl_handle);
    curl_close ($curl_handle); 
?>

上面的代码只是一个sn-p,所以我没有像你看到的那样传递所有的$data,所以你必须让它更完整。将代码放在 process.php 中,它应该将数据发送到 Esendex 网站。

编辑 我建议您阅读 CURL 以真正了解上面代码中发生的事情。 php.net 站点是一个很好的起点

【讨论】:

  • 您好 boug,感谢您的帮助。我已经用我现在拥有的内容更新了我的帖子,但由于某种原因,它似乎没有将数据发送到 Esendex 网站。我做错了吗?
  • 您是否收到任何错误消息?您能否更新您的问题,包括您的代码
  • 不,我没有收到任何错误消息。我已经用我正在使用的代码更新了我的问题
  • 好的,接下来您需要检查是否启用了 curl。你是在 localhost 上开发还是使用 WAMP、LAMP 等?
  • 我用phpinfo()做了一个测试页面,上面说Curl已经启用,版本是7.19.4。编辑:我也在互联网上做,而不是在本地
【解决方案2】:

您将所有使用 ajax 的内容发布到 process.php。在那里,您可以从 $_POST 数组中获取所有变量并附加您的字段。

然后您可以使用 curl 重新发布到 esendex 并捕获结果,然后返回。

【讨论】:

  • 您介意解释一下我将如何使用 CURL 吗?我已经查看了该文档,但并不真正理解它。另外,我不需要从 Esendex 网站得到回复,我只需要向它发送数据即可。谢谢
  • Curl 有一点学习曲线,但请尝试实现nl2.php.net/curl 中的一些示例。如果我为您复制粘贴解决方案,它将使您了解更多。请记住,要发布您需要 CURLOPT_POST 和 CURLOPT_POSTFIELDS。
猜你喜欢
  • 2012-06-24
  • 2014-10-16
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 2016-04-05
相关资源
最近更新 更多