Posting a textarea form with cURL

2019-07-26 08:01发布

问题:

How would I go about posting a textarea form?

<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"  />

This should work right?

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);

but it's not posting for some reason...

回答1:

Forgot the curl_exec?

curl_exec($ch);


回答2:

Where is $msg coming from? your text area has name="message", try changing $msg to $_POST['message']



回答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);