0

小さなPHPスクリプトを実行しようとしています。次の小さな PHP 行を実行しようとすると、エラーが発生します?> html コード内。私のチュートリアル ガイドによると、value 要素のこの行により、ブラウザーを更新した後でもテキスト フィールドに入力された入力テキストが保持されるようになっているはずですが、そうではありません。次のエラー メッセージが表示されます。

注意: 未定義の変数: 27 行目の C:\wamp\www\pages\basicForm.php の姓 コール スタック #TimeMemoryFunctionLocation 10.0007366504{main}( ..\basicForm.php:0 " NAME="surname">

なんで?

そしてコード:

<!DOCTYPE html>
<html>
<head>
    <title></title>
        <?PHP
        if (!empty($_POST)) {
            $firstname = $_POST['firstname'];
            $surname = $_POST['surname'];
            print($firstname);
            print($surname);
        }
        else {

        } print( 'welcomes');
    ?>
</head>
<body>
<Form name ="form1" Method ="POST" Action ="basicForm.php">
    <label>


    <INPUT TYPE = 'TEXT' Name ='firstname' VALUE="<?PHP print $firstname ; ?>">
    </label>

    <p>
        <label>
            <INPUT TYPE="TEXT" VALUE="<?PHP print($surname); ?>" NAME="surname">
        </label>

    <p>
        <Input Type = "Submit" Name = "Submit1" Value = "Login">
</FORM>


</body>
</html>
4

4 に答える 4

0

私のチュートリアルガイドによると、value要素のこの行は、ブラウザを更新した後でも、入力テキストがテキストフィールドに入力されたままになるようにする必要があります

チュートリアルを誤解しているようです。
サーバー側のテクノロジーは、実際にサーバーに何かを送信するまで役に立ちません。
したがって、送信する前に、値を入力してページを更新しているようです。一部のブラウザは入力された値を自分の意志で保持する場合がありますが、サーバー側のPHPはそれとは何の関係もありません。

すでにサーバー上にある値をフォームに入力した場合の別の話-そのような入力されたフォームは更新されても持続します。

于 2012-12-27T18:16:44.167 に答える
0

以下のように初期値を割り当てる必要があるすべて

$firstname = '';
$surname = '';

初期化されていない変数のデフォルト値に依存することは、同じ変数名を使用する別のファイルに 1 つのファイルを含める場合に問題になります。また、register_globals をオンにすると、重大なセキュリティ リスクになります。E_NOTICE レベルのエラーは、初期化されていない変数を操作する場合に発行されますが、初期化されていない配列に要素を追加する場合には発行されません。isset() 言語構造を使用して、変数が既に初期化されているかどうかを検出できます。

詳細については、PHP:「通知: 未定義の変数」、「通知: 未定義のインデックス」、および「通知: 未定義のオフセット」を参照してください。

于 2012-12-27T18:08:05.393 に答える
0

$surname最初は設定されていません:

<INPUT TYPE="TEXT" VALUE="<?PHP print($surname);

$_POSTが空でない場合にのみ、上部に設定されます。

于 2012-12-27T18:09:35.177 に答える
0

$_POST変数が空の場合、$surname作成されません。これを回避するには、いくつかの方法があります。

1、変数を事前定義します。

$firstname = '';
$surname = '';
if (!empty($_POST)) {
    $firstname = $_POST['firstname'];
    $surname = $_POST['surname'];
}else {

}

2、三項構文を使用します。

$firstname = isset($_POST['firstname']) ? $_POST['firstname'] : ''; 
$surname = isset($_POST['surname']) ? $_POST['surname'] : '';

どちらも、変数を出力する前に確実に変数が作成されるようにします。

于 2012-12-27T18:11:10.040 に答える