Problème de portée de variable URGENT [Résolu]

Signaler
Messages postés
48
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
48
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
24 avril 2008
-
Voila le problème: depuis la page précédente je POST ['log2'], dans la page suivante je récupère ce log2 dans la variable $log et cela fonctionne puisque si je fais un echo dessus il m'affiche bien la bonne valeur. Cette variable $log me permet de définir le dossier dans lequel le membre va pouvoir uploader ses photos. Le problème et que quand je met :

$content_dir = "images/$log/"; // dossier où sera déplacé le fichier

lorsque je fais un echo de $content_dir , j'ai : images//   il ne m'interprète pas $log

Voici mon code :            D'AVANCE MERCI

<html>

<?   

if(isset($_POST['log2']))
{
    $log=$_POST['log2'];
    echo "$log";
}

if( isset($_POST['upload']))  // si formulaire soumis
{
    $content_dir = "images/$log/"; // dossier où sera déplacé le fichier
   
    echo "$content_dir";
   
    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";
}

?>

<form enctype="multipart/form-data" action="fileupload.php" method=POST>

</form>

</html>

5 réponses

Messages postés
48
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
24 avril 2008

Pour ce que ca intéresse j'ai trouvé le problème je suis fiere de moi lol mais merci quand même je poste la solution si ca peut aider quelqu'un.

Le problème résidait dans le fait qu'a l'ouverture de la page 'fileupload.php' on avait bien $log défini par log2. Mais lorsque l'on choisissait un fichier et qu'on cliker sur uploader, la page se rafraichissait mais la on avait plus le POST de log2 puisqu'il venait de la page précédente.

L'astuce est de POSTER à nouveau log2 lorsque l'on a choisi une image, de cette facon :

<html>

<?
    $log=$_POST['log2'];

if( isset($_POST['upload']))  // si formulaire soumis
{
    $content_dir = "images/$log/"; // dossier où sera déplacé le fichier
   
    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";

}
else
{
    echo "<form enctype='multipart/form-data' action='fileupload.php' method=POST>
   
   
   
    </form>";

}

?>

</html>
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Bonjour,

afin de regler ce problème, dans la page ou l tuilisateur definit $log2 je met un input de ce genre ...



Comme ca apres methode POST tu recupere cette variable comme si elle avait été fournit en meme temps que $log2


Je fais comme ça pour ma part mais peut etre ne faut il pas faire ainsi ...

une chose par contre ... utilises htmlentities on ne sait jamais ...

Voilà

-------------------------------------------------------------------------------------------------------
         
Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
Messages postés
48
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
24 avril 2008

ben enfait voila la page précédente d'où vient log2 si ca peut vous éclairer :

<html>

<head>
<link rel="stylesheet" type="text/css" href="css.css"/>
<title> Diapo </title>
</head>

<center> Votre espace de stockage
</center>

<?    $id=$_POST['log'];
    $pw=$_POST['mdp'];

    $dir = "images/$id";
   
    //connexion à mysql
    $link=mysql_connect('localhost','root','')
    or die("Problème de connexion à MySQL");
   
    //selection de la base
    $db='diapo';
    $sel=mysql_select_db($db,$link)
    or die("Problème de connexion à la base de données");
   
    //création de la requete sql
    $sql="SELECT * FROM comptes WHERE pseu='$id'";
   
    //envoi dla reket
    $result=mysql_query($sql);
   
    // récupération du résultat
    $m=mysql_fetch_array($result);
    $mdp=$m['mdp'];
   
    mysql_close();
   
    if($pw==$mdp)
    {
        $dir="images/$id";
       
        echo "<center>Bonjour $id, voici la liste de vos images:

";
       
        if(is_dir($dir))
        {
            if($dh = opendir($dir))
            {
                while (($file = readdir($dh)) !== false)
                {
                    if($file!=="." && $file!==".." && $file!=="Thumbs.db")
                    {
                        echo "$file

";
                    }
               
                   }

                closedir($dh);
               }
           }
       
        echo "<form action='fileupload.php' method=POST>
       
        </form>";
   
    }
    else
    {
        echo "Vous n'avez pas de compte enregistré ou votre mot de passe est éronné

";
    }
       
?>

</html>
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Euh c'est peut etre moi mais je m'y retrouve pas dans ton code ...

tes noms de variables sont pas vraiment  explicite  et ton code est imbriqué html/php.

Néanmoins pr comprendre d ou vient le probleme tu devrais suivre l
erreur a savoir verifier si a chaque pahe ta variable est defnit et si
oui la post tu apres au sein du formulaire

-------------------------------------------------------------------------------------------------------
         
Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

définis $log = ''; avant ton isset sur le post de log2.
Ou utilise le post directement dans tes différentes lignes de code.