2


「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);
?>

私の問題は、「データベースにデータが挿入されないため、1.php から 3.php にデータが転送されない」ということです。値を指定して「3.php」のデータベース コードをチェックしたところ、データベースに正しく挿入されました。 '3.php' は正常に動作するため、'1.php' のコードが動作していないようです。
注: php_curl.dllはphp.iniファイルでアクティブ化されています。私はWindows XPプロフェッショナルサービスパック-2、xampp-win32バージョン-1.8.1を使用しています)

何が問題なのか教えてください。

-ありがとう。

4

2 に答える 2

5

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

于 2012-11-22T03:30:50.780 に答える
0

解決済み
完全なコードはこちら (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);
?>
于 2012-11-22T04:10:04.743 に答える