[RESOLU] Révision php

Eléphanteau du PHP | 16 Messages

23 sept. 2014, 10:15

Bonjour, :priere:
j'ai développé un site il y a une dizaine d'année et j'ai quelques trous de mémoire.
1/. y a-t-il une différence entre <? et <?php : la réaction semble différente à l'exécution.
2/. lors de l'appel d'un module et pour lui passer un paramètre, j'utilise dans le module appelant :
<FORM METHOD='GET' ACTION='identification.php?paramIdent=0' TARGET='Gauche' > \n
et dans le module appelé :
$parm = $_GET["paramIdent"] ;
à l'exécution j'obtiens :
Notice: Undefined index: paramIdent in C:\Program Files (x86)\EasyPHP\data\localweb\NleGenealogie\identification.php on line 15
===> ou est donc l'erreur ???
Remerciements et cordiales salutations.

jo-jo-123
Invité n'ayant pas de compte PHPfrance

23 sept. 2014, 10:35

Bonjour,

1/. y a-t-il une différence entre <? et <?php : la réaction semble différente à l'exécution.

Un script PHP commence toujours par <?php en PHP 5 (peut être qu'en php 4, il suffisait d'écrire <?)

2/. lors de l'appel d'un module et pour lui passer un paramètre, j'utilise dans le module appelant :
<FORM METHOD='GET' ACTION='identification.php?paramIdent=0' TARGET='Gauche' > \n
et dans le module appelé :
$parm = $_GET["paramIdent"] ;
à l'exécution j'obtiens :
Notice: Undefined index: paramIdent in C:\Program Files (x86)\EasyPHP\data\localweb\NleGenealogie\identification.php on line 15
===> ou est donc l'erreur ???


Déjà il faut vérifier que $_GET["paramIdent"] existe soit par un isset() ou empty().
Après il est conseillé d'utiliser <FORM METHOD='POST' ...>

En ésperant avoir répondu a tes questions !

Jo

Eléphant du PHP | 151 Messages

23 sept. 2014, 11:11

<? est autorisé par le php.ini, pas par la verison de php (allow short tag de mémoire)

Ensuite pour le
<FORM METHOD='GET' ACTION='identification.php?paramIdent=0' TARGET='Gauche' >
il faut écrire :
<FORM METHOD='GET' ACTION='identification.php TARGET='Gauche' >
<input type='hidden' name='paramIdent' value='0' />
La méthode post est à adopter en fonction des contraintes... GET est parfois plus utile est judicieux...
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 16 Messages

24 sept. 2014, 09:17

Bonjour Arnaud69,

Ayant appliqué la consigne, le résultat est inchangé :
Notice: Undefined index: paramIdent in C:\Program Files (x86)\EasyPHP\data\localweb\NleGenealogie\identification.php on line 15
Le code appelant :

Code : Tout sélectionner

// echo "<FORM METHOD='GET' ACTION='identification.php?paramIdent=0' TARGET='Gauche' > \n" ; // remplacé par echo "<FORM METHOD='GET' ACTION='identification.php TARGET='Gauche' > " ;" echo "<input type='hidden' name='paramIdent' value='0' />" ;
le code appelé :

Code : Tout sélectionner

<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1"> <TITLE>reconnaissance du demandeur et demande du mot de passe</TITLE> </HEAD> <BODY BGCOLOR='#F4EBCC'> <?php // liaison avec la base mySQL require_once "accesBase.php" ; $link = premierAcces() ; // récupération des paramètres généraux $GLOBALS["ident"] = $_GET["identifiant"] ; $GLOBALS["mopas"] = $_GET["motdepas"] ; // récupération du paramètre d'appel $parm = $_GET["paramIdent"] ;

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 sept. 2014, 10:26

salut,

pour le tag php, utiliser <?php est la bonne solution car le paramètre short open tag n'est plus activé par défaut. mais il est possible de le faire (plus d'info dans la doc en lien ;) )

pour ce qui est du formulaire

généralement on l'écrit en minuscule, les délimiteurs des option de tags sont les " et non les ' (même si cela fonctionne).

ensuite écrire
<form method="get" action="page.php?toto=tata"> ....</form>

c'est pareil que d'écrire
<form method="get" action="page.php">
<input type="hidden" name="toto" value="tata" />
</form>

car au final tous finit dans l'url.

lorsque tu arrive sur ton script identification.php $_GET['paramIdent'] devrait effectivement exister et avoir une valeur.
Par contre cela n'est vrai que lorsque tu valide le formulaire. est ce tu n’afficherais pas cette page sans les paramètre dans l'url ?
si tu utilise l'url http://lehostdetonsite/identification.p ... depas=tata cela doit fonctionner.

dernière chose cette ligne
echo "<FORM METHOD='GET' ACTION='identification.php TARGET='Gauche' > " ;"

n'est pas valide il manque une ' et il y a une " en trop.
<FORM METHOD="GET" ACTION="identification.php" TARGET="Gauche" >' ;

quand à l’utilisation des frames, en règle générale c'est moche :)

pour voir ce qu'il y a dans $_GET tu peux ajouter un var_dump($_GET) en début de script.

@+
Il en faut peu pour être heureux ......

ynx
Mammouth du PHP | 586 Messages

24 sept. 2014, 11:06

Attention, les paramètres passés dans l'attribut action d'un formulaire ne sont pas envoyés lors de la soumission de celui-ci. Il faut donc bien utiliser un champ input (de type hidden ou autre).

Les attributs peuvent être délimités par des simples ou doubles quotes. La valeur d'un attribut peut d'ailleurs ne pas être entourée de quotes si elle ne contient pas d'espace et si elle ne contient pas les caractères " ' ` < ou >
Source : http://www.w3.org/TR/html5/introduction ... ly-example

Eléphant du PHP | 151 Messages

24 sept. 2014, 12:32

Code : Tout sélectionner

echo "<FORM METHOD='GET' ACTION='identification.php' TARGET='Gauche' >" echo "<input type='hidden' name='paramIdent' value='0' />" ;
Il y avait quelques fautes de ' et de "

réessaie
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");