Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax调用和表单提交后PHP Mailer脚本未完成_Javascript_Php_Jquery_Ajax_Forms - Fatal编程技术网

Javascript ajax调用和表单提交后PHP Mailer脚本未完成

Javascript ajax调用和表单提交后PHP Mailer脚本未完成,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我试图在使用AJAX提交表单之后调用php脚本。PHP脚本被调用,但除此之外什么也没有发生,没有收到电子邮件,没有错误消息,等等。但如果PHP文件是通过URL直接访问的,并且success属性正确执行表单重置,它将重定向到主页。蒂亚 HTML: PHP:*编辑:删除了用于测试目的的验证,但仍然无法工作 <?php $webmaster_email = "feedback@myDomain.com"; $index = "http://mydomain.com"; $email_addres

我试图在使用AJAX提交表单之后调用php脚本。PHP脚本被调用,但除此之外什么也没有发生,没有收到电子邮件,没有错误消息,等等。但如果PHP文件是通过URL直接访问的,并且success属性正确执行表单重置,它将重定向到主页。蒂亚

HTML:

PHP:*编辑:删除了用于测试目的的验证,但仍然无法工作

<?php
$webmaster_email = "feedback@myDomain.com";
$index = "http://mydomain.com";
$email_address = $_POST['email'];
$comments = $_POST['comment'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];

echo "$email_address";
echo "$comments";
echo "$fname";
echo "$lname";

/*function isInjected($str) {
    $injections = array('(\n+)',
        '(\r+)',
        '(\t+)',
        '(%0A+)',
        '(%0D+)',
        '(%08+)',
        '(%09+)'
    );
    $inject = join('|', $injections);
    $inject = "/$inject/i";
    if(preg_match($inject,$str)) {
        return true;
    }
    else {
        return false;
    }
}*/

if (!isset($_REQUEST['email'])) {
    header("Location: $index");
    exit;
}


elseif (empty($email_address) || empty($comments) || empty($fname)) {
    echo "<script type=\"text/javascript\">alert('Please fill in the required fields.');</script>";
    exit;
}

// If email injection is detected, redirect to the error page.
elseif (isInjected($email_address)){
    echo "<script type=\"text/javascript\">alert('Please, Try Again.')";
    exit;
}

// If we passed all previous tests, send the email then redirect to the thank you page.
else {
    mail("$webmaster_email", "Feedback Form Results", $comments, "From: $email_address");
    echo "<script type=\"text/javascript\">alert('Thank You for contacting us!')";
    exit;
}
?>

看起来您正在提交表单并执行AJAX调用。你必须阻止表单发布,并且只使用AJAX调用。不,这只是一个按钮,你的表单正在提交检入控制台AJAX响应成功并显示你提交的记录。我已经修改了操作代码,AJAX调用成功了…我想问题出在php代码中…只是为了测试,去掉所有的验证代码我删除了验证代码,它没有改变任何东西。在我的服务器上是否需要更改该文件的任何权限?
    $("#submit").on('click', function(){
        var fileName = document.location.pathname.match(/[^/]+$/),
            firstName = $('#first-name').val(),
            lastName = $('#last-name').val(),
            emailVal = $('#email').val(),
            comments = $('#comment').val();

        $.ajax({
            type: 'POST',
            url: '../script/mail.php',
            data: {fname:firstName, lname:lastName, email:emailVal, comment:comments, fileName:fileName},
            success: function(){
                $('form').each(function() {
                    this.reset();
                });
            }
        });
    });
<?php
$webmaster_email = "feedback@myDomain.com";
$index = "http://mydomain.com";
$email_address = $_POST['email'];
$comments = $_POST['comment'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];

echo "$email_address";
echo "$comments";
echo "$fname";
echo "$lname";

/*function isInjected($str) {
    $injections = array('(\n+)',
        '(\r+)',
        '(\t+)',
        '(%0A+)',
        '(%0D+)',
        '(%08+)',
        '(%09+)'
    );
    $inject = join('|', $injections);
    $inject = "/$inject/i";
    if(preg_match($inject,$str)) {
        return true;
    }
    else {
        return false;
    }
}*/

if (!isset($_REQUEST['email'])) {
    header("Location: $index");
    exit;
}


elseif (empty($email_address) || empty($comments) || empty($fname)) {
    echo "<script type=\"text/javascript\">alert('Please fill in the required fields.');</script>";
    exit;
}

// If email injection is detected, redirect to the error page.
elseif (isInjected($email_address)){
    echo "<script type=\"text/javascript\">alert('Please, Try Again.')";
    exit;
}

// If we passed all previous tests, send the email then redirect to the thank you page.
else {
    mail("$webmaster_email", "Feedback Form Results", $comments, "From: $email_address");
    echo "<script type=\"text/javascript\">alert('Thank You for contacting us!')";
    exit;
}
?>