站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
十天学会PHP/第八天:Sessions、发送电子邮件
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
{{PHPtop}} '''PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。''' ==PHP Session变量== *当您运行一个应用[[程序]]时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在[[因特网]]上,存在一个问题:[[服务器]]不知道你是谁以及你做什么,这是由于[[HTTP]]地址不能维持状态。 *通过在服务器上存储用户信息以便随后使用,PHP session解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开[[网站]]后将被删除。如果您需要永久储存信息,可以把数据存储在[[数据库]]中。 *Session 的工作机制是:为每个访问者创建一个唯一的id (UID),并基于这个UID来存储变量。UID 存储在 cookie 中,亦或通过[[URL]]进行传导。 ===开始PHP Session=== *在您把用户信息存储到 PHP session 中之前,首先必须启动会话。 *注释:session_start() 函数必须位于 <html> 标签之前: <pre> <?php session_start(); ?> <html> <body> </body> </html> </pre> *上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。 ===存储 Session 变量=== *存储和取回session 变量的正确方法是使用PHP $_SESSION 变量: <pre> <?php session_start(); // store session data $_SESSION['views']=1; ?> <html> <body> <?php //retrieve session data echo "Pageviews=". $_SESSION['views']; ?> </body> </html> </pre> *'''输出''': *Pageviews=1在下面的例子中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则我们创建 "views" 变量,并把它设置为 1: <pre> <?php session_start(); if(isset($_SESSION['views'])) $_SESSION['views']=$_SESSION['views']+1; else $_SESSION['views']=1; echo "Views=". $_SESSION['views']; ?> </pre> *终结 Session *如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。 *unset() 函数用于释放指定的 session 变量: <pre> <?php unset($_SESSION['views']); ?></pre> *您也可以通过 session_destroy() 函数彻底终结 session: <pre> <?php session_destroy(); ?> </pre> '''PHP 允许您从脚本直接发送电子邮件。''' ==PHP mail() 函数== '''PHP mail() 函数用于从脚本中发送电子邮件。''' *'''语法''' *mail(to,subject,message,headers,parameters)参数 描述 *to 必需。规定 email 接收者。 *subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。 *message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。 *headers 可选。规定附加的标题,比如 From、Cc 以及 Bcc。 *应当使用 CRLF (\r\n) 分隔附加的标题。 *parameters 可选。对邮件发送程序规定额外的参数。 *注释:PHP 需要一个已安装且正在运行的[[邮件系统]],以便使邮件函数可用。所用的程序通过在 php.ini 文件中的配置设置进行定义。请在我们的 PHP Mail 参考手册阅读更多内容。 ===PHP简易E-Mail=== *通过 PHP 发送电子邮件的最简单的方式是发送一封文本[[email]]。 *在下面的例子中,我们首先声明变量($to, $subject, $message, $from, $headers),然后我们在 mail() 函数中使用这些变量来发送了一封 e-mail: <pre> <?php $to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?>PHP Mail Form </pre> *通过 PHP,您能够在自己的站点制作一个反馈表单。下面的例子向指定的 e-mail 地址发送了一条文本消息: <pre> <html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail( "someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html> </pre> *'''例子解释''': *首先,检查是否填写了邮件输入框 *如果未填写(比如在页面被首次访问时),输出 HTML 表单 *如果已填写(在表单被填写后),从表单发送邮件 *当点击提交按钮后,重新载入页面,显示邮件发送成功的消息 ==PHPE-mail注入== *首先,请看上一节中的[[PHP]]代码: <pre> <html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html> </pre> *以上代码存在的问题是,未经授权的用户可通过输入表单在邮件头部插入数据。 *假如用户在表单中的输入框内加入这些文本,会出现什么情况呢? <pre> someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com </pre> *与往常一样,mail() 函数把上面的文本放入邮件头部,那么现在头部有了额外的 Cc:, Bcc: 以及 To: 字段。当用户点击提交按钮时,这封 e-mail 会被发送到上面所有的地址! ===PHP 防止E-mail注入=== *防止e-mail注入的最好方法是对输入进行验证。 *下面的[[代码]]与上一节类似,不过我们已经增加了检测表单中email字段的输入验证程序: <pre> <html> <body> <?php function spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } } if (isset($_REQUEST['email'])) {//if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else {//send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html> </pre> *在上面的代码中,我们使用了PHP过滤器来对输入进行验证: *FILTER_SANITIZE_EMAIL 从字符串中删除电子邮件的非法字符 *FILTER_VALIDATE_EMAIL 验证电子邮件地址 *您可以在我们的 PHP 过滤器这一节中阅读更多有关过滤器的内容。 ==参考来源== *http://www.w3school.com.cn/php/php_secure_mail.asp [[category:PHP|P]] {{PHPup}}
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:PHPtop
(
编辑
)
模板:PHPup
(
编辑
)