【问题标题】:My web hosting company says there is something wrong with PHP code我的网络托管公司说 PHP 代码有问题
【发布时间】:2013-08-20 13:30:23
【问题描述】:

这是连接到contact.html页面的PHP,然后是感谢页面。我只是想要一个联系表格。它不会将文件识别为.php。我确实是这样保存的。

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $number = $_POST['number'];
    $message = $_POST['message'];
    $from = 'From:you'; 
    $to = 'me@hotmail.com'; 
    $subject = 'Hello';
    $human = $_POST['human'];

    $body = "From: $name\n E-Mail: $email\n Number: $number\n Message:\n $message";


if ($_POST['submit']) {
    if ($name != '' && $email != '') {
        if ($human == '4') {                 
            if (mail ($to, $subject, $body, $from)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        } 
    } else if ($_POST['submit'] && $human != '4') {
        echo '<p>You answered the anti-spam question incorrectly!</p>';
    }
    } else {
        echo '<p>You need to fill in all required fields!!</p>';
    }

  header("Location: thanks.html");

}

?>

【问题讨论】:

  • 标题前有回显
  • 文件是contact.html还是contact.php?应该是后者,您应该将表单操作设置为contact.phpmethod 属性为post。此外,在使用 PHP 的 header() 函数之前,您不能有任何输出。这包括任何 echo 结构。
  • 你能给我看看吗?如何做到这一点我不熟悉我仍在学习的 php。文件名为contact.html
  • @user2692442 如果您的.html 文件包含PHP 代码,那么它将不会运行,除非您告诉您的服务器将.html 文件视为PHP。即:在.htaccess 文件中,如果您希望.html 文件作为PHP 运行,请插入AddType application/x-httpd-php .html
  • @user2692442 创建一个名为check_server.php 的文件并将其插入并运行它,看看是否有任何东西&lt;?php phpinfo(); ?&gt;&lt;?php echo "Hello world"; ?&gt;

标签: php html mysql


【解决方案1】:

假设您希望从表单中运行它,您需要按如下方式设置 HTML 表单标签:

<form action="contact.php" method="post">

然后您应该将contact.html 重命名为contact.php(任何文本编辑器都应该能够轻松地做到这一点)。

最后,您使用的是 PHP 的 header() 函数,如果您在调用之前已将其输出到浏览器,则会导致错误。这包括使用 PHP 的 echo 结构。您的contact.php 文件应如下所示(并且与包含表单的 HTML 文件位于同一目录中):

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $number = $_POST['number'];
    $message = $_POST['message'];
    $from = 'From:you'; 
    $to = 'me@hotmail.com'; 
    $subject = 'Hello';
    $human = $_POST['human'];

    $body = "From: $name\n E-Mail: $email\n Number: $number\n Message:\n $message";


if ($_POST['submit']) {
    if ($name != '' && $email != '') 
    {
        if ($human == '4') 
        {                 
            if (mail ($to, $subject, $body, $from)) 
            { 
                header("Location: thanks.html");
            } 
            else 
            { 
                echo '<p>Something went wrong, go back and try again!</p>'; 
            } 
        } 
        else
        {
            echo '<p>You answered the anti-spam question incorrectly!</p>';
        }
    } 
    else 
    {
        echo '<p>You need to fill in all required fields!!</p>';
    }
}
?>

注意:我稍微修正了您的布局并更改了您使用的一些条件。第一个elseif 实际上是多余的,else 就足够了。

【讨论】:

    【解决方案2】:

    您写道这是一个名为 contact.html 的文件,或者您尝试连接到 contact.html - 这是正确的吗?你应该使用contact.php

    【讨论】:

    • 如果我使用contact.php,格式会是什么?结构。和 html 文档一样吗?我只是将其重命名为contact.php?
    • 一般来说,如果你把它命名为contact.php,你可以在里面使用普通的HTML,也可以使用PHP代码(不建议混合使用,但那是另外一回事了——它可以正常工作)。
    【解决方案3】:

    如果没有服务器配置,PHP 将不会在 .html 文件扩展名中执行(例如,如果您使用的是 Apache,则 .htaccess 文件中的指令)。

    由于您似乎拥有托管网络托管帐户,因此您可能无法自行设置。如果您愿意,我建议您询问您的托管服务提供商。如果没有,将文件重命名为具有 .php 文件扩展名应该可以。

    【讨论】:

    • 运行.html文件的.htaccess文件代码为AddType application/x-httpd-php .html
    【解决方案4】:

    尝试检查 php 是否正常工作:

    <?php phpinfo(); ?>
    

    如果你没有看到输出,你的 php 代码将不会被解析,可能是因为你的联系人站点有一个 *.html 结尾,它似乎需要一个 *.php 文件结尾才能被解析,

    如果您想使用扩展名 '*.html',您必须在您的网络服务器 - 配置文件中添加一些行,

    看看这个:maybe a solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2012-02-06
      • 2013-01-07
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多