@koliko

Выбрасывает в обработчик php, почему?

Понадобилось подключить форму, в php ноль, кое-как нашел PHPmaiiler, адаптировал под свои нужды, но проблема в том, что если я отправляю форму, она не приходит + выкидывает в обработчик, как это предотвратить, header location тоже не устраивает, хотя с ним все работает....

<?php 

require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';


$phone = $_POST['user_phone'];
$email = $_POST['form_checkbox_agree[]'];
// $phone = $_POST['btn-rui btn-rui_center'];

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.mail.ru';  																							// Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'секрет'; // Ваш логин от почты с которой будут отправляться письма
$mail->Password = 'секрет'; // Ваш пароль от почты с которой будут отправляться письма
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to / этот порт может отличаться у других провайдеров

$mail->setFrom('секрет'); // от кого будет уходить письмо?
$mail->addAddress('jadix47597@j24blog.com');     // Кому будет уходить письмо 
//$mail->addAddress('ellen@example.com');               // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Заявка с тестового сайта';
$mail->Body    = ' Пользователь оставил заявку, его телефон ' .$phone;
$mail->AltBody = '';



// if(!$mail->send()) {
//    echo 'Error';
// } else {
//    header('location: index.html');
// }
    
?>


Мож как-нибудь сделать чтоб через якорную ссылку как-то выбрасывало, на тоже самое место где форма, только не наглавную, вот так не работает header("Location: index.html#{$anc5}");
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
Порылся в старых проектах, нашёл вот это:
<?php
session_start();

function logWrite($data = "\n")
{
    file_put_contents("sendmail.log", strftime('%Y-%m-%d %H:%M:%S ') . $data . "\n", FILE_APPEND);
}
function logDump($var, $name = '')
{
    if (!empty($name)) $name = "$name: ";
    logWrite($name . var_export($var, true));
}

logWrite("\n===================\n");
logDump($_SERVER, 'SERVER');
logDump($_POST, 'POST');

if (stripos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === false ) {
    logWrite('invalid HTTP_REFERER');
    exit;
}

/** защита от CSRF-атак, для вас наверное не актуально
* if (!isset($_SESSION['token']) || !isset($_SERVER['HTTP_X_CSRF_TOKEN'])) {
*     logWrite('no token');
*     exit;
* }
* if ($_SESSION['token'] !== $_SERVER['HTTP_X_CSRF_TOKEN']) {
*     logWrite('invalid token');
*     exit;
* }
*/ 

/** здесь была валидация полей - её тоже вырезал  */

$eol = "\r\f";
$message = 'Телефон: ' . $_POST['user_phone'] . $eol;
$message .= 'email: ' . $_POST['form_checkbox_agree[]'] . $eol;

if (mail('aaaa@bbb.cc, 'order #...', $message)) {
    $result = [
        'success' => true,
        'errors' => [],
    ];
} else {
    $result = [
        'success' => false,
        'errors' => [
            'internal' => 'Internal error'
        ]
    ];
}

logDump($result, 'result');

$json = json_encode($result);
if ($json === false) {
    logWrite('json error');
    exit;
}
echo $json;


Вызывайте через ajax post-ом. Скрипт сохраняет лог в sendmail.log.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы