PHPでフォームを実装する方法

王林
リリース: 2023-04-07 11:04:01
転載
5306 人が閲覧しました

1. フォームの基本的な使用法

データ送信専用のタグが HTML にあります:

を使用すると、ユーザー入力を簡単に収集できます。

form タグには 2 つの必須属性があります。
アクション: フォーム送信アドレス (記入後誰に送信するか)
メソッド: フォームの送信方法

Forたとえば、ログイン インターフェイスでユーザーが入力したユーザー名とパスワードを収集する必要があります。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF‐8">
  <title>登录</title>
</head>
<body>
  <form action="login.php" method="post">
    <div>
      <label for="username">用户名</label>
      <input type="text" id="username" name="username">
    </div>
    <div>
      <label for="password">密码</label>
      <input type="password" id="password" name="password">
    </div>
    <button type="submit">登录</button>
  </form>
</body>
</html>
ログイン後にコピー

現在の状況によると、ユーザーは初めてこのフォーム ページをリクエストし、フォームの内容を入力し、 「ログイン」をクリックすると、フォームが自動的にlogin.phpに送信されます。残りの問題は、ユーザーが送信したコンテンツをlogin.phpで取得する方法を検討することです。

PHPには3つのスーパーグローバル変数があります。特にフォーム送信コンテンツの取得に使用されます:
$_GET : GET メソッドによって送信されたコンテンツの取得に使用されます
$_POST: POST メソッドによって送信されたコンテンツの取得に使用されます
$_REQUEST: GET またはPOST メソッド

$_POST または $_REQUEST を使用すると、フォームによって送信されたコンテンツを取得できます:

<?php
// 获取表单提交的用户名和密码
echo &#39;用户名:&#39; . $_REQUEST[&#39;username&#39;];
echo &#39;密码:&#39; . $_REQUEST[&#39;password&#39;];
ログイン後にコピー

1.1. 送信アドレス

アクション 送信アドレスは、このフォームへの入力を指します。完了したら、[送信] をクリックして、リクエストを送信するためのリクエスト アドレスを決定します。
メンテナンスの容易さの観点から、一般的には、現在のファイルに送信してから、現在のファイルでフォーム送信リクエストであるかどうかを判断するのが最も一般的です。

<?php
if ($_SERVER[&#39;REQUEST_METHOD&#39;] === &#39;POST&#39;) {
  // 表单提交请求
  }
ログイン後にコピー

さらに、次のようにすることをお勧めします。 $_SERVER ['PHP_SELF'] を使用するには、現在のページのアクセス パスを動的に取得します。これにより、ファイル名の変更や Web サイトのディレクトリ構造の調整によってコードを変更する必要がなくなります:

<!‐‐ 这样写死 action 地址,当文件重命名就需要修改代码 ‐‐>
<form action="/foo/login.php">
  <!‐‐ ... ‐‐>
</form>
<!‐‐ 通过 `$_SERVER[&#39;PHP_SELF&#39;]` 获取路径,可以轻松避免这个问题 ‐‐>
<form action="<?php echo $_SERVER[&#39;PHP_SELF&#39;]; ?>">
  <!‐‐ ... ‐‐>
</form>
ログイン後にコピー

1.2. 送信メソッド

メソッドを使用してフォーム送信メソッドを設定できます。現在、最も一般的なフォーム送信メソッドは GET と POST の 2 つです。
効果の観点から見ると、どちらもサーバーにデータを送信できますが、実装の原則という点ではこの 2 つは大きく異なります:
GET
フォーム データは URL の ? パラメーターを介して渡されます。
サーバーに渡されます 送信された内容がアドレスバーに表示されます
URLアドレスの長さに制限があるため(2000文字)、データ長も制限されます
POST
フォームデータがサーバーに渡されます。リクエスト本文 サーバー側では、インターフェース上でそれを見ることができません
ファイルを含むあらゆる種類のデータを送信できます
インターフェース上では見えず、ブラウザーに保存されないため、より安全です
どのような状況でどちらを使用するかについては、ビジネス シナリオと 2 つの方法のそれぞれの特性に基づいて決定する必要があります。絶対的な答えはなく、いくつかの原則のみが与えられます。
決して使用しないでください。パスワードやその他の機密情報を送信するには GET! ! !
このリクエストは主に何かを取得するためのものなのか、何かを送信するためのものなのかを明確に考える必要があります

2. 共通のフォーム要素の処理

フォーム内のテキストについてelement ボックステキストフィールドなどの要素は、要素の name 属性値をキーとして、ユーザーが入力した情報を値として直接使用し、サーバーに送信されます。ただし、別途考慮する必要がある特別なフォーム要素がいくつかあります:

2.1 ラジオ ボタン

<!‐‐ 最终只会提交选中的那一项的 value ‐‐>
<input type="radio" name="gender" value="male">
<input type="radio" name="gender" value="female">
ログイン後にコピー

2.2. チェック ボタン

<!‐‐ 没有设置 value 的 checkbox 选中提交的 value 是 on ‐‐>
<input type="checkbox" name="agree">
<!‐‐ 设置了 value 的 checkbox 选中提交的是 value 值 ‐‐>
<input type="checkbox" name="agree" value="true">
ログイン後にコピー

複数の選択したアイテムを同時に送信する必要がある場合は、name 属性の後に [] を付けることができます:

https://www.php。 net /manual/zh/faq.html.php#faq.html.arrays

<input type="checkbox" name="funs[]" id="" value="football">
<input type="checkbox" name="funs[]" id="" value="basketball">
<input type="checkbox" name="funs[]" id="" value="world peace">
ログイン後にコピー

最終的にサーバーに送信され、$_POST を通じて受信されるのはインデックス配列です。

2.3. 選択ボックス

<select name="subject"> 
<!‐‐ 设置 value 提交 value ‐‐>  
<option value="1">语文</option>  
<!‐‐ 没有设置 value 提交 innerText ‐‐>  
<option>数学</option>
</select>
ログイン後にコピー

2.4 ファイルアップロード

type 属性が file である入力要素は、次のことができます。ファイルを送信 (ファイルをアップロード) するフォームを通じて渡されると、サーバー側 PHP は $_FILES を通じてアップロードされたファイル情報を取得できます。

<?php
// 如果选择了文件 $_FILES[&#39;file&#39;][&#39;error&#39;] => 0
// 详细的错误码说明:http://php.net/manual/zh/features.file‐upload.errors.php
if ($_FILES[&#39;file&#39;][&#39;error&#39;] === 0) {
  // PHP 在会自动接收客户端上传的文件到一个临时的目录
  $temp_file = $_FILES[&#39;file&#39;][&#39;tmp_name&#39;];
  // 我们只需要把文件保存到我们指定上传目录
  $target_file = &#39;../static/uploads/&#39; . $_FILES[&#39;file&#39;][&#39;name&#39;];
  if (move_uploaded_file($temp_file, $target_file)) {
    $image_file = &#39;/static/uploads/&#39; . $_FILES[&#39;file&#39;][&#39;name&#39;];
  }
}
ログイン後にコピー

$_FILES も連想配列で、キーはフォームの名前で、内容は次のとおりです:

array(1) {
  ["avatar"]=>
  array(5) {
    ["name"]=>
    string(17) "demo.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(27) "C:\Windows\Temp\php786C.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(29501)
  }
}
ログイン後にコピー

さらに関連する質問については、PHP 中国語 Web サイトを参照してください。 PHP ビデオ チュートリアル

以上がPHPでフォームを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート