PHP联系人表单:收到空值,未更新div以获取传递成功消息

PHP联系人表单:收到空值,未更新div以获取传递成功消息,php,html,Php,Html,我的问题可能很简单,但我对PHP非常陌生,在阅读后试图将所有内容拼凑在一起,但遇到了一些问题。我已经阅读了这篇文章的可能副本,并尽可能地将这些解决方案放入我的代码中,但没有结果 目标: 名称和电子邮件验证不为空,且为电子邮件格式 详细信息发送到指定的电子邮件 mysqli escape和htmlspecialchars代码的基本清理了解PDO的存在,但希望坚持这一点 成功提交后,重新加载相同网站字段为空的页面,但其中包含指示已发送消息或错误的消息。我正在尝试headerLocation:。我不想

我的问题可能很简单,但我对PHP非常陌生,在阅读后试图将所有内容拼凑在一起,但遇到了一些问题。我已经阅读了这篇文章的可能副本,并尽可能地将这些解决方案放入我的代码中,但没有结果

目标:

名称和电子邮件验证不为空,且为电子邮件格式

详细信息发送到指定的电子邮件

mysqli escape和htmlspecialchars代码的基本清理了解PDO的存在,但希望坚持这一点

成功提交后,重新加载相同网站字段为空的页面,但其中包含指示已发送消息或错误的消息。我正在尝试headerLocation:。我不想介绍AJAX,因为我对它一无所知。这可能吗?我也读过关于使用action:保持在同一页面上的内容,但是如果我的action是,我该如何运行我的mail.php呢?还尝试了include:mail.php,或者将我的mail.php重命名为index.php,但仍然没有成功

当前面临的问题:

我确实收到了一封电子邮件,但字段为空,即虽然我在表单中输入了一些值,但没有反映输入。以下是我收到的价值观: 发件人:

电话:

等等

页面不直接指向页眉位置。但div未使用$success变量更新,即没有更新消息以显示在div中。 请参阅下面我的php和html文件: PHP:

HTML格式:

<form action="mail.php" method="POST">
            <ul class="contact">
                <li>
                <label for="Name">Name<span class="red">*</span></label>
                <p><input id="Name" name="Name" type="text" required/></p>

                </li>
                <li>
                <label for="Email">Email<span class="red">*</span></label>
                <p><input id="Email" name="Email" type="email" required/></p>
                </li>

                <li>
                <label for="Company">Company</label>
                <p><input id="Company" name="Company"/></p>
                </li>

                <li>
                <label for="JobTitle">Job Title</label>
                <p><input id="JobTitle" name="JobTitle"/></p>
                </li>

                <li>
                <label for="Phone">Phone</label>
                <p><input id="Phone" name="Phone"/></p>
                </li>

                <li>
                <label for="Message">Message</label>
                <p><textarea id="Message" wrap="soft" name="Message"></textarea></p>
                </li>

            </ul>
            <br>
            <p><input id="submit" type="submit" value="Send!" /></p>
            <div class="success"><? =$Success; ?></div>
        </form>
如果您能回答上述任何问题,我们将不胜感激。如果您能强调可能存在安全问题的其他方面,我们也将不胜感激。谢谢

此外,在执行sanitize$link$entry的建议后,我在电子邮件中收到变量的输入:公司和职务

因此,我进一步将所有变量的名称改为首字母大写,即$message改为$message,并在表单的输入“id”、“name”和“for”中将其对齐。之后,我设法接收电话和信息等附加变量的输入


目前,我在电子邮件中没有收到变量名称和电子邮件的值。我的php代码中的“if-else-if”部分可能有错误。将重新计算并更新。同时,如果有任何建议,请继续更新。谢谢你的帮助

正如@headmax所指出的,您还需要将link参数传递给sanitize函数

function sanitize ($link,  $entry) {

}
原因是如果不将其作为参数传递,$link变量将变得未定义。如果您在上有错误报告,您将在$link上收到通知

出于将来的目的,无论何时在开发环境中,都应将错误报告作为

error_reporting(E_ALL);//place this at the top of the script
编辑

为了显示成功消息并执行重定向,最好使用Ajax

setTimeOut();//use this to display the success message for a while(pass number of seconds)
然后使用javascript执行重定向

window.location.href ='URL';  
使用您的方法,只需将success变量声明为

$success = '';//add this before you use the variable

很高兴看到你自己尝试了什么来解决这个问题,这会告诉我们你在发布问题之前做了研究。当你尝试时,你也会学习。如果有人只是给你一个答案/解决方案,那一切都是徒劳的,我这样说是为了你的未来。然后,您可以编辑您的帖子,以包含可能失败的内容;即使这样,也表明了你的努力。请记住,我们总是乐于提供帮助。您在函数sanitize$entry change$entry=mysqli\u real\u escape\u string$link,$entry;谢谢@Fred ii-的建议。在这里执行建议之后,我编辑了我的问题,并做了进一步的编辑。很抱歉,我仍然在学习这个网站的工作原理,因为这是我的第一篇帖子感谢@headmax的推荐!感谢@Akintunde和headmax的帮助。更新后,它确实帮助了我的联系方式,但仍有一些问题没有解决。另外,我之前在php的顶部声明了success变量。i、 e.$NameErr=$EmailErr=$Success=;还将检查错误报告功能!谢谢
$success = '';//add this before you use the variable