16.3 通过电子邮件发送表单数据
如果不想为服务器端脚本操心,并且能够处理未经格式化(或未经脚本预处理)的数据,可以选择通过电子邮件发送访问者的数据,如图16.3.1~图16.3.4所示。
- ...
- <body>
- <?php
- //这是一个非常简单的PHP脚本……
- if (empty($_POST)) {
- print "<p>No data was submitted.</
- p>";
- print "</body></html>";
- exit();
- }
- function clear_user_input($value) {
- if (get_magic_quotes_gpc()) $value=stripslashes($value);
- $value= str_replace( "\n", '', trim($value));
- $value= str_replace( "\r", '', $value);
- return $value;
- }
- $body ="Here is the data that was submitted:\n";
- foreach ($_POST as $key => $value) {
- $key = clear_user_input($key);
- $value = clear_user_input($value);
- if ($key=='extras') {
- if (is_array($_POST['extras']) ){
- $body .= "$key: ";
- $counter =1;
- foreach ($_POST['extras'] as $value) {
- //除了最后一个元素,都应该添加逗号
- 和空格
- if (sizeof($_POST['extras']) == $counter) {
- $body .= "$value\n";
- break;}
- else {
- $body .= "$value, ";
- $counter += 1;
- }
- }
- } else {
- $body .= "$key: $value\n";
- }
- } else {
- $body .= "$key: $value\n";
- }
- }
- extract($_POST);
- $email = clear_user_input($email);
- $first_name = clear_user_input ($first_name);
- $from='From: '. $email . "(" . $first_name . ")" . "\r\n" . 'Bcc: yourmail@yourdomain.com' . "\r\n";
- $subject = 'New Profile from Web Site';
- mail ('yourmail@yourdomain.com',
- $subject, $body, $from);
- ?>
- <p>Thanks for your signing up!</p>
- </table>
- </body>
- </html>
图16.3.1 这是用于通过电子邮件发送数据的脚本。可以在本书的配套网站找到这段脚本的带注释版本
图16.3.2 除了对action
字段进行了更新,这个表单与图16.1.3是一样的
图16.3.3 让访问者知道刚刚发生了什么总是一个好主意
图16.3.4 这是表单提交后收到的电子邮件
通过电子邮件发送数据的步骤
输入
。
输入
action="emailform.php"
,这里的emailform.php
是将数据发送到电子邮件地址的脚本。输入
>
。根据从16.5节开始讲解的知识,创建表单的内容。
输入
。
提示 可以要求访问者输入两遍电子邮件地址,然后让脚本对这两个字段进行比较,如果不一致就返回错误。这种验证可以防止输入错误,这些错误会导致收不到表单数据。
提示 可以在本书的配套网站找到脚本代码(www.bruceontheloose.com/htmlcss/exam-ples/)。你可以在自己的网站上使用该脚本。
提示 如果这段脚本在你的服务器上不起作用,这可能是因为你的服务器没有安装PHP。请联系你的Web主机提供商并请求帮助(或查看他们的支持页面)。