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

localhost Sat 12 May 2012 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 に答える