petit probleme avec $_SERVER['PHP_SELF']

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 : petit probleme avec $_SERVER['PHP_SELF']

par arno77 » 03 oct. 2006, 14:41

c'est bon j'ai vu ou c'etais.
J'ai pas fait attention mais de toute façon c'est en local pas d'acces possible de maniére physique depuis l'exterieure pour l'instant
Merci

par fred9999 » 03 oct. 2006, 14:41

tu as des boutons en haut des messages

sinon t'inkiet pas j'ai pas gardé tes codes d'accès :wink: :wink:

par arno77 » 03 oct. 2006, 14:38

comment tu fais

par jojolapine » 03 oct. 2006, 14:28

édite rapidement ton message en remplacement tes logins et mot de passes par des ***** c'est pas bien malin de mettre tout ça en clair
(le modérateur qui passera par là pourra effacer mon message :wink: )

par arno77 » 03 oct. 2006, 13:39

Voici la fonction
/* ---- connection a la base de donnée ---- */
$serveur = ""; 
$admin   = ""; 
$mdp     = ""; 
$base    = ""; 

$idr = isset($_POST['nom_classe'])?$_POST['nom_classe']:null;
?> 

<html> 
  <head> 
    <title>Sélectionner une matiere selon la classe choisie</title> 
  </head> 
  <body> 
    <?php 
      if(isset($_POST['ok']) && isset($_POST['nom_matiere']) && $_POST['nom_matiere'] != "") {  
        $classe_selectionnee = $_POST['nom_classe']; 
        $matiere_selectionnee = $_POST['nom_matiere']; 
      } 
      $connexion = mysql_pconnect($serveur, $admin, $mdp); 
      if($connexion != false) { 
        $choixbase = mysql_select_db($base, $connexion); 
        $sql1 = "SELECT `id_classe`, `nom_classe`". 
        " FROM `classes`". 
        " ORDER BY `id_classe`"; 
        $rech_classe = mysql_query($sql1);
        $code_classe = array(); 
        $nom_classe = array();     
        $nb_classes = 0; 
        if($rech_classe != false) { 
          while($ligne = mysql_fetch_assoc($rech_classe)) { 
            array_push($code_classe, $ligne['id_classe']); 
            array_push($nom_classe, $ligne['nom_classe']);  
            $nb_classes++; 
          } 
        } 
    ?>
 
      <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgcls"> 
        <fieldset> 
          <legend>Ajouter une sous matiere</legend>
          Pour la classe de:<br> 
          <select name="nom_classe" id="nom_classe" onchange="document.forms['chgcls'].submit();"> 
            <option value="-1">- - - Choisissez une classe - - -</option> 
            <?php
           
              for($i = 0; $i < $nb_classes; $i++) { 
                ?> 
                <option value="<?php echo($code_classe[$i]); ?>"<?php echo((isset($idr) && $idr == $code_classe[$i])?" selected=\"selected\"":null); ?>><?php echo($nom_classe[$i]); ?></option> 
                <?php 
              } 
            ?> 
          </select><br><br>
          <?php 
          mysql_free_result($rech_classe); 
          if(isset($idr) && $idr != -1){ 
            $sql2 = "SELECT `id_matiere`, `nom_matiere`". 
            " FROM `matiere`". 
            " WHERE `id_classe` = ". $idr ."". 
            " ORDER BY `id_matiere`;"; 
            if($connexion != false){ 
              $rech_mat = mysql_query($sql2, $connexion); 
              $nd = 0; 
              $code_matiere = array();
              $nom_matiere = array();
              while($ligne_mat = mysql_fetch_assoc($rech_mat)){ 
                array_push($code_matiere, $ligne_mat['id_matiere']);
                array_push($nom_matiere, $ligne_mat['nom_matiere']);
                $nd++; 
              } 
              ?>
              Dans la matière :<br>
              <select name="nom_matiere" id="nom_matiere">
                <?php 
                for($d = 0; $d<$nd; $d++){ 
                  ?> 
                  <option value="<?php echo($code_matiere[$d]); ?>"<?php echo((isset($matiere_selectionnee) && $matiere_selectionnee == $code_matiere[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_matiere[$d]); ?></option> 
                  <?php 
                } 
                ?> 
              </select> <br><br>
              J'ajoute la sous matiere :<br>
              <input name="nom_sous_matiere" type="text" size="60"><br><br>
              <?php 
            } 
            mysql_free_result($rech_mat); 
          } 
          ?> 
          <br /><input type="submit" value="Envoyer" />
        </fieldset> 
      </form> 
      <?php 
      mysql_close($connexion); 
      }else{  
          ?> 
          <p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p> 
          <?php 
        } 
      ?> 
  </body> 
</html>

par fred9999 » 03 oct. 2006, 13:36

tu peut mettre ta fonction en ligne pour voir??

par arno77 » 03 oct. 2006, 13:33

le $_SERVER['PHP_SELF'] se fait dans une fonction qui se trouve a l'endroit ou tu fais l'echo.donc en fait

<?php <div id=affichage>'; 
        /* ---- insertion de l'affichage administratif ---- */ 
        if (isset($_GET['lien'])){ 
// dans la fonction affiche modif je fais le $_SERVER['PHP_SELF'] 
//------------------------------------------------------------------------
        if( $_GET['lien']=='_ADD_SM') { affiche_modif();} 
//------------------------------------------------------------------------
//------------------------------------------------------------------------
            elseif( $_GET['lien']=='_ADD_DEV') {echo 'add dev<br>';} 
            elseif( $_GET['lien']=='_ADD_CONT_DEV') {echo 'add dev cont<br>';} 
            elseif( $_GET['lien']=='_ALT_SM') {echo 'alt sm<br>';} 
            elseif( $_GET['lien']=='_ALT_DEV') {echo 'alt dev<br>';} 
            elseif( $_GET['lien']=='_ALT_CONT_DEV') {echo 'alt dev cont<br>';} 
            elseif( $_GET['lien']=='_DEL_SM') {echo 'del sm<br>';} 
            elseif( $_GET['lien']=='_DEL_DEV') {echo 'del dev<br>';} 
            else{echo 'del dev cont<br>';} 
        }else{ 
            echo _MESSAGE_ADMIN_ACCUEIL ; 
        }  
    //include_once ( './gestion_du_site/affichage_admin.php'); 
    echo' 
  </div> 


Sinon je ne fais apparaitre les nom de mes variable que pour verifier que mes tests marchent bien.

par fred9999 » 03 oct. 2006, 11:42

je comprend pas trop pkoi tu entre quelques chose dans ta variable
pour réecrirre la meme chose en echo
<?php echo"<div id=affichage>"; 
        /* ---- insertion de l'affichage administratif ---- */ 
        if (isset($_GET['lien']))
		{
            if( $_GET['lien']=='_ADD_SM')
			 {
			 echo $_SERVER['PHP_SELF'];
			 } 
            else
			{
			$affi=str_replace("_"," ",$_GET['lien']);
			echo '$affi<br>';
			} 
        }else{ 
            echo "_MESSAGE_ADMIN_ACCUEIL" ; 
        }  
    //include_once ( './gestion_du_site/affichage_admin.php'); 
    echo"</div>"; 
non je sais pas si c'es pas plu simple???

par arno77 » 03 oct. 2006, 11:36

en fait dans ma fonction je fais afficher des matieres en fonction de la classe selectionner si il s'agit de sixieme ca n'affiche pas grec ou latin alors que si il s'agit d'une classe superieure c possible.

donc une premiere selection dans une liste deroulante pour la classe qui recharge automatiquement en gardant la classe selectionner et ne m'affiche que les matieres de cette classe

par Ryle » 03 oct. 2006, 11:36

Tu devrais faire un tour dans la doc sur la liste des valeurs disponibles dans $_SERVER[] et voir à quoi elles correspondent :)

$_SERVER['PHP_SELF'] te retourne uniquement l'adresse web du fichier.
Le contenu de $_SERVER['QUERY_STRING'] devrait t'interesser ;)

par fred9999 » 03 oct. 2006, 11:32

<?php echo"<div id=affichage>"; 
        /* ---- insertion de l'affichage administratif ---- */ 
        if (isset($_GET['lien']))
{
            if( $_GET['lien']=='_ADD_SM')
			 {
			 echo $_SERVER['PHP_SELF'];
			 } 
            elseif( $_GET['lien']=='_ADD_DEV') {echo 'add dev<br>';} 
            elseif( $_GET['lien']=='_ADD_CONT_DEV') {echo 'add dev cont<br>';} 
            elseif( $_GET['lien']=='_ALT_SM') {echo 'alt sm<br>';} 
            elseif( $_GET['lien']=='_ALT_DEV') {echo 'alt dev<br>';} 
            elseif( $_GET['lien']=='_ALT_CONT_DEV') {echo 'alt dev cont<br>';} 
            elseif( $_GET['lien']=='_DEL_SM') {echo 'del sm<br>';} 
            elseif( $_GET['lien']=='_DEL_DEV') {echo 'del dev<br>';} 
            else{echo 'del dev cont<br>';} 
        }else{ 
            echo "_MESSAGE_ADMIN_ACCUEIL" ; 
        }  
    //include_once ( './gestion_du_site/affichage_admin.php'); 
    echo"</div>"; 

ET tu souhaite faire koi en gros??

sinon dès que tu obtien ta variable affiche la pour voir

par arno77 » 03 oct. 2006, 11:18

je vais te mettre mon code se sera plus simple
ma page se divise en deux a gauche un menu

Code : Tout sélectionner

<div id=admin> <a href="./paideia_admin.php?lien=_ADD_SM">Ajouter une sous matière</a> <a href="./paideia_admin.php?lien=_ADD_DEV">Ajouter un nom de devoir</a> <a href="./paideia_admin.php?lien=_ADD_CONT_DEV">Ajouter le contenu d'un devoir</a> </div>
a droite l'affichage
<div id=affichage>';
        /* ---- insertion de l'affichage administratif ---- */
        if (isset($_GET['lien'])){



            if( $_GET['lien']=='_ADD_SM') {'c\'est dans la fontion qui est ic que je fais le $_SERVER['PHP_SELF'] est donc que je perd la variable en rechargeant la page' ;}





            elseif( $_GET['lien']=='_ADD_DEV') {echo 'add dev<br>';}
            elseif( $_GET['lien']=='_ADD_CONT_DEV') {echo 'add dev cont<br>';}
            elseif( $_GET['lien']=='_ALT_SM') {echo 'alt sm<br>';}
            elseif( $_GET['lien']=='_ALT_DEV') {echo 'alt dev<br>';}
            elseif( $_GET['lien']=='_ALT_CONT_DEV') {echo 'alt dev cont<br>';}
            elseif( $_GET['lien']=='_DEL_SM') {echo 'del sm<br>';}
            elseif( $_GET['lien']=='_DEL_DEV') {echo 'del dev<br>';}
            else{echo 'del dev cont<br>';}
        }else{
            echo _MESSAGE_ADMIN_ACCUEIL ;
        } 
    //include_once ( './gestion_du_site/affichage_admin.php');
    echo'
  </div>   

par fred9999 » 03 oct. 2006, 11:09

salut je comprend pas trop ton problème !!!

dans ta page tu as ça par exmple :

$lien=$_GET['lien'];
$serveur=$_SERVER['PHP_SELF'];

??? :?:

et tu as pas ta variable lien??

petit probleme avec $_SERVER['PHP_SELF']

par arno77 » 03 oct. 2006, 11:06

Bonjour a tous,

J'ai une variable passé en url (http://arno77.clgon.dom/paideia_admin.php?lien=_ADD_SM)

Dans cette page je fais un $_SERVER['PHP_SELF'] mais ce faisant je perd la variable.

Je comprend pourquoi mais ne sais comment rectifier ce probleme

D'avance merci.