2

当我最初编写这个脚本时,站点设计不需要在 die() 函数之后执行 html。现在确实如此。我意识到我可以将 HTML 代码的结尾复制到每个 die() 语句中,但它包含一个 php 包含文件 (footer.inc.php),然后会被忽略。(这是我目前要使用的解决方法,因此页面看起来不错,但不包含页脚。)

我尝试将第一个序列中的 die() 函数切换为 if() 和 elseif() 函数,但随后它同时显示 die() 消息和指示电子邮件函数成功的电子邮件代码之后的消息。

我确信有一种方法可以让脚本只执行其中一个语句而不使用 die(),但我无法弄清楚。任何提示将非常感谢!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta name="google-site-verification" content="0QW3jKsbHBGLvnLgLIoSHRuxjHBUI_MMQ0wn9J-4eo4" />
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
 <link href="../stylesheet.css" rel="stylesheet" type="text/css" /> 
  <link rel="icon" href="../images/favicon.ico" type="image/jpg" />
<title>Center Court - Schedule a racquet pick-up</title>
</head>
<body>
<div id="container">

<div id="liquid-round">
    <div class="top"><span></span></div>
        <div class="center-content">

<div id="header">
<?php include("../header2.inc.php"); ?>
</div>
<div id="nav">
<?php include("../nav.inc.php"); ?>
</div>
    <div id="phpscreen">
<?php
    //retrieve details from POST submission
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $address = $_POST['address'];
    $city = $_POST['city'];
    $retrieval = $_POST['retrieval'];
    $needed = $_POST['needed'];
    $string = $_POST['string'];
    $outofstock = $_POST['outofstock'];
    $tension = $_POST['tension'];
    $scale = $_POST['scale'];
    $extras= $_POST['extras'];
    $notes = $_POST['notes'];

    //validate sumbitted data
    if (empty($name)){
    die('<p class="center">Please provide your name.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
    }

    if (empty($email)){
    die('<p class="center">Please provide your email.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
    }

    if (empty($phone)){
    die('<p class="center">Please provide your phone number.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
    }

    if (empty($address)){
    die('<p class="center">Please provide your address.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
    }
    if (empty($city)){
    die('<p class="center">Please provide your city.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
    }
    if (empty($needed)){
    die('<p class="center">Please provide the date and time you need your racquet.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
    }
    //formulate email message
    $to = 'centercourtstringing@yahoo.com';
    $from = 'centercourtstringing.com';
    $subject = 'Contact from centercourtstringing.com';
    $body = "
    Name: $name\r\n
    Email: $email\r\n
    Phone number: $phone\r\n
    Address: $address\r\n
    City: $city\r\n
    Retrieval method: $retrieval\r\n
    Needed by: $needed\r\n
    String type: $string\r\n
    Similar or upgrade OK: $outofstock\r\n
    Tension: $tension\r\n
    Unsure scale: $scale\r\n
    Extras: $extras\r\n
    Special requests or notes: $notes\r\n";
    if(mail($to, $subject, $body, "From $from")){
        echo '<p>Your pick-up has been requested. You should receive confirmation shortly via e-mail or phone. If you do not hear from us by the end of the day, please call Center Court Tennis Shop at 203-966-2543.</p><p class="center"><a href="http://centercourtstringing.com">Return to home page</a></p>';
    }else{
        die('<p>Sorry, there was a mail delivery error. please call Center Court Tennis Shop at 203-966-2543 to schedule your pick-up.</p><p class="center"><a href="http://centercourtstringing.com">Return to home page</a></p>');
        }
        ?>
        </div>

<div id="footer">
<?php include("../footer.inc.php"); ?>
</div> <!--end footer-->

</div><!--end center content-->

    <div class="bottom"><span></span></div>
</div><!--end liquid-round-->
</div><!--end container-->

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-18191457-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script></body> </html> 
4

3 回答 3

2

您可以构建一个$error变量并在尝试发送电子邮件之前对其进行检查。类似于以下内容:

$error = '';
//validate sumbitted data
if (empty($name)){
    $error .= '<p class="center">Please provide your name.</p>';
}

if (empty($email)){
    $error .= '<p class="center">Please provide your email.</p>';
}

// etc...

if (empty($error)) {
    //formulate email message
    $to = 'centercourtstringing@yahoo.com';
    $from = 'centercourtstringing.com';
    $subject = 'Contact from centercourtstringing.com';

    // etc...

    if (mail($to, $subject, $body, "From $from")) {
        echo '<p>Your pick-up has been requested...</p>';
    } else {
        die('<p>Sorry, there was a mail delivery error...');
    }
} else {
    echo $error;
    echo '<form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>';
}

// Rest of HTML
于 2011-07-06T00:00:45.130 回答
0

简单地不要使用 die(),因为它被编程为阻止你的整个脚本运行。相反,您应该使用echoprint方法在屏幕上显示内容。

例子:

<div id="phpscreen">
     <?
     //validate sumbitted data
     if (empty($name)) {
         echo '<p class="center">Please provide your name.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>';
     }
     else if (empty($email)) {
          ...
     }
     ....
     else {
         if(mail($to, $subject, $body, "From $from")) {
              ...
         } 
         else {
              ...
         }
     } ?>
</div>

然后对所有其他检查使用“else if”。否则,如果您未填写 10 个字段,您将显示 10 个表格。:)

于 2011-07-05T23:56:30.143 回答
0

将您的if邮件发送语句更改为if-elseif-else

//validate sumbitted data
if (empty($name)){
    echo('<p class="center">Please provide your name.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
}
elseif (empty($email)){
    echo('<p class="center">Please provide your email.</p> <form><p class="center"><input type="button" value="Go back" onClick="history.go(-1);return true;"> </p></form>');
}
//... other validation conditionals...

//None of the above conditionals are true, send the message.
else
{

   $to = 'centercourtstringing@yahoo.com';
    $from = 'centercourtstringing.com';
    $subject = 'Contact from centercourtstringing.com';
    $body = "
    Name: $name\r\n
    Email: $email\r\n
    Phone number: $phone\r\n
    Address: $address\r\n
    City: $city\r\n
    Retrieval method: $retrieval\r\n
    Needed by: $needed\r\n
    String type: $string\r\n
    Similar or upgrade OK: $outofstock\r\n
    Tension: $tension\r\n
    Unsure scale: $scale\r\n
    Extras: $extras\r\n
    Special requests or notes: $notes\r\n";
    if(mail($to, $subject, $body, "From $from")){
        echo '<p>Your pick-up has been requested. You should receive confirmation shortly via e-mail or phone. If you do not hear from us by the end of the day, please call Center Court Tennis Shop at 203-966-2543.</p><p class="center"><a href="http://centercourtstringing.com">Return to home page</a></p>';
    }else{
        die('<p>Sorry, there was a mail delivery error. please call Center Court Tennis Shop at 203-966-2543 to schedule your pick-up.</p><p class="center"><a href="http://centercourtstringing.com">Return to home page</a></p>');
        }
}
于 2011-07-06T00:07:03.540 回答