【问题标题】:Posting a textarea form with cURL使用 cURL 发布 textarea 表单
【发布时间】:2010-03-17 02:31:31
【问题描述】:

我将如何发布 textarea 表单?

<form method="post" action="/user/test/shoutbox/add" id="shoutPost" class="clearit">
<input name="formtoken" type="hidden" value="852f8fde54190fa5f9aa47172d492f829c1b"/>
<input type="hidden" name="backto" value="/user/test/shoutbox" />
<textarea id="shoutmsg" name="message"></textarea>
<input type="submit" name="submit" class="confirmButton" value="Post" id="sbPost"  />

这应该可以正常工作吗?

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POST, 1);
$postfields .= "&message=".$msg;
$postfields .= "&submit=sbPost";
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
$page = curl_exec($ch);

但由于某种原因它没有发布......

【问题讨论】:

  • 除了 textarea 以外的所有其他字段都发布了吗?
  • 没有。令牌在页面加载时自行发布。
  • 您是在尝试将数据发布到具有该表单的页面还是从已编译的表单中获取结果?

标签: php forms curl textarea submit


【解决方案1】:

忘记了 curl_exec?

curl_exec($ch);

【讨论】:

  • 不,这些我都有。我刚刚发布了postfields,看看我是否做错了。
【解决方案2】:

$msg 是从哪里来的?您的文本区域有 name="message",尝试将 $msg 更改为 $_POST['message']

【讨论】:

  • $msg 只是“测试”。它是顶部的变量。
【解决方案3】:
    curl_setopt($ch, CURLOPT_REFERER,"URLHERE");
    curl_setopt($ch, CURLOPT_URL,"URLHERE");
    curl_setopt($ch, CURLOPT_POST, 0);
    $page = curl_exec($ch);

    $formtoken = explode('name="formtoken" type="hidden" value="',$page);
    $formtoken = explode('"/> ',$formtoken[1]);
    $formtoken = $formtoken[0];

    $backto = explode('type="hidden" name="backto" value="',$page);
    $backto = explode('" />',$backto[1]);
    $backto = $backto[0];

    curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookiejar-$randnum");
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_URL,"URLHERE");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_POST, 1);
    $postfields = "formtoken=".$formtoken;
    $postfields .= "&backto=".$backto;
    $postfields .= "&message=".$msg;
    $postfields .= "&submit=Post";
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
    $page = curl_exec($ch);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2012-10-07
    • 2012-08-24
    • 2014-10-21
    • 2022-11-11
    相关资源
    最近更新 更多