unable to send data using CURLOPT_POST to other php file

时间:2016-04-25 09:23:22

标签: php curl web-scraping

I am new to php , i am trying to get data from a website using curl (scraping),

UNABLE to get data from index.php to data.php, using CURLOPT_POST.. what am i doing wrong..?

index.php

<?php
$data = array("name"=>"john","age"=>31);
$string = http_build_query($data);

echo $string;

$ch = curl_init("http://localhost/scrap_practise/data.php");
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

?>

data.php

<?php 
echo 'finlly in'; // this never echos 
if(isset($_POST['name'],$_POST['age'])){
    $db = new Mysqli("localhost","root","","mydb");
    $name = $db->real_escape_string($_POST['name']);
        $age = (int) $_POST['age'];
        $query = "INSERT INTO data SET data='$name,$age'";
        $db->query($query);

}

?>

2 个答案:

答案 0 :(得分:1)

只需使用这些代码行更新index.php脚本。

<强>的index.php

<?php
$data = array("name"=>"john","age"=>31);
$string = http_build_query($data);

echo $string;

$ch = curl_init("http://localhost/scrap_practise/data.php");
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if( ! $result = curl_exec($ch))
{ 
    trigger_error(curl_error($ch)); 
} 
curl_close($ch);

// to see the return result uncomment the below line code.
//print_r($result);
?>

有关更多选项或功能参考,请参阅此链接 - http://php.net/manual/en/function.curl-exec.php

希望这有助于解决您的问题!!

答案 1 :(得分:1)

试试这段代码,我希望它对您有用......

<?php
$url = 'http://localhost/scrap_practise/data.php';

$data = array("name"=>"john","age"=>31);

$string = http_build_query($data);

echo $string;

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
print_r($result) ; 

curl_close($ch);

?>

在data.php文件中

<?php 
echo 'finlly in'; // this never echos 
if(isset($_POST['name'],$_POST['age']))
{
   echo "<pre>"; print_r($_POST);
}
?>

这将输出:

finlly in
Array
(
    [name] => john
    [age] => 31
)