Problème de portée de variable URGENT

Résolu
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008 - 26 avril 2006 à 12:49
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008 - 26 avril 2006 à 14:17
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

cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008
26 avril 2006 à 14:17
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>
3
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
26 avril 2006 à 12:59
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
0
cs_Tupac59 Messages postés 48 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 24 avril 2008
26 avril 2006 à 13:09
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>
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
26 avril 2006 à 13:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2006 à 13:45
Hello,

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