Что-то не так с моим кодом здесь? PHP mail () - PullRequest
0 голосов
/ 11 июля 2011

Серьезно.Моя хостинговая компания говорит, что с моим Php-кодом что-то не так.Я не получаю никаких ошибок от них, и они говорят, что это не мой CSS.Пожалуйста, помогите.

    <?php

/* Subject and Email Variables */

    $emailSubject = 'Bookem danno!';
    $webMaster = 'info@mywebsite.com';

/* Gathering Data Variables */

    $nameField = $_POST['name'];
    $cellField = $_POST['cell'];
    $emailField = $_POST['email'];
    $dateField = $_POST['date'];
    $timeField = $_POST['time'];
    $lengthField = $_POST['length'];
    $inoutField = $_POST['inout'];
    $seenbeforeField = $_POST['seenbefore'];
    $detailsField = $_POST['details'];
    $p411Field = $_POST['p411'];
    $datecheckField = $_POST['datecheck'];
    $tobField = $_POST['tob'];
    $terField = $_POST['ter'];
    $otherField = $_POST['other'];
    $screennameField = $_POST['screenname'];
    $companyField = $_POST['company'];
    $worknoField = $_POST['workno'];
    $switchboardnoField = $_POST['switchboardno'];
    $memoField = $_POST['memo'];
    $subscribeField = $_POST['subscribe'];

    $body = <<<EOD
<br><hr><br>
Name: $name <br>
Cellphone: $cell <br>
Email: $email <br>
Date: $date <br>
Time: $time <br>
Length of appointment: $length <br>
Incall Outcall: $inout <br>
Have I seen you before: $seenbefore <br>
Details: $details <br>
P411: $p411 <br>
Datecheck: $datecheck <br>
TOB: $tob <br>
TER: $ter <br>
Other: $other <br>
Screen Name: $screenname <br>
Company: $company <br>
Direct Line: $workno <br>
Switchboard: $switchboardno <br>
Memo: $memo <br>
Subscribe Me: $subscribe <br>
EOD;

    $headers = "From: $email\r\n";
    $headers .= "Content-type: text/html\r\n";
    $success = mail($webMaster, $emailSubject, $body, $headers);

echo "$result";


?>

Ответы [ 3 ]

1 голос
/ 11 июля 2011

Вы успешно используете несколько переменных, которые вы никогда не определяете (и отбрасываете некоторые переменные, которые вы фактически установили). Это означает, что вы пишете код PHP, в то время как в отчете об ошибках установлено скрытие уведомлений (или даже в нем скрыты все сообщения об ошибках). Какова бы ни была ваша проблема (вы на самом деле не говорите), вы инструктируете PHP не уведомлять вас. Читать это: http://es2.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

1 голос
/ 11 июля 2011

гм.Вы не используете ни одну из переменных, которые вы создали.Например, сначала вы говорите это:

$emailField = $_POST['email'];

И затем вы говорите это:

$headers = "From: $email\r\n";

Нет переменной с именем $email.Один называется $emailField, но вы этим не пользуетесь.Фактически, ВСЕ переменные из вашего $_POST в конце переименовываются в «Поле», а затем вы пытаетесь обратиться к ним позже, без части «Поле».Не будет работать.

Кроме того, у вас есть уязвимость в этом коде.Посмотрите:

$headers = "From: $email\r\n";

Вы предполагаете, что $ email является хорошим безопасным значением.Предположим, кто-то заполняет вашу форму и сообщает, что его адрес электронной почты 0wned@example.com\r\nBcc: emai1@example.net, email2@example.org, etc..., что заставляет ваш почтовый сервер отправлять сотни или тысячи электронных писем.

Спамер может сделать это ради рассылки спама -без необходимости поддерживать свой собственный почтовый сервер.

Скучающий и злонамеренный человек может сделать это просто ради того, чтобы увидеть, что ваш домен занесен в черный список как спамер.

Неэтичный корпоративный конкурент может сделать это длябросьте гаечный ключ в ваши процедуры заказа в надежде вытеснить вас из бизнеса.Я проклят с хорошим воображением ...

Сделайте себе одолжение и попробуйте это:

$email = str_replace( "\r\n", '', $_POST['email'] );

Это исключит любые потенциальные пары CR / LF, так что никто не сможет ввести ихсобственные заголовки в вашу электронную почту.

0 голосов
/ 11 июля 2011

$ headers. = "Content-type: text / html; charset = iso-8859-1 \ r \ n";замените это существующим заголовком .. я не уверен, но это может помочь вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...