Forum Programmation.php problème de bouton avec un nom différent mais un même identifiant

Posté par  .
Étiquettes : aucune
0
5
sept.
2006
Bonjour j'ai récupéré un site en php qu'une ancienne personne avait créé car je dois amélioré un truc mais mon problème c'est que cette ancienne personne avait créer des boutons de nom différent mais de valeur identique qui faisait que des que vous cliquez sur un de ses bouton et selon le nom qu'il a, des valeurs differentes s'affichent mais son systéme ne marche plus chez moi c'est à dire que la variable qui gére cette valeur reste vide je sais pas si j'ai pas oublié un truc qui permet de remettre en marche ce systeme voici un exemple:





<?php if ($status == "") { ?>
<? }
elseif ($status == "Chercher un dossier") {

if ($totalRows_chercherdossier > 0){
echo $row_chercherdossier['id_do'];
....
{?>

<?php }
elseif ($status == "Consulter") { ?>

j'ai remarqué que si je mettais le nom entre guillemet dans la variable j'ai la page qui affiche les donnés selon le nom que j'ai rentré.
j'espére avoir été assez claire merci pour toute personne qui peuvent m'aider.
  • # register_global

    Posté par  (site web personnel) . Évalué à 2.

    Est tu sur que ton problème ne viens pas d'ailleurs.
    Si le site est vieux et mal codé, je suppose qu'à l'époque le register_globals était à ON et toi maintenant tu fonctionne avec ce paramètre à OFF. Tu as raison c'est plus sécure mais du coup ca marche plus.

    Essaye de recuperer tes variables $status par $_REQUEST['status'], ca devrait être bcp mieux...
  • # ameliorer le code

    Posté par  . Évalué à 2.

    <?php if ($status == "") { ?>


    C'est juste une recommandation en fait, utilise la fonction adéquate pour vérifier que la variable est n'est pas null :

    if(isset($status)) {... }


    pareille pour içi, strcmp semble plus indiqué, quoi que c'est pas obligé:

    elseif ($status == "Consulter") { ?>


    par:

    if(strcmp($status, "Consulter") == 0){ ... }


    enfin je sais pas si c'est une erreur de retranscription de ton code mais :
    if ($status == "") { ?>


    le passage mis en gras cad les indicateurs de fin de code php, mis içi moi je trouve ça bizarre.

    Désolé de ne pas répondre à ta question mais le commentaire précèdant semble être pertinent.

    Allez tous vous faire spéculer.

    • [^] # Re: ameliorer le code

      Posté par  . Évalué à 1.

      Bonsoir,

      Si on se lance dans les discussions concernant la sécurité lors du passage de valeur, on en aura jamais fini :D
      On peut aussi vérifier le type des variables, ... etc etc
      La sécurité, un vaste sujet. Je dirais même plus, très très vaste.

      Pour le problème du sujet initial, je crois bien que cela provient de la directive "register_globals = off".
      Donc utiliser $_GET[], $_POST[], ...
      Effectivement Elie, comme tu le disais, ne pas oublier de vérifier l'affectation de la variable via "isset" pour éviter d'avoir des problèmes de notice.
      Surtout si on travail en error_reporting level E_ALL.
  • # registre global

    Posté par  . Évalué à 1.

    Bonjour à tous merci pour vos réponse
    je vous avoue être moyen en php mais voila ça ne marche pas dans le sens que mes donné n'apparaisse pas mais quand je fais un $_REQUEST['status']; et quand ensuite j'exécute ce code echo $_REQUEST['status']; pour voir ce qu'il affiche lorsque je clique sur le bouton il y a bien le mot 'Chercher un dossier' qui apparaît mais l'exécution ne s'effectue pas je comprends pas.

    le $_REQUEST['status']; je le met avant le premier " if ($status == "")".
    je sais pas s'il faut que je le répète plusieurs fois avant chaque if($status==....) ou bien elseif($status=....) je vois bien que mon problème ne vient pas de ma base de donné car du moment que je fais $status="Chercher un dossier"; mes donné s'affiche dessuite
    Voici les donnés que possède mes boutons

    <input name="status" type="submit" id="status" value="Chercher un dossier">

    <input type="submit" name="Submit2" value="Ajouter">

    Ps pour répondre a élie lors du passage en gras de { ?> c'est qu'enfet l'ancienne personne exécute les donné après
    exemple :
    <?php }elseif ($status == "Consulter") { ?>
    <?php echo $row_consulterdossier['nom']; ?>
    <?php echo $row_consulterdossier['prenom']; ?>
    .....
    <?php }elseif ($status == "Modifier") { ?>

    j'espère avoir été clair
    Merci d'avance pour l'aide que vous m'apportez
    • [^] # Re: registre global reparait en partie

      Posté par  . Évalué à 1.

      rebonjour j'ai réussi a faire marcher mon système pour cela j'ai mis une autre variable exemple $test=$_REQUEST['statuts'];
      et ensuite j'ai fais " if ($test == "")". mais à ce que je vois par la suite lorsque je veux consulter une personne les donner de cette personne ne s'affiche plus les case reste vide alors que avant ça marcher n'y a t'il pas un moyen de réactiver la feuille comme quand elle marche sur le net.
      merci d'avance
      • [^] # Re: registre global reparait en partie

        Posté par  . Évalué à 1.

        Regarde le debut de la declaration de ton formulaire cad:

        <form method="post" action="script.php">
        <input type="text" name="nom" />

        le champ interessant içi c'est l'option method, celon qu'elle soit a post ou get tu vas recuperer la valeur du input nom avec avec:

        $_POST["nom"]

        si method = get alors:

        $_GET["nom"]

        et oui pour repondre si tu veux tester ta vlaleur ca donne
        if($_GET["nom] == "") {...}

        ou comme je le preconnise
        if(isset($_POST["nom"])) {...}

        isset : renvoie vrai si la variable est definie et à une valeur, faux sinon.

        Allez tous vous faire spéculer.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.