PHP cURL传递整个“类对象”?

PHP cURL传递整个“类对象”?,php,class,object,post,curl,Php,Class,Object,Post,Curl,在PHP+cURL中,我可以传递简单的对象,比如JSON/Array对象,但仍然不知道如何传递整个类对象 假设我在目标服务器上没有类文件。这就是为什么我想通过卷曲传输。 现在我的班级样本是: class MyClass { function sayHello() { return "Hello world!"; } } 以及一台服务器上的sender.php: require_once("class.myclass.php"); $myClass = new M

在PHP+cURL中,我可以传递简单的对象,比如JSON/Array对象,但仍然不知道如何传递整个类对象

假设我在目标服务器上没有类文件。这就是为什么我想通过卷曲传输。 现在我的班级样本是:

class MyClass {
    function sayHello() {
        return "Hello world!";
    }
}
以及一台服务器上的sender.php:

require_once("class.myclass.php");
$myClass = new MyClass;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://................");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('theclass' => serialize($myClass), 'username' => "abc123"));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
echo $response = curl_exec($ch);
curl_close($ch);
。。但是该类不能在目标端使用,这里是另一台没有类文件的服务器上的receiver.php:

有什么好主意吗? 它耐用吗? 1用途:


2添加require_onceclass.myclass.php;对于receiver.php

,您可以使用该类进行快速输入

<?php 
class cURL { 
var $headers; 
var $user_agent; 
var $compression; 
var $cookie_file; 
var $proxy; 
function cURL($cookies=TRUE,$cookie='cookies.txt',$compression='gzip',$proxy='') { 
    $this->headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg'; 
    $this->headers[] = 'Connection: Keep-Alive'; 
    $this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
    $this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR       1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 
    $this->compression=$compression; 
    $this->proxy=$proxy; 
    $this->cookies=$cookies; 
    if ($this->cookies == TRUE) $this->cookie($cookie); 
} 
function cookie($cookie_file) { 
    if (file_exists($cookie_file)) { 
    $this->cookie_file=$cookie_file; 
} else { 
    fopen($cookie_file,'w') or $this->error('The cookie file could not be opened. Make   sure this directory has the correct permissions'); 
   $this->cookie_file=$cookie_file; 
   fclose($this->cookie_file); 
    } 
} 
function get($url) { 
    $process = curl_init($url); 
   curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
   curl_setopt($process, CURLOPT_HEADER, 0); 
   curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
   if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this- >cookie_file); 
   if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
    curl_setopt($process,CURLOPT_ENCODING , $this->compression); 
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
   if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy); 
        curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
        $return = curl_exec($process); 
        curl_close($process); 
     return $return; 
} 
function post($url,$data) { 
    $process = curl_init($url); 
     curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
      curl_setopt($process, CURLOPT_HEADER, 1); 
      curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
     if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this- >cookie_file); 
      if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
      curl_setopt($process, CURLOPT_ENCODING , $this->compression); 
       curl_setopt($process, CURLOPT_TIMEOUT, 30); 
   if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy); 
         curl_setopt($process, CURLOPT_POSTFIELDS, $data); 
        curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
         curl_setopt($process, CURLOPT_POST, 1); 
      $return = curl_exec($process); 
   curl_close($process); 
    return $return; 
} 
    function error($error) { 
             echo "<center><div style='width:500px;border: 3px solid #FFEEFF; padding:                 3px; background-color: #FFDDFF;font-family: verdana; font-size: 10px'><b>cURL Error</b>     <br>$error</div></center>"; 
              die; 
      } 
  } 
    $cc = new cURL(); 
    $cc->get('http://www.example.com'); 
   $cc->post('http://www.example.com','foo=bar'); 
    ?> 
[丹布朗在php.net上编辑:包括Anonymous于2008年12月1日@06:52提供的错误修复。根据RFC 2606,还将实际URL替换为example.com。]


[丹布朗在php.net编辑:包括manuel于2009年11月24日在rankone DOT ch提供的错误修复,以正确引用cURL初始化。]

在取消序列化之前,您是否包含了类或实现了自动加载器?抱歉,我没有理解您的意思:/what's应该是什么?添加require\onceclass.myclass.php;在调用unserialize$_POST['theclass']之前;您的类需要实现可序列化:huh:S class.myclass.php来自哪里?我正在从cURL接收那个类对象。目标端不存在实际文件。是否确定接收器上的步骤2?它们不在同一台服务器上,你知道吗?我在目标服务器上没有class.myclas.php文件。这就是为什么我要转移到目的地使用它。那我怎么能把它包括进去呢?我肯定。将文件复制到服务器上。嗯,将文件复制到服务器上??:那我为什么还要通过cURL来转移课程呢@夏期劇場 我在上面解释了这一点。您不传输类,只传输对象实例。您传输的是一个值,而不是一个类定义。只需复制文件,执行一次,然后看看您得到了什么。对不起,但是如何使用它??它能传输类对象吗?当你取消序列化并访问对象属性时,你能说出错误吗?
$postdata = array('theclass' => serialize($myClass), 'username' => "abc123");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postdata) );
<?php 
class cURL { 
var $headers; 
var $user_agent; 
var $compression; 
var $cookie_file; 
var $proxy; 
function cURL($cookies=TRUE,$cookie='cookies.txt',$compression='gzip',$proxy='') { 
    $this->headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg'; 
    $this->headers[] = 'Connection: Keep-Alive'; 
    $this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
    $this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR       1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 
    $this->compression=$compression; 
    $this->proxy=$proxy; 
    $this->cookies=$cookies; 
    if ($this->cookies == TRUE) $this->cookie($cookie); 
} 
function cookie($cookie_file) { 
    if (file_exists($cookie_file)) { 
    $this->cookie_file=$cookie_file; 
} else { 
    fopen($cookie_file,'w') or $this->error('The cookie file could not be opened. Make   sure this directory has the correct permissions'); 
   $this->cookie_file=$cookie_file; 
   fclose($this->cookie_file); 
    } 
} 
function get($url) { 
    $process = curl_init($url); 
   curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
   curl_setopt($process, CURLOPT_HEADER, 0); 
   curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
   if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this- >cookie_file); 
   if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
    curl_setopt($process,CURLOPT_ENCODING , $this->compression); 
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
   if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy); 
        curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
        $return = curl_exec($process); 
        curl_close($process); 
     return $return; 
} 
function post($url,$data) { 
    $process = curl_init($url); 
     curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
      curl_setopt($process, CURLOPT_HEADER, 1); 
      curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
     if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this- >cookie_file); 
      if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
      curl_setopt($process, CURLOPT_ENCODING , $this->compression); 
       curl_setopt($process, CURLOPT_TIMEOUT, 30); 
   if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy); 
         curl_setopt($process, CURLOPT_POSTFIELDS, $data); 
        curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
         curl_setopt($process, CURLOPT_POST, 1); 
      $return = curl_exec($process); 
   curl_close($process); 
    return $return; 
} 
    function error($error) { 
             echo "<center><div style='width:500px;border: 3px solid #FFEEFF; padding:                 3px; background-color: #FFDDFF;font-family: verdana; font-size: 10px'><b>cURL Error</b>     <br>$error</div></center>"; 
              die; 
      } 
  } 
    $cc = new cURL(); 
    $cc->get('http://www.example.com'); 
   $cc->post('http://www.example.com','foo=bar'); 
    ?>