Poprawne wyslanie formularza cURL Post

0

Jak poprawnie powinienem poprawnie zrobic wyslanie metoda POST dla:

<BR>  <FORM name="upload" method="post" ENCTYPE="multipart/form-data">
  <TABLE class="lista" align="center">
  <TR><TD class="lista">Plik :</TD><TD class="lista" align="left">
  <INPUT TYPE="file" NAME="plik">  </TD>
  </TR>
  <TR><TD class="lista" >Category : </TD><TD class="lista" align="left"><select name='category'><option value='0'>----</option><optgroup label='Filmy'><option  value='27'></optgroup></select></TD></TR>
    
  <TR>
  <TD class="lista">Nazwa pliku:</TD>
  <TD class="lista"  align="left"><INPUT TYPE="text" name="filename" size="50" maxlength="200" /></TD>
  </TR>
  <TR>
  <TD class="lista">Obrazek:</TD>
  <TD class="lista" align="left">
  <input type="radio" name="imgg" value="1" id="imgg1" checked/><label for="imgg1">Obrazek z linku: <INPUT TYPE="text" name="imglink" size="50" maxlength="200" value="" /></label><br />
  <input type="radio" name="imgg" value="2" id="imgg2"/><label for="imgg2">Obrazek z dysku: <INPUT TYPE="file" NAME="imgf"></label>
  </TD>
  </TR>
  
  <TR>
  <TD class="lista" valign="middle">Opis: </TD>
  <TD class="lista"  align="left">
<script language="javascript"  type="text/javascript">

// Remember the current position.
function storeCaret(text)
{
    // Only bother if it will be useful.
    if (typeof(text.createTextRange) != "undefined")
        text.caretPos = document.selection.createRange().duplicate();
}

function SmileIT(smile,textarea){
    // Attempt to create a text range (IE).
    if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
    {
        var caretPos = textarea.caretPos;

        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? smile + ' ' : smile
        caretPos.select();
    }
    // Mozilla text range replace.
    else if (typeof(textarea.selectionStart) != "undefined")
    {
        var begin = textarea.value.substr(0, textarea.selectionStart);
        var end = textarea.value.substr(textarea.selectionEnd);
        var scrollPos = textarea.scrollTop;

        textarea.value = begin + smile + end;

        if (textarea.setSelectionRange)
        {
            textarea.focus();
            textarea.setSelectionRange(begin.length + smile.length, begin.length + smile.length);
        }
        textarea.scrollTop = scrollPos;
    }
    // Just put it on the end.
    else
    {
        textarea.value += smile;
        textarea.focus(textarea.value.length - 1);
    }
}

function PopMoreSmiles(form,name) {
         link='moresmiles.php?form='+form+'&text='+name
         newWin=window.open(link,'moresmile','height=500,width=300,resizable=yes,scrollbars=yes');
         if (window.focus) {newWin.focus()}
}

function BBTag(opentag, closetag, textarea)
{
    // Can a text range be created?
    if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
    {
        var caretPos = textarea.caretPos, temp_length = caretPos.text.length;

        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? opentag + caretPos.text + closetag + ' ' : opentag + caretPos.text + closetag;

        if (temp_length == 0)
        {
            caretPos.moveStart("character", -closetag.length);
            caretPos.moveEnd("character", -closetag.length);
            caretPos.select();
        }
        else
            textarea.focus(caretPos);
    }
    // Mozilla text range wrap.
    else if (typeof(textarea.selectionStart) != "undefined")
    {
        var begin = textarea.value.substr(0, textarea.selectionStart);
        var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
        var end = textarea.value.substr(textarea.selectionEnd);
        var newCursorPos = textarea.selectionStart;
        var scrollPos = textarea.scrollTop;

        textarea.value = begin + opentag + selection + closetag + end;

        if (textarea.setSelectionRange)
        {
            if (selection.length == 0)
                textarea.setSelectionRange(newCursorPos + opentag.length, newCursorPos + opentag.length);
            else
                textarea.setSelectionRange(newCursorPos, newCursorPos + opentag.length + selection.length + closetag.length);
            textarea.focus();
        }
        textarea.scrollTop = scrollPos;
    }
    // Just put them on the end, then.
    else
    {
        textarea.value += opentag + closetag;
        textarea.focus(textarea.value.length - 1);
    }
}
</script>

  <table width="100%" cellpadding="0" cellspacing="0">
    <tr>
      <td colspan=2>
      <table cellpadding="0" cellspacing="1">
      <tr>
      <td><input style="font-weight: bold;" type="button" name="bold" value="B " onclick="javascript: BBTag('[b]','[/b]',document.forms.upload.info)" /></td>
      <td><input style="font-style: italic;" type="button" name="italic" value="i " onclick="javascript: BBTag('[i]','[/i]',document.forms.upload.info)" /></td>
      <td><input style="text-decoration: underline;" type="button" name="underline" value="U " onclick="javascript: BBTag('[u]','[/u]',document.forms.upload.info)" /></td>
      <td><input type="button" name="li" value="List " onclick="javascript: BBTag('[*]','',document.forms.upload.info)" /></td>
      <td><input type="button" name="code" value="Code" onclick="javascript: BBTag('[code]','[/code]',document.forms.upload.info)" /></td>
      <td><input type="button" name="quote" value="Quote" onclick="javascript: BBTag('[quote]','[/quote]',document.forms.upload.info)" /></td>
      <td><input type="button" name="url" value="Url" onclick="javascript: BBTag('[url]','[/url]',document.forms.upload.info)" /></td>
      <td><input type="button" name="img" value="Img" onclick="javascript: BBTag('[img]','[/img]',document.forms.upload.info)" /></td>
      <td>
            <select onchange="BBTag('[color=' + this.options[this.selectedIndex].value.toLowerCase() + ']','[/color]', document.forms.upload.info); this.selectedIndex = 0;" size="1" style="background-color:#DEDEDE;" name="fontchange">
            <option value="" selected="selected">Change Color</option>
            <option value="Black" style="color:black">Black</option>
            <option value="Red" style="color:red">Red</option>
            <option value="Yellow" style="color:Yellow">Yellow</option>
            <option value="Pink" style="color:Pink">Pink</option>
            <option value="Green" style="color:Green">Green</option>
            <option value="Orange" style="color:Orange">Orange</option>
            <option value="Purple" style="color:Purple">Purple</option>
            <option value="Blue" style="color:Blue">Blue</option>
            <option value="Beige" style="color:Beige">Beige</option>
            <option value="Brown" style="color:Brown">Brown</option>
            <option value="Teal" style="color:Teal">Teal</option>
            <option value="Navy" style="color:Navy">Navy</option>
            <option value="Maroon" style="color:Maroon">Maroon</option>
            <option value="LimeGreen" style="color:LimeGreen">Lime Green</option>
            </select>
      </td>
      <td>
            <select onchange="BBTag('[size=' + this.options[this.selectedIndex].value.toLowerCase() + ']','[/size]', document.forms.upload.info); this.selectedIndex = 0;" size="1" style="background-color:#DEDEDE;" name="fontchange">
            <option value="" selected="selected">Font Size</option>
            <option value="1">xx-small</option>
            <option value="2">x-small</option>
            <option value="3">small</option>
            <option value="4">medium</option>
            <option value="5">large</option>
            <option value="6">x-large</option>
            <option value="7">xx-large</option>
            </select>
      </td>
      </tr>
      </table>
      </td>
    </tr>
    <tr>
      <td>
      <textarea name="info" rows="10" cols="40" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);"></textarea>
      </td>
      <td>
      <table width="100%" cellpadding="1" cellspacing="1">
      <tr>
<td><a href="javascript: SmileIT(':)',document.forms.upload.info);"><img border=0 src=images/smilies/smile1.gif></a></td>
<td><a href="javascript: SmileIT(';)',document.forms.upload.info);"><img border=0 src=images/smilies/wink.gif></a></td>
<td><a href="javascript: SmileIT(':D',document.forms.upload.info);"><img border=0 src=images/smilies/grin.gif></a></td>
<td><a href="javascript: SmileIT(':P',document.forms.upload.info);"><img border=0 src=images/smilies/tongue.gif></a></td></tr><tr>
<td><a href="javascript: SmileIT(':(',document.forms.upload.info);"><img border=0 src=images/smilies/sad.gif></a></td>
<td><a href="javascript: SmileIT(':\'(',document.forms.upload.info);"><img border=0 src=images/smilies/cry.gif></a></td>
<td><a href="javascript: SmileIT(':|',document.forms.upload.info);"><img border=0 src=images/smilies/noexpression.gif></a></td>
<td><a href="javascript: SmileIT(':-/',document.forms.upload.info);"><img border=0 src=images/smilies/confused.gif></a></td></tr><tr>
<td><a href="javascript: SmileIT(':-O',document.forms.upload.info);"><img border=0 src=images/smilies/ohmy.gif></a></td>
<td><a href="javascript: SmileIT('8)',document.forms.upload.info);"><img border=0 src=images/smilies/cool1.gif></a></td>
<td><a href="javascript: SmileIT('O:-',document.forms.upload.info);"><img border=0 src=images/smilies/angel.gif></a></td>
<td><a href="javascript: SmileIT('-_-',document.forms.upload.info);"><img border=0 src=images/smilies/sleep.gif></a></td></tr><tr>
<td><a href="javascript: SmileIT(':grrr:',document.forms.upload.info);"><img border=0 src=images/smilies/angry.gif></a></td>
<td><a href="javascript: SmileIT(':smile:',document.forms.upload.info);"><img border=0 src=images/smilies/smile2.gif></a></td>
<td><a href="javascript: SmileIT(':lol:',document.forms.upload.info);"><img border=0 src=images/smilies/laugh.gif></a></td>
<td><a href="javascript: SmileIT(':cool:',document.forms.upload.info);"><img border=0 src=images/smilies/cool2.gif></a></td></tr><tr>
<td><a href="javascript: SmileIT(':fun:',document.forms.upload.info);"><img border=0 src=images/smilies/fun.gif></a></td>
<td><a href="javascript: SmileIT(':thumbsup:',document.forms.upload.info);"><img border=0 src=images/smilies/thumbsup.gif></a></td>
<td><a href="javascript: SmileIT(':thumbsdown:',document.forms.upload.info);"><img border=0 src=images/smilies/thumbsdown.gif></a></td>
<td><a href="javascript: SmileIT(':blush:',document.forms.upload.info);"><img border=0 src=images/smilies/blush.gif></a></td></tr>      </table>
      <center><a href="javascript: PopMoreSmiles('upload','info')">More Emoticons</a></center>
      </td>
    </tr>
  </table>
</TD>
  </TR>
  <TR><TD colspan="2"><INPUT TYPE="hidden" name="user_id" size="50" value="" /> </TD /></TR><TR><TD class="lista" align="center" colspan="2"><INPUT type="checkbox" name="autoset" value="enabled" disabled checked />Allow</TD></TR>  <TR>
  <TD align="right"><INPUT type="submit" value="Send" /></TD>
  <TD align="left"><INPUT type="reset" value="Reset" /></TD>
  </TR>
  </TABLE>
  </FORM>
  </td></tr></table>		</td>
 

Probowalemto zrobic tak:

string dataSTR = "plik=/Pulpit/plik.txt&category=27&filename=asdas&imgg=1&imglink=link&info=aaaa&user_id=123435";
        const char * data = dataSTR.c_str();
    CURL * curl;
curl = curl_easy_init();
        curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/upload.php);
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0");
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1);
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt");
        curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");
        curl_easy_perform( curl );

, ale nie dziala nie wiem dlaczego. Prosze o pomoc
curl_easy_cleanup( curl );

1

W formularzu masz ustawiony sposób transferu na multipart/form-data, który jest wykorzystywany przy wysyłaniu plików, a u Ciebie jest "zwykły" POST.

0

Najprościej będzie jeśli podejrzysz sobie jakimś programem nagłówki HTTP. Wtedy będziesz wiedział, czy nagłówki twojego programu są zgodne z tym, co wysyła formularz.

--- dodane ---

curl_formadd(&formpost,
                 &lastptr,
                 CURLFORM_COPYNAME, "123fileee.txt",
                 CURLFORM_FILE, "/home/123fileee.txt",
                 CURLFORM_END);
    curl_formadd(&formpost,
                 &lastptr,
                 CURLFORM_COPYNAME, "plik",
                 CURLFORM_COPYCONTENTS, "123fileee.txt",
                 CURLFORM_END);

Nie wystarczy tak:

curl_formadd(&formpost,
			&lastptr,
			CURLFORM_COPYNAME, "plik",
			CURLFORM_FILE, "/home/123fileee.txt",
			CURLFORM_END);

?

1 użytkowników online, w tym zalogowanych: 0, gości: 1