Php表单什么都没有

时间:2014-03-04 15:34:08

标签: php html

我对php很新,我正在尝试制作一个将表单数据邮寄到指定邮件地址的简单表单。我使用了this script here并根据我的需要进行了修改,但是当我尝试它时它什么也没做。它将转到php页面,但没有其他任何事情发生,页面是空的。

这是我的HTML表单:

<form class="contact" name="contact" method="post" action="./files/php/contact_send.php">
<table id="form">
    <tr>
        <td class="data-right"><label for="naam"><b>NAAM</b></label></td>
        <td class="data-left">
            <input type="text" name="naam" size="50" style="border-style:inset"/>
        </td>
    </tr>
    <tr>
                    <td class="data-right"><label for="mailadres"><b>E-MAILADRES</b></label></td>
        <td class="data-left">
            <input type="text" name="mailadres" size="50" style="border-style:inset"/>
        </td>
    </tr>
    <tr>
        <td class="data-right"><label for="boodschap"><b>BOODSCHAP</b></label></td>
        <td class="data-left">
            <textarea name="boodschap" cols="39" rows="4" style="border-style:inset"></textarea>
        </td>
    </tr>
</table>
<input type="image" src="./files/img/stuur.png" 
                onmouseover="this.src='./files/img/stuur-hover.png'"
                onmouseout="this.src='./files/img/stuur.png'"
                alt="Stuur" width="150px" name="submit" value="Submit" />
</form>

和我的PHP代码:

<?php
if(isset($_POST['mailadres'])) {

// CHANGE THE TWO LINES BELOW
$email_to = "blabla@gmail.com";

$email_subject = "Contact";


function died($error) {
    // your error code can go here
    echo "Het spijt ons maar er is iets fout gelopen bij het versturen van het formulier";
    echo "Hieronder zijn de fouten weergegeven:<br /><br />";
    echo $error."<br /><br />";
    echo "Verbeter de fouten en probeer opnieuw.<br /><br />";
    die();
}

// validation expected data exists
if(!isset($_POST['naam']) ||
    !isset($_POST['mailadres']) ||
    !isset($_POST['boodschap'])) {
    died('Het spijt ons maar het lijkt er op dat er iets mis is gelopen met de gegevens die u heeft ingevuld.');       
}

$naam = $_POST['naam']; // required
$mailadres = $_POST['mailadres']; // required
$boodschap = $_POST['boodschap']; // required

$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$mailadres)) {
    $error_message .= 'Het e-mailadres dat u heeft opgegeven is geen geldig e-mailadres.<br />';
}

$naam_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($naam_exp,$naam)) {
    $error_message .= 'De naam die u heeft opgegeven is geen geldige naam.<br />';
}
if(strlen($boodschap) < 5) {
    $error_message .= 'De opgegeven boodschap is niet lang genoeg, gelieve minstens 5 letters te gebruiken.<br />';
}
if(strlen($error_message) > 0) {
    died($error_message);
}
$email_message = "Formulier details:\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$email_message .= "Naam: ".clean_string($naam)."\n";
$email_message .= "E-mail: ".clean_string($mailadres)."\n";
$email_message .= "Boodschap: ".clean_string($boodschap)."\n";


// create email headers
$headers = 'From: '.$mailadres."\r\n".'Reply-To: '.$mailadres."\r\n" .'X-Mailer: PHP/' phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>
    Bedankt om ons te contacteren. We proberen zo spoedig mogelijk met u contact op te nemen.
<?php
}
die();
?>

2 个答案:

答案 0 :(得分:1)

此行有语法错误:

$headers = 'From: '.$mailadres."\r\n".'Reply-To: '.$mailadres."\r\n" .'X-Mailer: PHP/' phpversion();

你在phpversion()的字符串连接中忘了一个点。将其更改为:

$headers = 'From: '.$mailadres."\r\n".'Reply-To: '.$mailadres."\r\n" .'X-Mailer: PHP/'. phpversion();

你得到一个空屏幕的原因是因为php可能没有显示错误。这是一项安全措施。您可以通过将下一行添加到脚本顶部来强制php报告并显示错误:

<?php
    error_reporting(E_ALL); 
    ini_set("display_errors", 1);
?>

您应该在生产环境中删除这些行,因为它存在安全风险。

答案 1 :(得分:0)

替换:

if(!isset($_POST['naam']) ||
!isset($_POST['mailadres']) ||
!isset($_POST['boodschap'])) {
  died('Het spijt ons maar het lijkt er op dat er iets mis is gelopen met de gegevens die u heeft ingevuld.');       
}

使用:

if ( (!isset($_POST['naam'])) ||
(!isset($_POST['mailadres'])) ||
(!isset($_POST['boodschap'])) ) {
  died('Het spijt ons maar het lijkt er op dat er iets mis is gelopen met de gegevens die u heeft ingevuld.');       
}

你遗漏了很多这个陈述的括号。

另外,更改底部:

?>
  Bedankt om ons te contacteren. We proberen zo spoedig mogelijk met u contact op te nemen.
<?php
}
die();
?>

要:

  echo "Bedankt om ons te contacteren. We proberen zo spoedig mogelijk met u contact op te nemen.";
}

die();
?>