php"curl"不起作用




我正在尝试使用"curl"将一些值从"1.php"页面发送到"3.php"页面。

这是我的代码-

1.php

<?php
$data = array();
$data['first_name'] = 'hello';
$data['last_name'] = 'Thind';
$data['password'] = 'secret';
$data['email'] = 'me@abc.com';
$post_str =''; 
foreach($data as $key=>$val)
{ $post_str .= $key.'='.$val.'&'; } 
$post_str = substr($post_str, 0, -1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '3.php' );
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

3.php

<?php
$host="localhost";       
$dbname="mr"; 
// mysql code for table= create table m(name varchar(10));
$username="";            
$password="";
$con=mysql_connect("$host","$username","$password")or die("cannot connect");
mysql_select_db($dbname) or DIE('cannot select db');
if(isset($_POST['first_name'])){
$name=$_POST['first_name'];
$sql="insert into m
values('$name')";
$sq=mysql_query($sql);
echo"ok";
}
mysql_close($con);
?>

我的问题是"没有数据插入数据库,因为没有数据从 3.php 传输到 1.php"。我通过给出一些值来检查"3.php"中的数据库代码,并将其正确插入到数据库中。因此,"3.php"中的代码效果很好。因此,"1.php"中的代码似乎不起作用。
注意:php_curl.dll在 php.ini 文件中激活。我正在使用Windows xp Professional Service Pack-2,xampp-win32版本-1.8.1)

谁能告诉我那里出了什么问题?

-谢谢。

curl_setopt($ch, CURLOPT_URL, '3.php' );

这会请求 URL 3.php...您必须给它一些"提示",因为 cURL 是一个外部程序,只需按原样调用 URL。

将其更改为类似http://mysite.whatever/3.php


附带说明一下,cURL 是一个命令行实用程序,如果以这种方式使用,调试会更容易。你应该首先测试它的命令行,然后,如果它有效,在你的PHP代码上实现它。

此处的 cURL 模式:http://curl.haxx.se/docs/manpage.html

已解析
这是完整的代码(根据 Frankie 的帮助)

1.php

<?php
$data = array();
$data['first_name'] = 'hello';
$data['last_name'] = 'Thind';
$data['password'] = 'secret';
$data['email'] = 'me@abc.com';
$post_str =''; 
foreach($data as $key=>$val)
{ $post_str .= $key.'='.$val.'&'; } 
$post_str = substr($post_str, 0, -1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/3.php' ); // Heres the change 'http://localhost/3.php' instead of '3.php' . See on Frankie's reply.
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

3.php

<?php
$host="localhost";       
$dbname="mr"; 
// mysql code for table= create table m(name varchar(10));
$username="";            
$password="";
$con=mysql_connect("$host","$username","$password")or die("cannot connect");
mysql_select_db($dbname) or DIE('cannot select db');
if(isset($_POST['first_name'])){
$name=$_POST['first_name'];
$sql="insert into m
values('$name')";
$sq=mysql_query($sql);
echo"ok";
}
mysql_close($con);
?>

最新更新