cURL如何正确发布此表单?

时间:2010-08-29 04:52:24

标签: php forms post curl

我有问题我正在尝试用php和cURL发布数据但是没有用。

如果表单在输入值中随机会话ID是安全的,并且有发布部分(阶段)

,应该如何正确编码
            <form name='p' method='post' action='/pl/Register.php'>
        <input type='hidden' name='sid' value='wa12891300kv1283056988qwpvkdaazzipdgouxd'>
        <input type='hidden' name='stage' value='20'> <!-- this value change when post some "values" -->
        <input type='hidden' name='addressline1' value=''>
        <input type='hidden' name='addressline2' value=''>
        <input type='hidden' name='addressline3' value=''>

        <input type='hidden' name='addressline4' value=''>
        <input type='hidden' name='postcode' value=''>
        <input type='hidden' name='bankname' value=''>
        <input type='hidden' name='sortcode' value=''>
        <input type='hidden' name='accountname' value=''>
        <input type='hidden' name='accountnumber' value=''>
        <input type='hidden' name='cardname' value=''>
        <input type='hidden' name='cardtype' value=''>
        <input type='hidden' name='cardnumber' value=''>

        <input type='hidden' name='startmonth' value=''>
        <input type='hidden' name='startyear' value=''>
        <input type='hidden' name='expirymonth' value=''>
        <input type='hidden' name='expiryyear' value=''>
        <input type='hidden' name='cardsecurity' value=''>
        <input type='hidden' name='cardissue' value=''>
        <input type='hidden' name='delname' value=''>
        <input type='hidden' name='deladdressline1' value=''>
        <input type='hidden' name='deladdressline2' value=''>

        <input type='hidden' name='deladdressline3' value=''>
        <input type='hidden' name='deladdressline4' value=''>
        <input type='hidden' name='delpostcode' value=''>
        <input type='hidden' name='delphone' value=''>
        <input type='hidden' name='sponsor' value=''>
        <input type='hidden' name='uid' value=''>
        <input type='hidden' name='password' value=''>
        <input type='hidden' name='password1' value=''>
        <input type='hidden' name='password2' value=''>

        <input type='hidden' name='terms1' value='0'>
        <input type='hidden' name='terms2' value='0'>

欢迎任何帮助。

2 个答案:

答案 0 :(得分:0)

您正在向我们展示HTML表单。你的PHP脚本是/pl/Register.php?您究竟要发布什么内容,从哪里发布到哪里?

PHP运行服务器端,而不是客户端。 PHP不能在浏览器中运行,因此您无法从浏览器发布带有PHP的表单。你只能用Javascript做到这一点......或者更好的是,在这种情况下只需要一个提交按钮。

答案 1 :(得分:0)

分为两部分:

  • 获取sid
  • 的值
  • 使用sid值和其他数据发送帖子请求。

首先我们得到sid。我不太了解您在请求表单时会发生什么,但如果它只是每次进入页面时分配的随机数,那么您可以在php脚本中获取页面并搜索其值。我们只需使用file_get_contents和正则表达式

即可
    $remote_site = file_get_contents("http://example.com/pl/Register.php");
    if (preg_match('/name=\'sid\' value=\'(.+?)\'/', $remote_site, $match)) {
            $sid = $match[1];
    } else {
            exit('failed to find sid');
    }

现在我们只需要使用cURL发送帖子请求。你需要提取所有 您要提交的表单中的数据。

我建议把它放在一个关联数组中:

    $post_data = array(
            'sid' => $sid,
            'stage' => '...',
    );

我会留给你填写其余部分。

为了发布它你想发送一个cURL的帖子请求, 使用CURLOPT_POSTCURLOPT_POSTFIELDS如下:

    $ch = curl_init("http://example.com/pl/Register.php");
    curl_setopt($ch, CURLOPT_POST, true); // tell cURL we are doing a post request
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // we pass in our data as an array here
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // this stops the output from being printed directly
    $response = curl_exec($ch);

然后,您可以阅读$response以查看请求的结果。 *