PHP 入門 - フォーム処理の問題のまとめ
最近勉強した結果、PHP と C/C++ は類似点が多すぎるため、簡単な導入は問題ないようですが、たとえば、次の 2 つの質問は、ファイル タグからフォームのファイル名を取得できません。
フォームにはメソッド、アクション、名前という 3 つの属性があることを本で学びました。その中で、フォームの名前をマークします。メソッドは式を送信するために使用するメソッドを示します。オプションの get/post.action は、PHP ページを指定することも、単に現在のページで処理することもできます。これは、PHP ページが指定されている限り、非常に便利です。フォーム、変数、およびすべては PHP と共有されます。
フォームの下には、 input 、 select 、 option 、 textarea が含まれます。ここで、 option は select のサブタグです。 input の type 属性を通じて指定される、多くのカテゴリのタグに拡張できます。現在、私が使用している主なタグは、左から右に、テキスト、パスワード、ファイル、送信、です。ここでの画像は表示用ではなく、送信で使用されるものを置き換えるためのものです。本に記載されている例を比較して、ファイルを取得してみました。情報を収集しましたが、常に失敗し、結果は常に空でした。説明は次のとおりです。
情報を収集した後、多くの学生がそのことを発見しました。おそらく、彼らも私と同じ本を読んでいたのでしょう。しかし、苦労した結果、HTML はデフォルトで text/html 形式のファイル転送のみをサポートしていることがわかりました。したがって、解決策は、属性 enctype="multipart/form-data" をフォームに追加することです。私の register.php の内容は次のとおりです。<html><head><title> 注册您的个人信息</title><meta http-equiv="content-type" content="text/html;charset=utf-8"/></head><body><h1> 请输入您的个人信息 </h1><form name=regist method=post action="php/regist.php" > 姓名: <input type=text name=username maxlength=20 size=20 value=请输入用户名 /> <br> 学号: <input type=text name=id maxlength=20 size=20/><br> 邮箱: <input type=text name=mail maxlength=20 size=20/><br> 密码: <input type=password name=password maxlength=40 size=20/><br> 确认密码: <input type=password name=conform maxlength=40 size=20/><br> 头像: <input type=file name=pic /><br> <input type="image" name="image1" src="pic222094.jpg" alt="submit" width=60 height=60 /><br> <input type=reset value=重置></form></body></html>
入力インターフェイスは次のとおりです。いくつかの情報を書き込みます。文字インターフェイスなので、アバター部分は手書きです。
<?phpheader("Content-Type:text/html;charset=utf-8");echo "user info is as follow: <br>";echo "name is ".$_POST[username]."<br>";echo "number is ".$_POST[id]."<br>";echo "mail is ".$_POST[mail]."<br>";echo "password is ".$_POST[password]."<br>";print_r($_FILES);?>
ファイルに情報があることがわかります。名前は、サーバー側のファイル名です。 type はファイルの種類を表します。tmp_name はサーバー側の一時ファイル名を表します。
2. フォームの image タグは画像を表示しません。 >
最初に指定したパスは別のディレクトリだったので、後で、Apache が動作するルート ディレクトリ (/var/www/html ディレクトリ) に画像を配置しました。どこにでもあるファイルが表示できるのであれば、なぜ Apache で ROOT_DIRECTORY を設定する必要があるのでしょうか?
3. PHP の文字化け問題
それは HTML でわかっています。ページのエンコーディングの問題は、メタタグ equiv を介して http- を指定することですが、php ページにジャンプした後、タグが再び文字化けしてしまいました。どうすればよいでしょうか。そこで、オンラインで確認しました。
PHP ファイルの先頭に header("Content-Type="text/html;charset=utf-8") を追加すると、問題は解決しました。
さて、これらは私が最近 PHP を学習中に遭遇した問題のいくつかです。特に最初の問題については、合理的な説明を見つけるのに長い時間がかかりました。 . これから数日理解を深め、今週は小さなことでも書けるように頑張ります
。