Maison > Article > développement back-end > que sont les variables extérieures à php
Formulaires HTML (GET et POST)
Lorsqu'un formulaire est soumis à un script PHP, les informations du formulaire sont automatiquement disponibles dans le script. Il existe de nombreuses façons d'accéder à ces informations, par exemple :
Exemple n°1 Un formulaire HTML simple
<form action="foo.php" method="POST"> Name: <input type="text" name="username"><br /> Email: <input type="text" name="email"><br /> <input type="submit" name="submit" value="Submit me!" /> </form>
Il existe de nombreuses façons d'accéder à ces informations dans un formulaire HTML, en fonction de votre configuration spécifique et données de préférences personnelles. Par exemple :
Exemple n°2 Accéder aux données à partir d'un simple formulaire HTML POST
<?php // 自 PHP 4.1.0 起可用 echo $_POST['username']; echo $_REQUEST['username']; import_request_variables('p', 'p_'); echo $p_username;// 自 PHP 5.0.0 起,这些长格式的预定义变量 // 可用 register_long_arrays 指令关闭。 echo $HTTP_POST_VARS['username'];// 如果 PHP 指令 register_globals = on 时可用。不过自 // PHP 4.2.0 起默认值为 register_globals = off。 // 不提倡使用/依赖此种方法。 echo $username; ?>
L'utilisation d'un formulaire GET est similaire, mais avec les variables prédéfinies GET appropriées. GET fonctionne également avec QUERY_STRING (les informations après le "?" dans l'URL). Ainsi, par exemple, http://www.example.com/test.php?id=3 contient des données GET accessibles avec $_GET['id'] . Voir $_REQUEST et import_request_variables() .
Remarque :
Les tableaux superglobaux tels que $_POST et $_GET sont disponibles depuis PHP 4.1.0.
Remarque :
Les points et les espaces dans les noms de variables sont convertis en traits de soulignement. Par exemple, 66df9299ffe54b5001d938858b4213b8 devient $_REQUEST["a_b"].
Comme indiqué ci-dessus, la valeur par défaut de register_globals avant PHP 4.2.0 était activée. La communauté PHP encourage tout le monde à ne pas se fier à cette directive et recommande de coder en supposant qu'elle est désactivée.
Remarque :
La directive de configuration magic_quotes_gpc affecte les valeurs de Get, Post et Cookie. Si cette option est activée, la valeur (C'est "PHP !") est automatiquement convertie en (C'est "PHP !"). Il y a plus de dix ans, les insertions dans les bases de données nécessitaient un tel échappement, qui est désormais obsolète et devrait être désactivé. Voir addlashes() , stripslashes() et magic_quotes_sybase.
PHP comprend également les tableaux dans le contexte des variables de formulaire (voir la FAQ associée). Par exemple, vous pouvez regrouper des variables associées ou utiliser cette fonctionnalité pour obtenir des valeurs à partir d'une zone de saisie à sélection multiple. Par exemple, POSTez-vous un formulaire et affichez les données une fois soumis :
Exemple n°3 Variables de formulaire plus complexes
<?php if (isset( $_POST [ 'action' ]) && $_POST [ 'action' ] == 'submitted' ) { echo '<pre class="brush:php;toolbar:false">' ; print_r ( $_POST ); echo '<a href="' . $_SERVER [ 'PHP_SELF' ] . '">Please try again</a>' ; echo '' ; } else { ?>
IMAGE SUBMIT nom de la variable
Lors de la soumission Lors de la formation un formulaire, vous pouvez remplacer le bouton de soumission standard par une image, en utilisant une balise comme celle-ci :
<input type="image" src="image.gif" name="sub" />
Lorsque l'utilisateur clique quelque part dans l'image, le formulaire correspondant sera envoyé au serveur et ajoutera deux variables sub_x et sub_y. Ils contiennent les coordonnées de l'image sur laquelle l'utilisateur a cliqué. Les utilisateurs expérimentés remarqueront peut-être que le nom de variable envoyé par le navigateur contient un point au lieu d'un trait de soulignement (c'est-à-dire sub.x et sub.y), mais PHP convertit automatiquement le point en trait de soulignement.
Cookies HTTP
PHP prend en charge de manière transparente » les cookies HTTP tels que définis dans la RFC 6265. Les cookies sont un mécanisme qui stocke des données sur un navigateur distant et peut suivre ou identifier les utilisateurs qui visitent à nouveau. Les cookies peuvent être définis à l'aide de la fonction setcookie(). Les cookies font partie des en-têtes HTTP, la fonction SetCookie doit donc être appelée avant qu'une sortie ne soit envoyée au navigateur. Les mêmes restrictions s'appliquent à la fonction header(). Les données des cookies seront disponibles dans le tableau de données des cookies correspondant, tel que $_COOKIE , $HTTP_COOKIE_VARS et $_REQUEST . Consultez la page de manuel setcookie() pour plus de détails et d'exemples.
Si vous souhaitez attribuer plusieurs valeurs à une variable de cookie, vous devez l'attribuer à un tableau. Par exemple :
<?php setcookie ( "MyCookie[foo]" , 'Testing 1' , time ()+ 3600 ); setcookie ( "MyCookie[bar]" , 'Testing 2' , time ()+ 3600 ); ?>
Cela créera deux cookies distincts, même si MyCookie est un seul tableau dans le script. Si vous souhaitez définir plusieurs valeurs dans un seul cookie, envisagez d'abord d'utiliser serialize() ou explosive() sur les valeurs.
Notez qu'un cookie remplacera le cookie précédent du même nom dans le navigateur, sauf si le chemin ou le domaine est différent. Par conséquent, le programme de panier d'achat peut conserver un compteur et le transmettre ensemble, par exemple :
Exemple n°4 Un exemple de setcookie()
<?php if (isset( $_COOKIE [ 'count' ])) { $count = $_COOKIE [ 'count' ] + 1 ; } else { $count = 1 ; } setcookie ( 'count' , $count , time ()+ 3600 ); setcookie ( "Cart[ $count ]" , $item , time ()+ 3600 ); ?>
变量名中的点
通常,PHP 不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。至于原因,看看:
<?php $varname . ext ; ?>
这时,解析器看到是一个名为 $varname 的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或保留字)'ext'。很明显这不是想要的结果。
出于此原因,要注意 PHP 将会自动将变量名中的点替换成下划线。
确定变量类型
因为 PHP 会判断变量类型并在需要时进行转换(通常情况下),因此在某一时刻给定的变量是何种类型并不明显。PHP 包括几个函数可以判断变量的类型,例如: gettype() , is_array() , is_float() , is_int() , is_object()和 is_string()
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!