0

问题如下:

文件 1 的名称为:Lesson 17_Forms - Simple Form.php
,文件 2 的名称为:Lesson 17_Forms - Process.php

文件1的内容如下:

<html>
    <title>Lesson 17_Forms - Simple Form</title>
    <head>
        <center><h1>Lesson 17_Forms - Simple Form</h1></center>
    </head>

    <body>
    <form action= "Lesson 17_Forms - Process.php" method="post">
        Username: <input type="text" name="username" value="" />
        <br />
        Password: <input type="password" name="password" value="" />
        <br />
        <input type="submit" name="submit" value="Submit" />
    </form>
    </body>
</html>

文件2的内容:

<html>
    <title>Lesson 17_Forms - Process</title>
    <head>
        <center><h1>Lesson 17_Forms - Process</h1></center>
    </head>

    <body>
        <?php
            // Ultra-simple form processing
            // Just retrieve the value and return it to the browser

            $username = $_POST['username'];
            $password = $_POST['password'];

            echo "{$username}: {$password}";
        ?>
    </body>
</html>

两个文件都在同一个目录中,当我尝试通过单击提交按钮来处理表单时,我收到以下错误:

找不到对象!

在此服务器上找不到请求的 URL。引用页面上的链接似乎是错误的或过时的。请将该错误通知该页面的作者。

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

错误 404

本地主机 2012 年 5 月 12 日星期六 02:40:39 PM EEST Apache/2.2.21 (Unix) DAV/2 mod_ssl/2.2.21 OpenSSL/1.0.0c PHP/5.3.8 mod_apreq2-20090110/2.7.1 mod_perl/2.0.5 Perl/v5.10.1

非常感谢任何建议。

4

3 回答 3

2

确保两个文件都在同一个目录中。此外,消除文件名中的任何空格,虽然有效,但它们会引起巨大的麻烦。所以命名你的文件更像:lesson17_forms_process.php.

此外,经过一些修改,这是我得到的代码:

<?php

//Initialize variables
$fields_set = false;
$username = "";
$password = "";

//Validity check
if (isset($_POST['username']) && isset($_POST['password'])) {
    $fields_set = true;
    $username = $_POST["username"];
    $password = $_POST["password"];
}

?>
<html>
<head>
    <title>Lesson 17_Forms - Process</title>
</head>

<body>
<h1 style="text-align: center;">Lesson 17_Forms - Process</h1>

<?php

//Display results if validity passed, or error in case it didn't.
if ($fields_set) {
    echo "{$username}: {$password}";
}
else {
    echo "Error! username or password not set!";
}
?>
</body>
</html>

几点

  • 在开始发送 HTML 之前,我会处理所有表单数据。尽可能分离逻辑和显示。
  • h1从 中删除了元素head并将其放置在body(它所属的位置)中。所有页面内容都必须进去body
  • 我删除了展示元素<center>并用 CSS 替换了它。
  • 我在处理之前验证输入。
  • 如果表单无效,我会显示错误。
于 2012-05-12T12:11:05.520 回答
2

url 中不允许有空格 -> 将名称更改为 simple_form.php 和 process.php。

或者,如果您想在名称中保留空格,则在将其用作 url 时将所有空格替换为 '%20'。

或者最好的选择是使用 urlencode -> 它会自动将所有不允许的字符替换为其 Web 可接受的占位符。

<form action=<?php echo '"'.urlencode("Lesson 17_Forms - Process.php").'"'; ?> method="post">
于 2012-05-12T12:14:01.533 回答
1

我将使用您现有的代码,并对其进行修改。使用新文件名。我也更正了您的 HTML。

创建一个名为:form.php的文件,插入以下代码:

<html>
    <head>
        <title>Submit form</title>
    </head>

    <body>
        <center><h1>Submit form</h1></center>

        <form action="process.php" method="post">
            Username:<input type="text" name="username" value="" />
            <br />
            Password: <input type="password" name="password" value="" />
            <br />
            <input type="submit" name="submit" value="Submit" />
        </form>
    </body>
</html>

创建一个名为:process.php的文件,插入以下代码:

<html>
    <head>
        <title>Your form</title>
    </head>

    <body>
        <center><h1>Lesson 17_Forms - Process</h1></center>
        <?php
            // Ultra-simple form processing
            // Just retrieve the value and return it to the browser

            $username = $_POST['username'];
            $password = $_POST['password'];

            echo "{$username}: {$password}";
        ?>
    </body>
</html>

这应该可以完美地工作,记住将两个文件放在同一个文件夹中。

于 2012-05-12T12:11:37.893 回答