这里给出的代码,是一个用php创建html页面的简单例子,用到了php中的文件操作。
$con = array(array("newtitle","newcontent"),array("newtitle2","newcontent2"));
foreach($con as $id=>$val)
{
$title = $val[0];
$content = $val[1];
$path = $id.'.htm';
$fp = fopen("jia.htm", "r"); //打开文件,只读方式
$str = fread($fp, filesize("jia.htm")); //读取文件
$str = str_replace()("{title}", $title,$str); //将字符串中的内容进行替换
$str = str_replace("{content}", $content, $str);
fclose($fp); //关闭文件
$fpw = fopen($path, "w"); //以写入的方式打开文件
fwrite($fpw, $str); //将$str写入文件
fclose($fpw);
echo "generate successfully!";
}
?>
使用pear::soap创建web服务的步骤,供大家学习参考。
第一步:
创建实现webservice的商业逻辑类FruitQuoteService,该类包含两个方法:
构造函数FruitQuoteService()定义wsdl文档中的元素;
getFruit()方法提供一个二维数组,其中每个元素表示一种水果及目前库存数量。
getQuote()方法获取水果品种,返回它的价格。
class FruitQuoteService
{
public $__dispatch_map = array();
public $__typedef = array();
public function FruitQuoteService()
{
$this->__dispatch_map['getQuote'] = array(
"in" => array("category" => "string"),
"out" => array("quote" => "int")
);
$this->__dispatch_map['getFruit'] = array(
"in" => array(),
"out" => array("fruitSummary" => "{urn:FruitQuoteService}fruitStruct")
);
$this->__typedef['fruitStruct'] = array(
'category'=>'string', 'amount' => 'int'
);
}
public function getQuote($category)
{
switch ($category)
{
case 'apple':
$quote = 10;
break;
case 'orange':
$quote = 12;
break;
case 'banana':
$quote = 20;
break;
default:
$quote = 0;
break;
}
return $quote;
}//end funtion
public function getFruit()
{
$list = array(
array("apple", 100),
array("orange", 500),
array("banana", 260)
);
return $list;
}//end funtion
}//end class
?>
第二步:创建server.php 这个程序将接收并处理客户端的请求
require_once("FruitQuoteService.php");
require_once("SOAP/Server.php");
$fruitQuote = new FruitQuoteService();
$server = new Soap_Server();
$server->addObjectMap($fruitQuote, "http://www.xxx.com");
if (isset()($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST')
{
$server->service($GLOBALS['HTTP_RAW_POST_DATA']);
} else
{
require_once 'SOAP/Disco.php';
$disco = new SOAP_DISCO_Server($server,'FruitQuoteService');
header("Content-type: text/xml");
if (isset($_SERVER['QUERY_STRING']) && strcasecmp($_SERVER['QUERY_STRING'],'wsdl')==0) {
echo $disco->getWSDL();
} else {
echo $disco->getDISCO();
}
}
exit;
?>
现在可以通过http://www.shangyong.com/ws/server.php?wsdl 查看wsdl文档。
DISCO:一项微软用来发布和发现Web服务的技术,定义了一个从给定的url获取web服务描述的简单的HTTP GET机制
第三步:创建web服务客户端代码
require_once('SOAP/Client.php');
//这个名称空间必须和server.php中定义的一致
$options = array('namespace' => 'http://www.xxx.com',
'trace' => 1); //为1表示可以通过__get_wire获取soap消息,默认是0
$client = new SOAP_client("http://www.shangyong.com/ws/server.php");
$params = array();
$response = $client->call("getFruit", $params, $options);
//print_r($client->__get_wire()); //输出 soap消息
if (PEAR::isError($response)) {
echo 'Error: ' . $response->getMessage() . "<br>\n";
} else {
print_r($response) . "\n";
}
$params = array("name" => "orange");
$response = $client->call("getQuote", $params, $options);
if (PEAR::isError($response)) {
echo 'Error: ' . $response->getMessage() . "<br>\n";
} else {
echo $response . "\n\n";
}
exit;
?>
客户端代码2
require_once('SOAP/Client.php');
/**
* 所有的服务内容,如:命名空间、UEL, 参数名等都可以从wsdl文件获取
*/
$wsdl = new SOAP_WSDL("http://www.shangyong.com/ws/server.php?wsdl");
/**
* 从wsdl生成一个proxy对象,这个对象包含wsdl文档中定义的所有操作的方法。
* 可以通过proxy对象直接调用函数
* 优点:易于用户使用
*/
$client = $wsdl->getProxy();
$response = $client->getQuote("apple");
if (PEAR::isError($response)) {
echo 'Error: ' . $response->getMessage() . "<br>\n";
} else {
echo $response . "\n\n";
}
$response = $client->getFruit();
if (PEAR::isError($response)) {
echo 'Error: ' . $response->getMessage() . "<br>\n";
} else {
print_r($response) . "\n";
}
exit;
?>
1、下载NetMail,SMTP,SASL,SOCKET等几个pear组件,当然还包括pear.php这个模块。注意最新版本的文件里面最后面缺少 “?>“ 要自己补上。
在你的webapp目录下建立一个inc/pear目录,一般不要使用系统的pear库,因为一可能会有版本问题,二pear使用时需要设置require的路径,而每一个程序可能都有差别。
把所有的包放在inc/pear里面后,修改每一个文件里面requirel_once的地方,在文件名前面加上你自己的路径,相对位置从你要执行发送程序的目录开始,大致如下
require_once(PEAR_PATH.'Mail.php');
里面的PEAR_PATH可以控制不同目录下的文件调用时根据自己的当前所在路径来具体设置
2、发送程序
设置smtp的访问用户名,密码
<?php
$params = array('host' => 'localhost',
'port' => '25',
'username' => 'test@',
'password' => 'test');
//$to = $test_mail;
$recipients = $to; 接收人,可以是一个数组来存放多个地址
$headers['From'] = $email;
$headers['To'] = $to;
$headers['Subject'] = $subject;
$body = $message;
//选择smtp的发送方式,当然还支持mail()和sendmail
$mail_object = &Mail::factory('smtp', $params);
if (PEAR::isError($e = $mail_object->send($recipients, $headers, $body))) {
die($e->getMessage() . "\n");
}
?>
您可能感兴趣的文章:
php 邮件发送类(smtp方式或mail函数方式)
php使用smtp发送邮件的实现代码
php smtp发送邮件的函数
php中通过curl smtp发送邮件的例子
使用pear:Net_SMTP类发送邮件的例子
linux下php配置smtp发送邮件的方法
php写的smtp邮件发送类