表单只是输出错误


Form is only outputting the errors

>我有一个简单的联系表格,客户将在其中放置他们的推荐,尽管在提交表格后,它会将我带到流程页面,这很好,因为感谢页面已实现。 但是提交后,它只是将我带到POSSES页面,而不是感谢页面。我找不到问题,可能需要你们的帮助

形式:

 <form action="includes/mail.php" method="post">
<table background="images/sequestrationreferral.jpg" height="408px" width="740px">
<tr>
<td width="80px" height="50px"><label>Name:</label></td>
<td><input class="input" type="text" name="name" width="225px" /></td>
</tr>
<tr>
<td width="80px" height="50px"><label>Email Address:</label></td>
<td><input class="input" type="text" name="email" width="225px" /></td>
</tr>
<tr>
<td width="80px" height="120px"><label>Referals:</label></td>
<td><textarea class="input" name="referals" cols="35" rows="5"></textarea><br /><br />Please use one per row?</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="Send referals" class="btn" /></td>
</table>
</form>

"进程"页:

<?
/* Edit these preferences to suit your needs */
  $mailto = 'marketing@loanro.co.za'; // insert the email address you want the form sent to
    $returnpage = '../thanks.php'; // insert the name of the page/location you want the user to be returned to
    $sitename = '[Loanro]'; // insert the site name here, it will appear in the subject of your email
/* Do not edit below this line unless you know what you're doing */
  $name = $_POST['name'];
  $email = $_POST['email'] ;
  $referals = stripslashes($_POST['referals']);
    if (!$name) {
        print("<strong>Error:</strong> Please provide your name.<br/><br/><a href='javascript:history.go(-1)'>Back</a>");
         exit;
    }
    if (!$email) {
        print("<strong>Error:</strong> Please provide an email address.<br/><br/><a href='javascript:history.go(-1)'>Back</a>");
         exit;
    }
    if (!$referals) {
        print("<strong>Error:</strong> Please provide your enquiry details.<br/><br/><a href='javascript:history.go(-1)'>Back</a>");
         exit;
    }
    if (!eregi("^[a-z0-9]+([-_'.]?[a-z0-9])+@[a-z0-9]+([-_'.]?[a-z0-9])+'.[a-z]{2,4}", $email)){
    print("<strong>Error:</strong> this email address is not in a valid format.<br/><br/><a href='javascript:history.go(-1)'>Back</a>");
         exit;
    }   
  $message = "'n$name submitted the following message:'n'n$enquiry'n'nTheir contact details are as follows:'n'nName: $name'nEmail Address: $email'n'n";
  mail($mailto, "$sitename Referal from $name", $message, "From: $email");
    header("Location: " . $returnpage);
?>

还有"谢谢"页面:

<article class="art-post art-article">

                <div class="art-postcontent art-postcontent-0 clearfix"><div class="art-content-layout layout-item-0">
    <div class="art-content-layout-row">
    </div>
</div>
<div class="art-content-layout-wrapper layout-item-4">
<div class="art-content-layout">
    <div class="art-content-layout-row">
    <div class="art-layout-cell layout-item-5" style="width: 75%" >
<p>Thank you for contacting up, we will get back to you as soon as possible.</p>

    </div>
    </div>
</div>
</div>
</div>

</article>

如果您的 Web 服务器配置为显示警告(或者您可以启用它们进行开发(,请提供它们。

您的header()呼叫似乎不起作用。如果在此调用之前有任何类型的输出,则通常就是这种情况。这可以是 php 脚本的开头<?标记之前的任何空格(空格、换行符等(,甚至可以是像 UTF-BOM 这样的不可见字符。如果您使用像Notepad++这样的编辑器,您可以检查文件是否以UTF编码保存,并确保它没有BOM。

php(即<?,?><?= 'something' ?>(标签有时会出现问题。我总是把完整的php标签(<?php ?><?php echo 'something' ?>(

而且最好将ob_start();放在任何输出之前,ob_end_clean();放在重定向之前。

干杯

你的代码看起来不错。位置标头可能由于 2 个原因而失败:

  1. 您的脚本 yust 做了一些输出,用于发送标头(可能是错误,或者只是看不见的迹象,用于您的<?php
  2. 位置标头应该是具有绝对 URL 的用户,也许您的相对路径有问题。

您可以将位置标题替换为:

$returnurl = "http://".$_SERVER["SERVER_NAME"]
           . ($_SERVER["SERVER_PORT"]!=80?":".$_SERVER["SERVER_PORT"]:"")
           . dirname($_SERVER["PHP_SELF"]) . "/"
           . $returnpage;
header("Location: " . $returnurl);

为了更好地区分成功和输入错误,您可以将脚本更改为:

<?
/* Edit these preferences to suit your needs */
  $mailto = 'marketing@loanro.co.za'; // insert the email address you want the form sent to
    $returnpage = '../thanks.php'; // insert the name of the page/location you want the user to be returned to
    $sitename = '[Loanro]'; // insert the site name here, it will appear in the subject of your email
/* Do not edit below this line unless you know what you're doing */
  $name = $_POST['name'];
  $email = $_POST['email'] ;
  $referals = stripslashes($_POST['referals']);
  $errors = array();
  if (!$name)      $errors[] = "Please provide your name.";
  if (!$email)     $errors[] = "Please provide an email address.";
  if (!$referals)  $errors[] = "Please provide your enquiry details.";
  if (!eregi("^[a-z0-9]+([-_'.]?[a-z0-9])+@[a-z0-9]+([-_'.]?[a-z0-9])+'.[a-z]{2,4}", $email)) {
    $errors[] = "this email address is not in a valid format.";
  }   
  if(count($errors) == 0)
  {
    $message = "'n$name submitted the following message:'n'n$enquiry'n'nTheir contact details are as follows:'n'nName: $name'nEmail Address: $email'n'n";
    mail($mailto, "$sitename Referal from $name", $message, "From: $email");
    $returnurl = "http://".$_SERVER["SERVER_NAME"]
               . ($_SERVER["SERVER_PORT"]!=80?":".$_SERVER["SERVER_PORT"]:"")
               . dirname($_SERVER["PHP_SELF"]) . "/"
               . $returnpage;
    header("Location: " . $returnurl);
  }
  else
  {
    echo "<strong>Errors:</strong>";
    echo "<ul><li>".implode("</li>'n<li>",$errors)."</li></ul>";
    echo "<a href='javascript:history.go(-1)'>Back</a>";
  }
?>

如果这仍然不起作用,请停止使用位置和执行:

readfile($returnpage);

相反。

顺便说一下,你的代码示例看起来不像完整的HTML页面,它们至少应该被包围

<html>
  <body>
  // Your content
  </body>
</html>