Php форма ничего не дает

0

Я новичок в php и пытаюсь сделать простую форму, которая отправляет данные формы на указанный адрес электронной почты. Я использовал этот скрипт здесь и менял его на свои нужды, но когда я его пробовал, он просто ничего не делает. Он перейдет на страницу 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 = "[email protected]";

$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();
?>
  • 1
    Пустой экран может означать, что произошла ошибка. Убедитесь, что php отобразит ошибку, добавив error_reporting(E_ALL); ini_set("display_errors", 1); в начало вашего сценария. Дайте мне знать, если появится сообщение об ошибке.
  • 1
    put <?php print_r($_POST); die(); ?> в самом верху страницы, чтобы увидеть, представлены ли значения вашей формы. Содержит ли напечатанный массив ключ mailadres?
Показать ещё 1 комментарий
Теги:

2 ответа

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);
?>

Вы должны удалить эти строки в рабочей среде, поскольку это риск безопасности.

  • 0
    Это тоже не так ..
  • 0
    Возможно, это не единственная ошибка, но это синтаксическая ошибка, и ее следует исправить. php выдаст фатальную ошибку, если будет синтаксическая ошибка.
Показать ещё 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();
?>
  • 0
    Я сделал все, что ты сказал, но он все еще делает то же самое ...
  • 0
    Итак, вы переходите на свою HTML-страницу, заполняете форму и нажимаете «Отправить»? И он перенесет вас на эту страницу PHP, и там ничего нет?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню