PHP 代码未在表单提交时执行

问题描述 投票:0回答:2

问题:

我已经创建了一个简单的 Web 服务器,其中包含由 google 云服务托管的 apache,但我很难弄清楚如何在提交表单时执行我的 PHP 代码。


目标:

我希望用户能够在表单中输入一些信息并将其发送到服务器。从那里,服务器将运行一些 PHP 代码并将信息写入同一目录中的文件中。


现在如何运作:

当我提交表单而不是执行操作时,它只是在浏览器中将文件作为文本文档打开。

Redirected after form submission


Main.html 中的表单

<form action="processForm.php" method="POST">
      Spotify URI: <input type="text" name="uri">
      <br/>
      Description: <input type="text" name="description">
      <br/>
      <input type="submit">
</form>

processForm.php

<?php
if(isset($_POST['uri']) && isset($_POST['description'])) {
    $data = $_POST['uri'] . '-' . $_POST['description'] . "\n";
    $ret = file_put_contents('data.txt', $data, FILE_APPEND | LOCK_EX);
    if($ret === false) {
        die('There was an error writing this file');
    }
    else {
        echo "$ret bytes written to file";
    }
}
else {
   die('no post data to process');
}

我不认为这是 PHP 安装不当的问题。当我跑步时

php -v
它会回响

PHP 5.6.29-0+deb8u1 (cli) (built: Dec 13 2016 16:02:08) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies


php html apache google-cloud-platform
2个回答
0
投票

我也遇到过这个问题。 我让 phpinfo() 工作,但表单提交只是以纯文本形式给出 PHP,而不是执行。 Funk 四十九人的想法是正确的。 从 file:///DocumentRoot/Main.html(其中 DocumentRoot 是您计算机上的任何内容)开始,PHP 不会执行。 但从 localhost/Main.html 来看,确实如此。 这是完全相同的文件,但浏览器处理表单的方式不同。


0
投票

这是一个非常古老的话题,但我仍然没有在这里找到答案。我最近也遇到了同样的问题。问题原来是我的服务器没有运行 PHP 文件。

这是我的问题:

我有一个

index.html
文件,我想在我的本地主机上提供它,所以我使用了 NodeJS 的服务包。 我有一个
contact.php
文件用于通过 AWS SMTP 发送电子邮件,但是当在我的表单中调用它时,它只返回纯文本。 我尝试使用 ChatGPT 几个小时但没有成功,然后我发现我的 npm 服务器无法读取
.php
文件。

解决方案:我通过执行以下操作在我的

contact.php
文件的文件夹中提供了 PHP 服务器:

php -S localhost:<port_number>

我允许来自我的 npm 服务器的跨源请求,并且我在 HTML 表单中调用此 API,如下所示:

<form action="http://localhost:<port_number>/contact.php" method="post">

之后一切都很好:)

© www.soinside.com 2019 - 2024. All rights reserved.