user2289809
user2289809

Reputation: 53

php + curl simple post

I'm trying to make automatic register script with curl.

I have html form:

<form method="post" action="/register/submit" autocomplete="off" id="js-register-form">
<input type="hidden" name="__csrf_token" value="28030357" />
<input name="nick" type="text" size="15" maxlength="15" value="" class="form-control" />
<input name="pass" type="password" size="15" maxlength="15" class="form-control" />
<input name="sex" type="radio" value="V" /> vyras </label>
<input name="sex" type="radio" value="M" /> moteris </label>

<select name="age_day" class="form-control">
<option>Diena</option>
<option>1</option><option>2</option><option>3</option>                    
</select>

<select name="age_month" class="form-control">
<option>Mėnuo</option>
<option value="1">Sausis</option><option value="12">Gruodis</option></select>

<select name="age_year" class="form-control">
<option>Metai</option>
<option>2001</option><option>2000</option><option>1999</option>                   </select>

<input name="email" type="text" value="" size="15" maxlength="50" class="form-control" />

<select name="city_id" class="form-control"><option value="">Miestas</option><option value="1340915">Akmenė</option><option value="1341068">Alytus</option><option value="1341242">Anykščiai</option><option value="1341276">
</select>

<button type="submit" title="Registruotis" class="btn btn-signup js-register-form-submit">Registruotis</button>
</form>

and this is my curl script, but it doesn't work. What s wrong with it?:

<?php 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://login.com....html");
curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS,
            "__csrf_token=28030357&nick=pixelis98722&pass=qwerty&sex=V&age_day=12&age_month=04&age_year=2000&[email protected]&city_id=1343628"); 

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);

curl_close ($ch);

// further processing ....
if ($server_output == "OK") { echo"gerai"; } else { echo "bad"; }
?>

but doesn't work. Whats wrong with it?

Upvotes: 0

Views: 1257

Answers (1)

Smokey
Smokey

Reputation: 1897

use this

function httpPost($url,$params)
{
    $postData = '';
    //create name value pairs seperated by &
    foreach($params as $k => $v)
    {
        $postData .= $k . '='.$v.'&';
    }
    rtrim($postData, '&');

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, count($postData));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

    $output=curl_exec($ch);

    curl_close($ch);
    return $output;

}

This is the final answer. Try anyone. Both works.

<?php
$a=$_POST['__csrf_token'];
$b=$_POST['nick'];
$c=$_POST['pass'];
$d=$_POST['sex'];
$e=$_POST['age_day'];
$f=$_POST['age_month'];
$g=$_POST['age_year'];
$h=$_POST['email'];
$i=$_POST['city_id'];



$url = 'http://login.com....html';
$postData = array();
$postData['a'] = $a;
$postData['b'] = $b;
$postData['c'] = $c;
$postData['d'] = $d;
$postData['e'] = $e;
$postData['f'] = $f;
$postData['g'] = $g;
$postData['h'] = $h;
$postData['i'] = $i;

$parameters=json_encode($postData);

$headers = array(    "Accept-Encoding: gzip",
    "Content-Type: application/json");


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
$result = curl_exec($ch);

//var_dump($result);
curl_close($ch);
?>

Upvotes: 1

Related Questions