无法发送使用CURLOPT_POST到其他PHP文件

问题描述:

我是新来的PHP,我试图让使用curl从网站的数据(刮)数据,无法发送使用CURLOPT_POST到其他PHP文件

无法从index.php来data.php获取数据,使用CURLOPT_POST ..我做错了什么..?

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

} 

?> 
+0

分配在卷曲变量'$ result = curl_exec($ ch);'和打印结果'print_r($ result);'来检查错误,但是你的代码工作正常我认为问题在于你的主机名是'localhost 'not'loclhost' –

+0

使用'curl_setopt($ ch,CURLOPT_URL,Your Url);' –

+0

@manjeet barnala- no,但它甚至没有回显data.php中的代码,data.php中的第一行是'echo' finlly in',它没有显示 – Bawa

只要你需要更新你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

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

+0

兄弟,这工作,我现在可以看到data.php里面的回声,但它没有任何意义给我。怎么样..?如何声明有所作为..加上我仍然无法看到数据库中的数据(虽然我会解决它,帮助在这种情况下,将不胜感激) – Bawa

+0

我认为这是因为print_r($结果); – Bawa

+1

@Bawa,函数'curl_exec()'在成功时返回'TRUE'或者在失败时返回'FALSE'。但是,如果设置了'CURLOPT_RETURNTRANSFER'选项,它将在成功时返回结果,失败时返回'FALSE'。 –

试试这个代码,我希望它会为你工作...

<?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 
) 
+0

这工作太bro了,但我只能标记一个答案的权利。 :)感谢您的帮助。 – Bawa

+1

欢迎bro ... @Bawa,我一直在这里帮助... –