Maison >développement back-end >tutoriel php >Comment implémenter un formulaire en PHP
1. Utilisation de base des formulaires
HTML possède une balise spécifiquement utilisée pour soumettre des données : ff9c23ada1bcecdd1a0fb5d5a0f18437, à 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>
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 '用户名:' . $_REQUEST['username']; echo '密码:' . $_REQUEST['password'];
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['REQUEST_METHOD'] === 'POST') { // 表单提交请求 }
De plus, il est recommandé pour utiliser $_SERVER['PHP_SELF']
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['PHP_SELF']` 获取路径,可以轻松避免这个问题 ‐‐> <form action="<?php echo $_SERVER['PHP_SELF']; ?>"> <!‐‐ ... ‐‐> </form>
Méthode de soumission
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
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">
.
<!‐‐ 没有设置 value 的 checkbox 选中提交的 value 是 on ‐‐> <input type="checkbox" name="agree"> <!‐‐ 设置了 value 的 checkbox 选中提交的是 value 值 ‐‐> <input type="checkbox" name="agree" value="true">
<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">
<select name="subject"> <!‐‐ 设置 value 提交 value ‐‐> <option value="1">语文</option> <!‐‐ 没有设置 value 提交 innerText ‐‐> <option>数学</option> </select>
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['file']['error'] => 0 // 详细的错误码说明:http://php.net/manual/zh/features.file‐upload.errors.php if ($_FILES['file']['error'] === 0) { // PHP 在会自动接收客户端上传的文件到一个临时的目录 $temp_file = $_FILES['file']['tmp_name']; // 我们只需要把文件保存到我们指定上传目录 $target_file = '../static/uploads/' . $_FILES['file']['name']; if (move_uploaded_file($temp_file, $target_file)) { $image_file = '/static/uploads/' . $_FILES['file']['name']; } }
$_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) } }
Pour plus de questions connexes, veuillez visiter le site Web PHP chinois :
Tutoriel vidéo PHPCe 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!