单击“无法从PHP表单中获取值”;提交;

单击“无法从PHP表单中获取值”;提交;,php,forms,Php,Forms,我是PHP新手,正在尝试使用HTML和PHP创建一个简单的表单。我正在使用Apache Netbeans和XAMPP在Google Chrome上运行PHP文件。代码如下: <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>An exam

我是PHP新手,正在尝试使用HTML和PHP创建一个简单的表单。我正在使用Apache Netbeans和XAMPP在Google Chrome上运行PHP文件。代码如下:

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>An example website</h1>
        <p>This is an example website to test HTML & PHP</p>
        <form action="myform.php" method="post">
            Name: <input type="text" name="name"><br>
            <input type="submit" name="formSubmit" value="Submit">
        </form>a
        <?php
        if($_POST['formSubmit'] == "Submit") {
            echo $_POST['name'];
        }                 
        ?>
    </body>
</html>

一个示例网站
这是一个测试HTML和PHP的示例网站

名称:
A.
因此,我在HTML页面上创建了一个表单,并试图打印我在单击Submit按钮时键入的值。我肯定我在这里遗漏了一些基本的东西,但它不起作用,我也不知道为什么。下面是加载页面并在表单字段中键入我的姓名时发生的情况:

以下是文本中上述图像中的错误:

注意:第20行的C:\xampp\htdocs\TestPHP\index.php中未定义的索引:formSubmit

然后,当我单击“提交”按钮时,会发生以下情况:

以下是文本中上述图像中的错误:

找不到对象!在此服务器上找不到请求的URL。这个 参考页面上的链接似乎错误或过时。请 将错误告知该页面的作者

如果您认为这是服务器错误,请联系网站管理员

错误404 localhost Apache/2.4.43(Win64)OpenSSL/1.1.1g PHP/7.4.6


有人能澄清一下这里实际发生了什么,以及我需要做什么才能获取表单字段中输入的值吗?

第一次运行脚本时,表单尚未提交。因此,有多种方法可以检查PHP脚本是否作为提交的结果运行,这是其中之一

if(isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {
第二个错误可能是因为您试图使用
action=“myform.php”

您向我们展示的脚本名为
myform.php
,如果不是,那么您可以像这样将参数留空

action=""

它将导致运行此脚本以处理表单数据

当脚本第一次运行时,表单尚未提交。因此,有多种方法可以检查PHP脚本是否作为提交的结果运行,这是其中之一

if(isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {
第二个错误可能是因为您试图使用
action=“myform.php”

您向我们展示的脚本名为
myform.php
,如果不是,那么您可以像这样将参数留空

action=""

这将导致运行此脚本来处理表单数据

这是因为您已将表单操作设置为myform.php,但不存在myform.php页面

如果要在同一页上打印名称,请将表单操作设置为空白

并将您的php代码替换为

<?php
        if(isset($_POST['formSubmit'])) {
            echo $_POST['name'];
        }                 
?>

这是因为您已将表单操作设置为myform.php,但不存在myform.php页面

如果要在同一页上打印名称,请将表单操作设置为空白

并将您的php代码替换为

<?php
        if(isset($_POST['formSubmit'])) {
            echo $_POST['name'];
        }                 
?>

这里有一些不同的问题

首先,在未设置的变量的“通知”中,这是因为您试图在将任何内容发布到页面之前检查POST变量的值

您可以通过检查是否先按以下方式设置该值来克服此问题:

if (isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {
由于启用了E_通知,您会收到上面的错误消息-有关PHP文档的更多信息,请参阅

其次,您的表单指向一个不存在的页面。看起来您的表单和检查post值的部分位于
index.php
上,但是您的表单指向
myform.php


你需要更新你的
这里有一些不同的问题

首先,在未设置的变量的“通知”中,这是因为您试图在将任何内容发布到页面之前检查POST变量的值

您可以通过检查是否先按以下方式设置该值来克服此问题:

if (isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {
由于启用了E_通知,您会收到上面的错误消息-有关PHP文档的更多信息,请参阅

其次,您的表单指向一个不存在的页面。看起来您的表单和检查post值的部分位于
index.php
上,但是您的表单指向
myform.php


如果要在可以使用的同一页面上提交数据,则需要更新


    <form method="post" action="<?=$_SERVER['PHP_SELF'];?>">






如果要在同一页上提交数据,可以使用


    <form method="post" action="<?=$_SERVER['PHP_SELF'];?>">






所以你的回答和@RiggsFolly的都帮助我解决了这个问题,我很乐意接受这两个答案。我之所以接受你的解释,是因为详细的解释帮助我理解了代码出错的原因。谢谢你们两位的快速回答!所以你的回答和@RiggsFolly的都帮助我解决了这个问题,我很乐意接受这两个答案。我之所以接受你的解释,是因为详细的解释帮助我理解了代码出错的原因。谢谢你们两位的快速回答!