【问题标题】:PHP script not executing upon HTML Form 'Submission'PHP 脚本未在 HTML 表单“提交”时执行
【发布时间】:2012-06-06 17:19:17
【问题描述】:

我正在构建一个 HTML 格式的网站表单,我想从用户那里收集信息,并将其存储在 MySQL 中。但是,当我输入信息后提交表单时,没有执行 PHP 脚本。它只是以原始形式显示 PHP 脚本。在浏览器中,它会下载 PHP 文件。

一开始我以为这是我的 MySQL、PHP、Apache 配置的问题,但是在按照this 一步步操作之后,我仍然无法执行 PHP 脚本。

我的表单标题如下所示:

<form id="form-settings" method="post" action="file.php">

file.php 是我要在提交时执行的脚本。

这是我的 PHP 脚本:

<?php
error_reporting(E_ALL);

$link = mysql_connect("localhost","username","password");

if (!$link) 
{
       die('Not connected : ' . mysql_error());
}

mysql_select_db("mysql", $link) or die("Unable to select database");

$var1=$_POST['var1'];
$var2=$_POST['var2'];
$var3=$_POST['var3'];
$var4=$_POST['var4'];
$var5=$_POST['var5'];

$query = "INSERT INTO table VALUES ('','$var1','$var2','$var3','$var4','$var5')";
mysql_query($query);

mysql_close($link); ?>

我可以从终端执行 PHP 文件。我可以查询我的 MySQL 表并在其中输入信息,但是当我尝试通过 HTML 表单运行它时,它不起作用。 Vars 是从 HTML 表单中提取的值。任何建议将不胜感激。很明显,php没有被识别,但是这个问题是从哪里来的呢?

【问题讨论】:

  • 小题外话,你最好不要使用mysql_函数,最好使用PDO
  • php 文件存放在哪里,您如何在浏览器中访问它?
  • 你能发布form标签的完整HTML内容吗?
  • php文件和html文件在同一目录
  • @PraveenKumar 我不认为这是表单的问题,似乎只是浏览器读取 php 脚本

标签: php mysql html forms apache


【解决方案1】:

(我会将此作为评论发布,但我不能因为我的业力太少......)

查看日志文件,尤其是错误日志文件。它们可能在 /var/log/apache2 或其他地方。看看有没有问题?

您的 phpinfo() 脚本是否与其他脚本位于同一目录中?您是否使用相同的主机名访问脚本? (例如 127.0.0.1 与 localhost?)

【讨论】:

  • 我的 phpinfo() 脚本位于 /Library/WebServer/Documents 目录中,我通过 localhost/test.php 在浏览器中运行它
  • 澄清一下:您的 HTML 文件和触发错误的 php 脚本位于同一目录中,您还可以通过 localhost/file.php 访问它?
  • hmmmm,不,不同的目录,让我试试
  • 我正在使用我桌面上的一个文件夹来运行这个东西,其中包含所有必要的文件。我需要把它放在别的地方吗?
  • 不一定,但假设您按照说明进行操作,则桌面文件夹中未设置必要的设置(如 AllowOverride 指令)。您还需要为您的桌面文件夹设置它们。
【解决方案2】:

您确定您的网络服务器支持 PHP 吗?

如果只是从服务器提供源代码,似乎 PHP 支持不可用。您应该联系您的网络托管服务商。也可以检查其他文件扩展名。

如果您有权访问配置,请为 apache 安装 php 模块。

【讨论】:

  • 我的网络服务器确实支持 php,因为我可以运行 phpinfo(); ?> 我的浏览器中的脚本。
  • 其实可以和 而不是 phpinfo(); ?> 但这是我可以在 php.ini 文件中更改的内容,对吗?
  • 是的,可以禁用短标签。这真的很奇怪,您是否限制操作获取或类似的东西?您使用 .htaccess 文件吗?如果是,请将其添加到您的问题中。
  • 没有使用 .htaccess 文件,我无法访问它
【解决方案3】:

其中一个 Apache 配置文件应包含以下指令:

AddHandler php5-script .php

【讨论】:

  • 我应该在 .conf 文件的哪个位置添加这个?
  • 全局或在特定目录块内。但实际上,如果你能够在浏览器中执行 phpinfo(),则说明 PHP 已经启用。
【解决方案4】:

好的,在 PHP 文件中获取这些:

$var1=$_POST['var1'];
$var2=$_POST['var2'];
$var3=$_POST['var3'];
$var4=$_POST['var4'];
$var5=$_POST['var5'];

您的表单必须包含以下内容:

<form method="post" action="file.php">
    <input type="text" name="var1" />
    <input type="text" name="var2" />
    <input type="text" name="var3" />
    <input type="text" name="var4" />
    <input type="text" name="var5" />
    <input type="submit" value="Submit" />
</form>

如果您的表单是这种情况,我的意思是输入中的name 属性,您得到的输出是什么?你得到未解析的 PHP 文件???

【讨论】:

  • 是的,表单的格式就是这样,php文件在浏览器中运行时会下载,并在我的IDE中以文本形式简单显示,我假设浏览器只是无法识别 php 格式。我的 php 文件中是否需要一些标头?
猜你喜欢
  • 2017-05-20
  • 2012-08-16
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2013-04-19
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多