提问人:Brian Brown 提问时间:7/1/2023 最后编辑:Peter MortensenBrian Brown 更新时间:7/23/2023 访问量:215
PHP / HTML 表单 - 在 Docker 容器的同一页面上显示数据,不打印
PHP / HTML form - show data on the same page in Docker container, does not print
问:
我想在Apache上有一个HTML/PHP简单的表单。我希望用户提交一些数据,然后这些数据应该在提交后显示在同一页面上。我想把它们都放在一个Docker容器里。
这可能是 Docker 问题,因为它适用于 localhost。
我的 Ubuntu 系统上安装了 PHP。但是,提交表单后,我看不到我提供的数据。
文件索引:.html
<?php
$message = "";
if(isset($_POST['SubmitButton'])){ // Check if form was submitted
$input = $_POST['inputText']; // Get input text
$message = "Success! You entered: ".$input;
}
?>
<html>
<body>
<form action="" method="post">
<?php echo $message; ?>
<input type="text" name="inputText"/>
<input type="submit" name="SubmitButton"/>
</form>
</body>
</html>
Docker文件
FROM webdevops/php:8.2
RUN apt update -y && apt upgrade -y
RUN apt install -y apache2
RUN apt install -y apache2-utils
RUN sudo a2enmod php8.2
WORKDIR /var/www/html
EXPOSE 80
COPY index.php /var/www/html/post
CMD ["apache2ctl", "-D", "FOREGROUND"]
答:
5赞
Abdulla Nilam
7/3/2023
#1
错误
当文件名以 . 结尾时,PHP 不会执行它应该是
.html
index.php
您正在使用
webdevops/php:8.2
的 PHP 映像,该映像已经具有 Apache 和 PHP。据我所知,这些行不通:
RUN apt install -y apache2 RUN apt install -y apache2-utils RUN sudo a2enmod php8.2
您正在将文件复制到一个名为不存在且似乎不需要的目录中
post
试试这个:
文件索引:.php
<?php
$message = "";
if(isset($_POST['SubmitButton'])){ //check if form was submitted
$input = $_POST['inputText']; //get input text
$message = "Success! You entered: ".$input;
}
?>
<html>
<body>
<form action="" method="post">
<?php echo $message; ?>
<input type="text" name="inputText"/>
<input type="submit" name="SubmitButton"/>
</form>
</body>
</html>
Docker文件
FROM webdevops/php-apache:8.2
WORKDIR /var/www/html
COPY index.php ./
EXPOSE 80
CMD ["supervisord"]
评论
0赞
Brian Brown
7/8/2023
Cant connect to 127.0.0.1:7004
0赞
Abdulla Nilam
7/8/2023
什么?从何而来?127.0.0.1:7004
7004
0赞
Peter Mortensen
7/23/2023
为什么要监督?它应该做什么?
0赞
Peter Mortensen
7/23/2023
可能相关:Docker 的 supervisord 替代方案
-4赞
Sreeram Nair
7/6/2023
#2
我看到在您的表单标签中,action 属性为空 ()。这将提交到它当前所在的同一 URL。action=""
将其更改为将表单数据提交到 PHP 脚本。action="index.php"
评论
0赞
Nico Haase
7/6/2023
请在您的答案中添加更多解释,以便其他人可以从中学习。如果这在本地主机上有效,但在使用 Docker 时不再有效,是什么让您认为您的提示解决了问题?另外,是什么让你认为它毕竟存在?OP 尚未共享任何此类文件index.php
0赞
Sreeram Nair
7/6/2023
共享的 docker 文件,说 COPY index.php /var/www/html/post,所以我认为使用了 index.php
0赞
Nico Haase
7/6/2023
请通过编辑将所有说明添加到您的答案中
0赞
DarkBee
7/6/2023
index.php
将是显示的默认页面,因此设置或将其留空不会有任何区别action="index.php"
1赞
NotTheDr01ds
7/23/2023
嗨,斯里拉姆·奈尔。您最近 11 个答案中的大部分或全部似乎可能全部或部分由 AI(例如 ChatGPT)编写。许多人也有评论表明他们在某些方面是错误的。请注意,这里不允许发布 AI 生成的内容。如果您使用 AI 工具来协助回答任何问题,我鼓励您将其删除。我们希望您能坚持下去,并通过发布您自己的优质内容继续成为我们社区的重要组成部分。谢谢!
评论
echo
$message