注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
玩FLASH也要注意安全 Flash Play
隐藏qmail的SMTP help信息保护你
Qmail如何通过UUCP进行邮件外发
用PHP开发qmail邮件服务器管理系
如何在HP-UX 10.20系统中正确地配
MySQL的管理工具:phpMyAdmin
Php+SqlServer实现分页显示
PHP模拟SQL Server的两个日期处理
PHP利用COM对象访问SQLServer、A
修改Delphi使之适应SQL Server20
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> PHP >> 文章正文
PHP进阶
作者:KevinYank  来源:LinuxAID  点击:  更新:2006-12-19
简介:
文件名中同时使用客户端的IP地址(由PHP自动存储在$REMOTE_HOST中)。因为我们不太可能同一秒从同一个IP地址接受两个文件,这个方案应该是可行的。
// Pick a file extension
if ( "image/pjpeg" == $uploadedfile_type )
$extension = ".jpg";
else
$extension = ".gif";
// The complete path/filename
$filename = "C:Uploads" . time() .
$REMOTE_HOST . $extension;
// Copy the file
if (copy($uploadedfile, $filename)) {
echo("<P>File stored successfully as $filename.");
} else {
echo("<P>Could not save file as $filename!");
}


请注意如果是在Windows下,我们必须在路径中使用双反斜杠(),因为反斜杠用来在PHP文本字符串中表示特殊字符。而在UNIX下,我们只要象通常那样使用一个斜杠(/)。
将上载的文件保存到数据库中
我们已经建立了一个访问者可以上传JPEG和GIF图象,并将其存储在我们的服务器上的系统,但是为什么不是这个教程所介绍的数据库驱动呢?如果我们这个系统就这样维持现状不变,将不得不有人负责从文件夹中收集提交的图象并手工将其添加到Web站点!回头看看第七章,在那里我们开发了一个系统使得站点的访问者可以提交笑话将将其存到数据库中,以备管理者通过,我们知道这是一种更好的方法!
MySQL有一些列类型可以用来存储二进制数据。在数据库术语中,这些列类型可以存储BLOB(二进制大对象)。然而,在一个关系型数据库中储存大的文件并不是一个好主意。尽管将所有数据放在一个地方会给我们带来方便,但是大的文件导致大的数据库,而大的数据库会导致性能的降低和太大的备份文件。
通常最好的选择是将文件名存储在数据库中。只要你记得在数据中删除记录时删除相应的文件就可以了。
PHP中的Email
Email在Internet上有着强大的影响力。不论你是想要给你的用户提供一个"what's new"周刊,还是考虑一个途径让你的用户可以获得丢失的口令,你都会用到email。PHP便得使用email非常的简单,你只需要简单地调用mail函数就可以发出信息。
在你使用mail函数发送email之前,你首先必须设置PHP的与email相关的选项。这儿是在Windows下的php.ini文件中的相关行:
[mail function]
SMTP = localhost ;仅对win32有效
sendmail_from = me@localhost.com ;仅对win32有效
;sendmail_path = ;仅对unix有效 ...


取决于你使用的是Windows还是UNIX,PHP会通过一个SMTP服务器或一个本地的sendmail系统发送email。对这些的设置不是本教程的讨论范围,你可以从其它地方找到有关这二者的大量信息。然而,如果你是在Windows上运行,有可能你的ISP已经为你提供了一个SMTP服务器。这也就是你发送信息设置你的email程序所用的服务器。将SMTP设置为那个服务器的主机名或IP地址。
sendmail_from会设置你的emails发出时默认的发出的email地址。如果你正在管理这个服务器,你可以将你的email地址放在这儿。
最后,sendmail_path在UNIX下将不会被注释(也就是说,删除这一行前面的分号),你需要将其设置为你的系统上的sendmail程序的路径和文件名。在Linux下,这通常是指/usr/sbin/sendmail。
做好这些配置后重新启动你的Web服务器,PHP将具有全部的email功能。现在在PHP中发送一个email是相当容易的:
mail("to-address@somewhere.com", "Message Subject", "This is the body of the message.");


要发送给多个收件人只需要将多个地址用逗号分开:
mail("to1@mail.net, to2@mail.net, ...", "Message Subject", "Message body");

在标题中指定From:或者Reply-To:的地址也非常简单。将其作为第四个参数带入,其中以回车-换行符分隔:
mail("to@mail.net", "Message Subject", "Message body", "From: webmaster@host.com Reply-to:admin@host.com");


与一个数据库相结合,一个邮件列表变得非常容易管理!只需要从数据库中取出地址列表并使用mail函数发送信息就行了。个人化的信息也非常简单。参看下面的例子:
// Retrieve $email and $password from the database based
// on the $username provided in a form.
mail($email, "Your Password",
"Hi there!

You just filled out a form on our Web site
indicating that you had lost your password.
As requested, we are sending it to you by
email.
username: $username
password: $password
Please record this information in a safe
place so you have it on hand for your next
visit to pingpongballs.com!
-The Webmaster.
");


如果你在在UNIX下运行,而且你没有一个本地的sendmail系统可以发送email,这也不要紧。PHP具有完善的TCP/IP网络性能,如果需要,你可以连接到一个SMTP服务器以发送信息。同样的,如果你需要在发出的信息中包含附件,PHP也可以实现这种功能。
不幸的是,内置的mail函数不支持这些特征,如果你需要它们,你将不得不从头编写你自己的email函数。WROX Press编写的"专业PHP程序设计"已经为你完成了这些工作,在该书的第17章你可以找到全部的代码。尽管这是我高度推荐的一本好书(见我的回顾),但是如果你只是想获得这项功能,你也可以不购买这本书,这个源代码你可以从WROX的网站自由地下载。
除了这两个小问题外,PHP的内置mail函数为你的Web页面发送email信息提供了令人难以相信的方便

上一页  [1] [2] 






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务