Comment implémenter un formulaire en PHP

王林
Libérer: 2023-04-07 11:04:01
avant
5306 Les gens l'ont consulté

1. Utilisation de base des formulaires

HTML possède une balise spécifiquement utilisée pour soumettre des données :

, à travers laquelle les entrées des utilisateurs peuvent être facilement collectées.

La balise form a deux attributs nécessaires :
action : adresse de soumission du formulaire (à qui le soumettre après l'avoir rempli)
méthode : comment soumettre le formulaire

Par exemple, Nous devons collecter le nom d'utilisateur et le mot de passe saisis par l'utilisateur sur l'interface de connexion :

<!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>
Copier après la connexion

Selon la situation actuelle, l'utilisateur demande cette page de formulaire pour la première fois, remplit le contenu du formulaire, clique sur connexion, et le formulaire sera automatiquement envoyé à login .php, le problème restant est de considérer comment obtenir le contenu soumis par l'utilisateur dans login.php

Il existe trois variables super globales en PHP spécifiquement utilisées pour obtenir. Contenu de soumission du formulaire :
$_GET : Utilisé pour obtenir le contenu soumis par la méthode GET
$_POST : Utilisé pour obtenir le contenu soumis par la méthode POST
$_REQUEST : Utilisé pour obtenir le contenu soumis par la méthode GET ou POST

À l'aide de $_POST ou $_REQUEST, vous pouvez obtenir le contenu soumis par le formulaire :

<?php
// 获取表单提交的用户名和密码
echo &#39;用户名:&#39; . $_REQUEST[&#39;username&#39;];
echo &#39;密码:&#39; . $_REQUEST[&#39;password&#39;];
Copier après la connexion

1.1 Adresse de soumission

.

action L'adresse de soumission fait référence au remplissage de ce formulaire. Une fois terminé, cliquez sur Soumettre pour déterminer l'adresse de demande pour envoyer la demande.
Du point de vue de la facilité de maintenance, généralement nous le soumettons le plus souvent au fichier actuel, puis déterminons s'il s'agit d'une demande de soumission de formulaire dans le fichier actuel :

<?php
if ($_SERVER[&#39;REQUEST_METHOD&#39;] === &#39;POST&#39;) {
  // 表单提交请求
  }
Copier après la connexion

De plus, il est recommandé pour utiliser $_SERVER[&#39;PHP_SELF&#39;] acquisition dynamique Chemin d'accès à la page actuelle, il n'est donc pas nécessaire de modifier le code en raison du renommage des fichiers ou de l'ajustement de la structure du répertoire du site Web :

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

Méthode de soumission <🎜. >

méthode Oui Utilisé pour définir la méthode de soumission de formulaire. Actuellement, nous connaissons les deux méthodes de soumission de formulaire les plus courantes : GET et POST.

D'un point de vue effet, les deux peuvent soumettre des données au serveur, mais les deux sont très différents en termes de principe de soumission :
GET
Les données du formulaire sont transmises via le paramètre ? URL
transmise au serveur Vous pouvez voir le contenu soumis dans la barre d'adresse
La longueur des données est limitée car la longueur de l'adresse URL est limitée (2000 caractères)
POST
Les données du formulaire sont transmises. au corps de la requête Côté serveur, on ne peut pas le voir sur l'interface
Vous pouvez soumettre tout type de données, y compris des fichiers
Comme elles ne sont pas visibles sur l'interface et ne sont pas stockées dans le navigateur, elles sont plus sûr
Quant à savoir laquelle doit être utilisée dans quelles circonstances ? Cette méthode doit être décidée en fonction du scénario commercial et des caractéristiques respectives des deux méthodes. Il n'y a pas de réponse absolue, seuls quelques principes peuvent être donnés : <🎜. > N'utilisez jamais GET pour envoyer des mots de passe ou d'autres informations sensibles ! ! !
Vous devez réfléchir clairement si cette demande vise principalement à obtenir quelque chose ou à envoyer quelque chose

2. Traitement commun des éléments de formulaire

Quant au texte dans le formulaire element Les éléments tels que les champs de texte de zone utilisent directement la valeur de l'attribut de nom de l'élément comme clé et les informations renseignées par l'utilisateur comme valeur, et sont envoyés au serveur. Cependant, certains éléments de formulaire spéciaux doivent être considérés séparément :

2.1 Bouton radio

<!‐‐ 最终只会提交选中的那一项的 value ‐‐>
<input type="radio" name="gender" value="male">
<input type="radio" name="gender" value="female">
Copier après la connexion

2.2. Bouton à cocher

.

<!‐‐ 没有设置 value 的 checkbox 选中提交的 value 是 on ‐‐>
<input type="checkbox" name="agree">
<!‐‐ 设置了 value 的 checkbox 选中提交的是 value 值 ‐‐>
<input type="checkbox" name="agree" value="true">
Copier après la connexion

Si vous devez soumettre plusieurs éléments sélectionnés en même temps, vous pouvez suivre l'attribut de nom avec [] :

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">
Copier après la connexion

est finalement soumis au serveur, et ce qui est reçu via $_POST est un tableau d'index.

2.3. Boîte de sélection

<select name="subject"> 
<!‐‐ 设置 value 提交 value ‐‐>  
<option value="1">语文</option>  
<!‐‐ 没有设置 value 提交 innerText ‐‐>  
<option>数学</option>
</select>
Copier après la connexion

2.4 Téléchargement de fichier


L'élément d'entrée dont l'attribut type est Le fichier peut être transmis via le formulaire Soumettre un fichier (télécharger un fichier), et PHP côté serveur peut obtenir les informations sur le fichier téléchargé via $_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;];
  }
}
Copier après la connexion

$_FILES est également un tableau associatif, la clé est le nom du formulaire, le contenu est le suivant :

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)
  }
}
Copier après la connexion

Pour plus de questions connexes, veuillez visiter le site Web PHP chinois :

Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal