Définition de variable en PHP!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Définition de variable en PHP!

par Ryle » 14 nov. 2006, 12:32

Pour plus d'infos sur register_globals et de l'intérêt d'utiliser $_POST et $_GET voir le sujet Pourquoi register_globals est à OFF? de la FAQ :)

par Hermès » 14 nov. 2006, 09:12

Il me semble qu'il est possible de configurer php afin que les paramètres passés en GET (ou en POST, je sais plus) créent automatiquement une variable du même nom, sans avoir à faire un $_GET["???"] ou un $_POST["???"].

Il se peut que tu ais été habitué à cette option mais que la plateforme sur laquelle tu développe actuellement ne soit pas configurée de la même manière.

par Ajoloca » 14 nov. 2006, 07:29

Re,

Effectivement, ton formulaire (HTML) crée une variable qui porte ce nom.
Mais dans ton code PHP, tu la récupères où ???
d'après cette ligne
<FORM action="index.php" method="post"> 
Quand ton formulaire est validé il va appeller le script 'index.php', en lui passant les paramètres via le tableau des super globales $_POST[].
Tu dois donc dans le script 'index.php' les récupérer avant de les utiliser.
QQ chose du style
<?php
$search = (isset($_POST['search']) && !empty($_POST['search'])) ? $_POST['search'] : '';
et à partir de là tu peux l'utiliser.

par jeremy_chauvel » 14 nov. 2006, 07:16

j'ai fait des tests, $search n'est pas connue, elle est pourtant supposée se créer (au dessus du code php) dans le meme fichier index.php:

Code : Tout sélectionner

<FORM action="index.php" method="post"> <table width="75%" border="0" cellspacing="0" cellpadding="0" align="center"> <TR> <td> <div align="center"> <input name=search size="40"> // voila le search inconnue par php <input type=submit value=Chercher name=submit> </div> </td> </tr> </table> </FORM>
l'execution de la partie php ne prend pas en compte "search" ou en tous les cas sa variable "$search".
je fais exactement la meme chose dans un autre fichier, a l'exeption pres que dans ce cas la, j'ai un formulaire en html et la gestion du formulaire en php ... et la les variables se retrouvent ...

Du coup je ne voit pas comment corriger puisque pour moi il n'y a pas d'erreur :?

des idées ? :lol:

Merci d'avance
jeremy

par Ajoloca » 14 nov. 2006, 06:42

Bonjour,
je ne comprend pas pourquoi, puisqu'il n'est pas necessaire de definir une variable en php ...
Ce n'est pas tout à fait vrai (dans le sens ou tu l'entends), ne confonds pas définir et déclarer.

Définir veux dire donner son type, sa taille à la déclaration (avant de l'initialiser) comme en C, C++, Java, etc...

Code : Tout sélectionner

int entier = 0; char caractere = 'a';
PHP est un language faiblement typé (une variable s'adaptera au type de la donnée qu'elle contient), dans ce sens, on à pas besoin de définir une variable en PHP. Elle se définie et se déclare à son initialisation.
En plus ton code a d'autres soucis.
<?php

require("conf/cfg-inc.php3");

$res = @mysql_connect($cfgHote,$cfgUser,$cfgPass) or die ("probleme connexion");
@mysql_select_db($cfgBase,$res) or die ("probleme dans selection base");

$x = strlen($search); <---la ligne 98........

if ($x != 0)
{
     if ($res <> 0)
    {
...
D'après cette ligne
$res = @mysql_connect($cfgHote,$cfgUser,$cfgPass) or die ("probleme connexion");
La variable $res est une ressource (renvoyée par MySQL) et dans cette ligne
if ($res <> 0)
tu la compares à un entier. PHP est faiblement typé mais pas à ce point.
De toutes manières ton test est inutile (tu sais que $res contient obligatoirement QQ chose different de 'false', ce que je suppose que tu as voulu tester) sinon tu ne serais jamais arrivé là.
Dans cette ligne
$res = @mysql_connect($cfgHote,$cfgUser,$cfgPass) or die ("probleme connexion");
Tu as un 'die' en cas d'erreur ton PGM t'envoi le message et s'arrête.

Définition de variable en PHP!

par jeremy_chauvel » 14 nov. 2006, 02:43

Bonjours,

j'ai un message retour php:

Code : Tout sélectionner

Notice: Undefined variable: search in d:\weblocal\optiquemovie\index.php on line 98
je ne comprend pas pourquoi, puisqu'il n'est pas necessaire de definir une variable en php ...

je vous donne le bout de code:

Code : Tout sélectionner

<?php require("conf/cfg-inc.php3"); $res = @mysql_connect($cfgHote,$cfgUser,$cfgPass) or die ("probleme connexion"); @mysql_select_db($cfgBase,$res) or die ("probleme dans selection base"); $x = strlen($search); <---la ligne 98........ if ($x != 0) { if ($res <> 0) { ...
Si quelqu'un a une idée ... c'est une notice, ca ne devrais pas bloquer l'exectution du script ?!...

Merci d'avance pour vos réponses
jeremy