散分200,顺便请教五个问题

黑夜路人
博客专家认证
2005-08-19 10:18:28
散分,顺便请教如下问题。

1. 请推荐一个比较强的购物车类,代码要精练,包含购物、计算价格等操作,session保存信息

2. 介绍一种能够发送html邮件,html中有图片,并且邮件中包含附件的好的发送邮件方式。目前我已总结出几种,url:http://blog.csdn.net/heiyeshuwu/archive/2005/08/18/458170.aspx,但是我觉得不太好,请大家介绍更好的。

3. 推荐使用GD库的把图片缩小的代码,当然,原始图片可能是gif/jpg/bmp/png中的一种,大小不定,能够缩小到指定的大小,比如23x23之类的,输出的格式可以支持多种,比如gif/jpg/png。

4. 无限级分类的处理,使用什么算法能够解决,递规,或者别的,我没有试验成功。包括js的输出代码

5. 介绍下XML_RPC机制,以及使用PHP的实现


呵呵,不好意思,问题太多了,大家可以挑选自己感兴趣的回答。如果任何一个问题需要的话,可以单独开帖。顶有分!

感谢各位!
...全文
295 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
nullfox 2005-08-25
  • 打赏
  • 举报
回复
mark,top!
wxq4100798 2005-08-25
  • 打赏
  • 举报
回复
//获取导航条,根据classID 获取导行
function GetNavi(&$navi,$paramClassID,$paramDb,$endClassID=0)
{

$classID = $paramClassID;
$db = $paramDb;
$query = "select * from tbl_class where classID=$classID";//取得本层信息
$db->ExecQuery($query);
$numRows = $db->NumRows();
if($numRows)//本层记录存在
{
$classInfo = $db->FetchArray();//本层信息存放数组
//本层信息导行
if($navi == "")
{
$navi = "<a href=classManage.php?classID=".$classInfo['classID']."><font color=#cccccc>".$classInfo['className']."</font></a>";
}
else
{
$navi = "<a href=classManage.php?classID=".$classInfo['classID']."><font color=#cccccc>".$classInfo['className']."</font></a>>>".$navi;
}

//递归上一层
if($classInfo['classPID'] != $endClassID)
{
GetNavi($navi,$classInfo['classPID'],$db,$endClassID);
}
else//将根目录连接在上面
{
$navi = "<a href=classManage.php?classID=0><font color=#cccccc>首页</font></a>>>".$navi;
}
}
return $navi;
}


//前台图片自适应大小
function ShowImg($img,$refWidth,$refHeight)
{

$size = getimagesize($img);
$width = $size[0];
$height = $size[1];
if($width > $height)
{
$n = $width/$refWidth;
$width = $refWidth;
$height = $height/$n;
}
else
{
$n = $height/$refHeight;
$width = $width/$n;
$height = $refHeight;
}
$tmpImg = "<img src=".$img." border=0 width=".$width." height=".$height.">";
return $tmpImg;
}

//根据当前ID ,其下的所以叶子结点ID
function GetAllLeafID(& $allClassIDs,$paramClassID,$paramDb)
{

$classID = $paramClassID;
$db = $paramDb;
$query = "select classID from tbl_class where classPID=".$classID;
$db->ExecQuery($query);
$numRows = $db->NumRows();
if($numRows == 0)
{
if($allClassIDs == "")
{
$allClassIDs = $classID;
}
else
{
$allClassIDs = $allClassIDs.",".$classID;
}
}
else
{
while($tmpInfo = $db->FetchArray())
{
if(!empty($tmpInfo[0]))
{
GetAllLeafID($allClassIDs,$tmpInfo[0],$db);
}
}
}
//echo $allClassIDs;
return $allClassIDs;
}
//
黑夜路人 2005-08-25
  • 打赏
  • 举报
回复
感谢 ice_berg16(寻梦的稻草人) !
100度泡腾 2005-08-25
  • 打赏
  • 举报
回复
关注!!
ice_berg16 2005-08-25
  • 打赏
  • 举报
回复
1.这个东西应该不难吧?主要就是session的操作了.
2.我目前用的,还可以。
http://www.icebergweb.com/download/class.rar
3.自己写的类感觉有些冗长,就不贴了。
4.和第二个smtp类同在class.rar包中. 采用的是插值排序法,理论上是无限的,
多说一句,无限分类其实我们一般使用只有几级而已,只要能到满足要求是不是无限都无所谓了。
以前也写过一个使用字符串排序的,不过级数有限,现在不使用了。
5.XML_RPC和SOAP同是基于HTTP的二种XML应用协议,说白了,就是客户端和服务器端使用规定格式的XML数据进行通信,就像明白了HTTP协议后,我们可以使用PHP来模拟浏览器来POST数据一样,这些东西是基于HTTP的,使用SOCKET来操作完全可以,只要保证数据格式的正确性即可。
zhuangyan2004 2005-08-25
  • 打赏
  • 举报
回复
up
raid79 2005-08-25
  • 打赏
  • 举报
回复
up
coolstr 2005-08-25
  • 打赏
  • 举报
回复
UP一下,ceng一下分.
黑夜路人 2005-08-24
  • 打赏
  • 举报
回复
to Meteorlet(www.dictworld.com):

难道RPC的客户端和服务器端都必须由PHP本身来实现?
Meteorlet 2005-08-24
  • 打赏
  • 举报
回复
问题五:
客户端:
$xml = "<dictworld></dictworld>";
$fp = fsockopen("localhost", 80) or die("can't connect localhost");
fputs($fp, "POST /xml.php HTTP/1.0\n");
fputs($fp, "Content-type: text/xml\n");
fputs($fp, "Content-length: ".strlen($xml)."\n\n");
fputs($fp, $xml);

while (!feof($fp))
{
$response .= fgets($fp);
}

服务器端:
$fp = fopen("php://input", "r");
while (!feof($fp))
{
$xml .= fgets($fp);
}
TomyGuan 2005-08-24
  • 打赏
  • 举报
回复
呵呵 ̄!我來接分
thunderx 2005-08-24
  • 打赏
  • 举报
回复
呵呵,问题三:
 <?
//从源文件取出图象,设定成指定大小,并输出到目的文件
// 源文件格式:gif,jpg,jpe,jpeg,png
// 目的文件格式:jpg
// 参数说明:
// $srcFile 源文件
// $dstFile 目标文件
// $dstW 目标图象宽度
// $dstH 目标图象高度

function makethumb($srcFile,$dstFile,$dstW,$dstH) {
$data = GetImageSize($srcFile,&$info);
switch ($data[2]) {
case 1:
$im = @ImageCreateFromGIF($srcFile);
break;
case 2:
$im = @imagecreatefromjpeg($srcFile);
break;
case 3:
$im = @ImageCreateFromPNG($srcFile);
break;
}
$srcW=ImageSX($im);
$srcH=ImageSY($im);
$dstX=0;
$dstY=0;
if ($srcW*$dstH>$srcH*$dstW) { $fdstH=round($srcH*$dstW/$srcW); $dstY=floor(($dstH-$fdstH)/2); $fdstW=$dstW; }
else { $fdstW=round($srcW*$dstH/$srcH); $dstX=floor(($dstW-$fdstW)/2); $fdstH=$dstH; }
$ni=ImageCreate($dstW,$dstH);
$dstX=($dstX<0)?0:$dstX;
$dstY=($dstX<0)?0:$dstY;
$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
$dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
$black = ImageColorAllocate($ni, 0,0,0);//填充的背景色你可以重新指定,我用的是黑色
imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);
ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);
ImageJpeg($ni,$dstFile);//如果你要把图片直接输出到浏览器,
//那么把第二个参数去掉,并用header()函数指定mine类型先
imagedestroy($im);
imagedestroy($ni);
}
//测试:
makethumb("cs.jpg","cs3.png",80,80,"png");
?>
zhlxwhj 2005-08-24
  • 打赏
  • 举报
回复
接分~~~~~~~~~~~~~~~~~~~~
xuzuning 2005-08-24
  • 打赏
  • 举报
回复
3. 推荐使用GD库的把图片缩小的代码,当然,原始图片可能是gif/jpg/bmp/png中的一种,大小不定,能够缩小到指定的大小,比如23x23之类的,输出的格式可以支持多种,比如gif/jpg/png。

偶然已经发布了很好的程序了,为什么不用呢?
bmp格式图片不是网页图片,不应该在列表中!
wythz 2005-08-24
  • 打赏
  • 举报
回复
我也想知道第三个问题的解决办法,怎么弄呢?
zhutimy 2005-08-24
  • 打赏
  • 举报
回复
一直都很关注的问题,关注一下.

好像用GD2做关透明水印,在WINDOWS下做的很完美,可是一样的代码到了LINUX下,水印居然变黑了(水印透明度越低,就越黑),你们的是这样吗?
黑夜路人 2005-08-24
  • 打赏
  • 举报
回复
希望高手继续指教!
olover 2005-08-19
  • 打赏
  • 举报
回复
http://www.daima.com.cn/Info/130/Info38920/
olover 2005-08-19
  • 打赏
  • 举报
回复
<!--声明是抄的,我不会--> 关于问题五
在PHP中利用XML技术构造远程服务(转)

在PHP中利用XML技术构造远程服务

未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单。本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序。

一、服务式Web
从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于“服务式Web”的说明和评论。就Web的初创阶段来说,它只是一个文档的集散地,提供的只是一些可浏览的信息。随着Web的发展,在Web上运行服务越来越具有吸引力。未来,Web将成为企业为客户和其他企业提供便捷服务的载体。B2B和B2C模式间的协同就可以看成是一种服务式Web。

一个很重要的问题是,Web上究竟可以提供哪些服务?Web能够提供的服务非常多,其中有些服务现在已经在使用,有些服务在不久的将来就会出现。为了说明问题,下面列出了一小部分可以通过Web提供的服务:

面向主题的垂直搜索引擎。
供用户查找信息的知识库。
用户可以请教问题的专家系统。
银行服务。
新闻和信息出版服务。
数字化支付相关的服务。
图形处理服务。
卫生和健康服务。

那么,企业和组织通过Web提供服务的正确途径是什么呢?这是一个很重要的问题。今天,有些服务提供HTML界面,它们通过文档的形式提供服务,但在服务界面的背后隐藏着什么?在占领Web的竞赛中,Web浏览器并不孤单,移动电话、手持设备以及微波炉之类的设备都想要访问Web、查询数据库、转换数据、提取信息,等等。要实现真正的服务式Web,在表现层(HTML)之下应该还有另外一层。

二、XML_RPC标准
XML或许是近10年来最为重要的标准,XML词汇表(Vocabulary)为企业构造服务环境提供了基石。要构建服务式Web就有必要学习XML_RPC标准,这不仅是因为XML_RPC对于把服务放到Web上很有用,而且因为XML_RPC是一种已经成形的、很容易采用的标准。对于B2B服务来说,提供服务的标准是极其重要的,共同遵循标准的公司可以利用其它公司提供的服务获得快速的增长。无法想象在各种私有的服务标准之上可以建立起真正的服务式Web,服务必须有一种可以遵循的标准。

XML_RPC是一种面向Internet分布式处理的标准。RPC即为Remote Procedure Call(远程过程调用)的缩写,它是一种远程调用机制,用于调用可能驻留在其他机器之上以及可能用其他语言编写的过程。远程过程调用是分布式计算的重要支柱。例如,在一个分布式计算环境中,我们可以寻找和利用在其他机器上运行的执行加法和减法操作的过程,执行加法操作的过程可能用APL编写、在RS6000机器上运行,执行减法操作的过程可能用C编写、在Unix上运行。其他要使用这种分布式计算器的开发者同样可以利用它们,或者他也可以选用另外更好的计算器。

在RPC中,过程(Procedure)是最主要的构件,服务器提供的就是供客户端调用的过程。过程可以接收参数并返回结果。XML_RPC以HTTP作为协议载体,通过发送和接收数据的XML词汇表实现RPC机制。XML_RPC服务器接收XML_RPC请求并返回XML_RPC应答,XML_RPC客户程序发送XML_RPC请求并接收XML_RPC应答。服务器和客户必须按照XML_RPC标准的要求处理应答和请求。

Magic_kui_asd 2005-08-19
  • 打赏
  • 举报
回复
无限级分类的处理我用 树 搞,
数据库中搞个分类表table_type的主要字段是
type_id(类序号) type_upid(父类序号) type_name(类名)
写个树类

class Tree //(这个Tree类不是我写的,网上搞来的)
{

var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();


function Tree ($value)
{
$this->setNode(0, -1, $value);
} // end func


function setNode ($id, $parent, $value)
{
$parent = $parent?$parent:0;

$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;

if (!isset($this->layer[$parent]))
{
$this->layer[$id] = 0;
}
else
{
$this->layer[$id] = $this->layer[$parent] + 1;
}
}

function getList (&$tree, $root= 0)
{
foreach ($this->child[$root] as $key=>$id)
{
$tree[] = $id;

if ($this->child[$id]) $this->getList($tree, $id);
}
} // end func


function getValue ($id)
{
return $this->data[$id];
} // end func


function getLayer ($id, $space = false)
{
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
} // end func


function getParent ($id)
{
return $this->parent[$id];
} // end func


function getParents ($id)
{
while ($this->parent[$id] != -1)
{
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}

ksort($parent);
reset($parent);

return $parent;
} // end func


function getChild ($id)
{
return $this->child[$id];
} // end func



function getChilds ($id = 0)
{
$child = array($id);
$this->getList($child, $id);

return $child;
} // end func
} // end class

$query="select type_id,type_upid from table_type ";
$result=$db->query($query);

$Tree = new Tree();
while($r=$db->fetch_array($result))
{
$Tree->setNode($r[type_id], $r[type_upid], $r[type_name]);
}
加载更多回复(8)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧