cURL如何正确发布此表单?

问题描述:

我有问题,我正在尝试使用php和cURL发布数据,但这不起作用。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'> 

任何帮助将受到欢迎。

+0

你的PHP看起来像什么?此外,它可以帮助你简化你的例子....也许只向我们展示一个2或3行表单(也关闭你的表单)。 – 2010-08-29 04:54:07

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

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

+0

我正在尝试发布个人数据(如出生日期,家庭住址等)。不幸的是,我不知道PHP原始网站http://www.betterware.eu/pl/Register.php究竟是什么样子,但我的代码是http://pastebin.com/LPHVuxKB – ramadan 2010-08-29 12:06:29

有两个部分:

  • 获得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'); 
    } 

现在我们只需要使用卷曲发送POST请求。您需要从您要提交的表单中提取所有数据。

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

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

我会让你来填写休息。

为了发表它,你想用CURLOPT_POSTCURLOPT_POSTFIELDS如下送与卷曲, POST请求:

$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看到请求的结果。 *

+0

像我写了bellow我的代码是在这里,http://pastebin.com/LPHVuxKB 问题得到“sid”值我已删除,但现在我有发布的问题这个。这对我来说很难,因为在90阶段我必须“得到回应”,并获得价值的内容并发布。也许如果你在http://www.betterware.eu/pl/Register.php看到表单,你可以简单地说一些新的东西。但我会尝试捕获响应形式curl_exec($ ch);和preg_match获取uid值 – ramadan 2010-08-29 12:12:25