无法发送使用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);
}
?>
答
只要你需要更新你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
希望这将有助于解决您的问题!
答
试试这个代码,我希望它会为你工作...
<?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,我一直在这里帮助... –
分配在卷曲变量'$ result = curl_exec($ ch);'和打印结果'print_r($ result);'来检查错误,但是你的代码工作正常我认为问题在于你的主机名是'localhost 'not'loclhost' –
使用'curl_setopt($ ch,CURLOPT_URL,Your Url);' –
@manjeet barnala- no,但它甚至没有回显data.php中的代码,data.php中的第一行是'echo' finlly in',它没有显示 – Bawa