Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème envoi de formulaire

    10 avril 2007 à 15:46:37

    Bonjour à tous !

    J'ai un problème à l'envoi de mon formulaire ! Rien ne s'affiche :s

    Script PHP :


    <?php
    session_start();
    include('../Configuration/config.php');
    if (isset($_POST['titre']) AND isset($_POST['article']) AND isset($_POST['photo1']))
    {
    $photo1 = htmlspecialchars($_POST['photo1'], ENT_QUOTES);
    $photo2 = htmlspecialchars($_POST['photo2'], ENT_QUOTES);
    $photo3 = htmlspecialchars($_POST['photo3'], ENT_QUOTES);
    $photo4 = htmlspecialchars($_POST['photo4'], ENT_QUOTES);
    $photo5 = htmlspecialchars($_POST['photo5'], ENT_QUOTES);
    $titre = htmlspecialchars($_POST['titre'], ENT_QUOTES);
    $article = htmlspecialchars($_POST['article'], ENT_QUOTES);
    $article = preg_replace('#\[g\](.+)\[/g\]#isU', '<strong>$1</strong>', $article);
    $article=preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $article);
    $article=preg_replace('#\[l\](.+)\[/l\]#isU', '<a href="$1">$1</a>', $article);
    $article=preg_replace('#\[m\](.+)\[/m\]#isU', '<a href="mailto:$1">$1</a>', $article);
    $article = nl2br($article);

    $content_dir = '../Images/Blogs/pseudo/';
    $tmp_file = $_FILES['photo1']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
    $type_file = $_FILES['photo1']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
    $name_file = $_FILES['photo1']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {

    $pseudo = $_SESSION['pseudo'];
    mysql_query ("INSERT INTO hiphopstyle_blogsarticles VALUES('', 'images', '1', '". $photo1 ."', '". $photo2 ."', '". $photo3 ."', '". $photo4 ."', '". $photo5 ."', '". $pseudo ."', '". $titre ."', '". $article ."', '" . time() . "')")or die(mysql_error());

    echo 'F&eacute;licitation votre article &agrave; correctement &eacute;t&eacute; ajout&eacute; !';

    } else { echo 'erreur1'; }
    } else { echo 'erreur2'; }
    } else { echo 'erreur3'; }
    }
    mysql_close();
    ?>


    Script HTML :

    <form action="BLOG-cree-un-article-images-choix1.php" method="post" enctype="multipart/form-data" name="article" id="article">
                                    <table width="100%" border="0" cellspacing="0" cellpadding="5">
                                      <tr>
                                        <td width="150" valign="top"><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                            <tr>
                                              <td bgcolor="#FFFFFF"><label><div align="center">
                                                  <input name="photo1" type="file" id="photo1" size="10" />
                                                </div>
                                              </label></td>
                                            </tr>
                                          </table>
                                            <br />
                                            <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                              <tr>
                                                <td bgcolor="#FFFFFF"><label><div align="center">
                                                      <input name="photo2" type="file" id="photo2" size="10" />
                                                </div></label></td></tr>
                                            </table>
                                            <br />
                                            <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                              <tr>
                                                <td bgcolor="#FFFFFF"><label><div align="center">
                                                      <input name="photo3" type="file" id="photo3" size="10" />
                                                    </div>
                                                  </label></td>
                                              </tr>
                                            </table>
                                            <br />
                                            <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                              <tr>
                                                <td bgcolor="#FFFFFF"><label><div align="center">
                                                      <input name="photo4" type="file" id="photo4" size="10" />
                                                    </div>
                                                  </label></td>
                                              </tr>
                                            </table>
                                            <br />
                                            <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                              <tr>
                                                <td bgcolor="#FFFFFF"><label><div align="center">
                                                      <input name="photo5" type="file" id="photo5" size="10" />
                                                    </div>
                                                  </label></td>
                                              </tr>
                                            </table></td>
                                        <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                          <tr>
                                            <td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                <tr>
                                                  <td width="20%"><label>
                                                      <strong>Titre :</strong>
                                                      <label></label></td>
                                                  <td width="80%"><div align="right">
                                                      <input name="titre" type="text" id="titre" size="48" />
                                                  </div></td>
                                                </tr>
                                            </table></td>
                                          </tr>
                                        </table>
                                          <br />
                                          <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                            <tr>
                                              <td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                  <tr>
                                                    <td width="20%"><label>
                                                        <strong>Options :</strong>
                                                        <label></label></td>
                                                    <td width="80%">
                                                     
                                                      <div align="right">
                                                        <input name="button" type="button" style="width:50px;font-weight:bold" onclick="storeCaret('g')" value="Gras" /> 
                                                        <input name="button2" type="button" style="width:65px;font-style:italic" onclick="storeCaret('i')" value="Italique" /> 
                                                        <input name="button3" type="button"style="width:50px" onclick="storeCaret('l')" value="Lien" /> 
                                                        <input name="button4" type="button"style="width:50px" onclick="storeCaret('m')" value="Mail" />
                                                      </div></td></tr>
                                              </table></td>
                                            </tr>
                                          </table>
                                          <br />
                                          <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#333333">
                                          <tr>
                                            <td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                <tr>
                                                  <td width="20%" valign="top"><label>
                                                      <strong>Article :</strong>
                                                      <label></label></td>
                                                  <td width="80%"><div align="right">
                                                    <label>
                                                    <textarea name="article" cols="45" rows="10" id="article"></textarea>
                                                    </label>
                                                  </div></td>
                                                </tr>
                                            </table></td>
                                          </tr>
                                        </table></td>
                                      </tr>
                                    </table>
                                    <div align="center"><br />
                                      <label>
                                      <input type="submit" name="Submit" value="Envoyer" />
                                      </label>
                                    </div>
                                  </form>


    Base de données :


    CREATE TABLE `hiphopstyle_blogsarticles` (
      `id_article` int(11) NOT NULL AUTO_INCREMENT,
      `style` varchar(32) collate latin1_german2_ci NOT NULL,
      `choix` int(2) NOT NULL,
      `photo1` varchar(255) collate latin1_german2_ci NOT NULL,
      `photo2` varchar(255) collate latin1_german2_ci NOT NULL,
      `photo3` varchar(255) collate latin1_german2_ci NOT NULL,
      `photo4` varchar(255) collate latin1_german2_ci NOT NULL,
      `photo5` varchar(255) collate latin1_german2_ci NOT NULL,
      `pseudo` varchar(32) collate latin1_german2_ci NOT NULL,
      `titre` varchar(100) collate latin1_german2_ci NOT NULL,
      `article` text collate latin1_german2_ci NOT NULL,
      `timestamp` bigint(20) NOT NULL,
      PRIMARY KEY  (`id_article`)
    ) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=26 ;


    Merci à bientôt !
    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2007 à 15:57:46

      Euuuuuuuuuuh.... :waw:
      Deux remarques, qui se rejoignent:
      - je trouve que ton message se réduit au minimum (encore que lorsque l'on voit sa taille, faut l'dire vite, mais passons... ^^ ): Bonjour - J'ai un problème - Merci - Au revoir. Certes il y a les formules de politesses d'usage (ce dont je te suis gré), mais il manque en grande partie l'essentiel: quelle est la nature du problème, ou plus exactement où se situe le problème dans ton code ?
      - deuxième remarque, qui complète la précédente: si tu le peux, édite ton message en commentant ton code d'une part, afin que l'on y voie un peu plus clair là-dedans; et poste également le message d'erreur (s'il y en a un) qui est renvoyé lorsque tu essayes d'envoyer un formulaire.
      Je ne sais pas si une mule comme moi pourra t'aider à résoudre ton problème (j'ai déjà un peu de mal à saisir le sens de ton code ^^ ), mais je sais que cela aidera grandement d'autres codeurs plus expérimentés à se retrouver dans ton code.
      • Partager sur Facebook
      • Partager sur Twitter
        10 avril 2007 à 16:22:17

        Salut à tous,

        Malgré la tonne de ligne non commenté je pense que j'ai trouvé ton soucis, au début de ta page qui reçoit le formulaire tu fait ceci :


        isset($_POST['photo1']


        Ce qui est faut car si tu veux le tester il faut le tester avec la global $_FILES, car $_POST['photo1'] n'existe pas.

        Donc remplace par

        ($_FILES['photo1']['size'] > 0)


        Cordialement Inazo.
        • Partager sur Facebook
        • Partager sur Twitter
          10 avril 2007 à 20:33:20

          Ok merci !
          Désolé pour le tas de code lol ^^

          Inazo j'ai fait ce que tu m'a dit mais maintenant sa m'affiche erreur 3 dans un des else à l'envoi du formulaire !
          • Partager sur Facebook
          • Partager sur Twitter
            11 avril 2007 à 9:32:42

            le problème vient de la :


            if( !is_uploaded_file($tmp_file) )


            Remplace par ceci :


            if( is_uploaded_file($tmp_file) )


            Car le test que tu faisait c'est si la photo est uploader tu affiche une erreur ce qui en soit n'est pas logique dans ton cas.

            Cordialement Inazo.
            • Partager sur Facebook
            • Partager sur Twitter
              11 avril 2007 à 12:47:40

              Merci de ton aide inazo !! C'est très sympa !
              :euh: Mais désormais à l'envoi du formulaire sa m'affiche erreur 2
              J'ai cherché plusieurs solutions sans réponses :s
              • Partager sur Facebook
              • Partager sur Twitter
                12 avril 2007 à 8:45:37

                Salut à toi,

                En fait c'est simple tu fais toujours tes tests à l'envers ceci :


                if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
                {
                $name_file = $_FILES['photo1']['name'];

                if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
                {


                Remplace le par ceci :


                if( strstr($type_file, 'jpg') && strstr($type_file, 'jpeg') && strstr($type_file, 'bmp') && strstr($type_file, 'gif') )
                {
                $name_file = $_FILES['photo1']['name'];

                if( move_uploaded_file($tmp_file, $content_dir . $name_file) )
                {


                Voila qui devrait aller grandement mieux.

                Cordialement Inazo.
                • Partager sur Facebook
                • Partager sur Twitter
                  12 avril 2007 à 10:18:12

                  Ok je viens de comprendre ^^
                  Sinon sa m'affiche toujours erreur 2 :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 avril 2007 à 12:41:05

                    Salut.
                    Tu devrais plutôt mettre ceci:
                    if (!empty($_POST['titre']) AND !empty($_POST['article']) AND ($_FILES['photo1']['size'] > 0))


                    à la place de ceci:
                    if (isset($_POST['titre']) AND isset($_POST['article']) AND isset($_POST['photo1']))

                    Personnelement, je te conseil d'utiliser la fonction au lieu de
                    Pourquoi? En fait isset vérifie uniquement si la variable est bien affectée, il ne fait rien d'autre. Contrairement à isset, empty verifie si la variable est affectée, si c'est le cas, elle vérifie également si elle est vide ou pas.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 avril 2007 à 13:09:42

                      Citation : inazo

                      Salut à toi,

                      En fait c'est simple tu fais toujours tes tests à l'envers ceci :


                      if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
                      {
                      $name_file = $_FILES['photo1']['name'];

                      if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
                      {



                      Remplace le par ceci :


                      if( strstr($type_file, 'jpg') && strstr($type_file, 'jpeg') && strstr($type_file, 'bmp') && strstr($type_file, 'gif') )
                      {
                      $name_file = $_FILES['photo1']['name'];

                      if( move_uploaded_file($tmp_file, $content_dir . $name_file) )
                      {



                      Voila qui devrait aller grandement mieux.

                      Cordialement Inazo.



                      Tester l'extention d'un fichier uniquement sur ce qui le termine, c'est du suicide et une belle grosse faille de sécurité, pour les images = getimagesize()
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 avril 2007 à 14:40:18

                        Tu me conseil de faire comment ???
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 avril 2007 à 8:47:00

                          A > Palleas :

                          Je suis parfaitement aux courants de la faille de sécurité je n'en ai pas parlé pour le moment car ce n'est pas le soucis actuel. Chaque chose en sont temps d'abord lui corriger ces erreurs ensuite lui sécuriser l'affaire.

                          Cordialement Inazo.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 avril 2007 à 13:26:40

                            Merci inazo !
                            J'ai toujours le même problème, erreur 2 est affiché à l'envoi du formulaire.

                            Merci à tous de votre aide !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 avril 2007 à 13:32:54

                              Remplace ceci :


                              if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )


                              Par ceci :


                              if( ($type_file == 'jpg') || ($type_file == 'jpeg') || ($type_file == 'bmp') || ($type_file == 'gif') )


                              Je pense que ton erreur proviens de là, après en effet il faudra vérifier comment sécuriser l'upload en question.

                              Cordialement Inazo.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 avril 2007 à 15:59:42

                                Toujours le même problème :(
                                ERREUR 2

                                Merci encore de ton aide c'est très sympa !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 avril 2007 à 17:39:15

                                  Plus personne pour m'aider ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    25 avril 2007 à 8:40:42

                                    Désolé pour le temps de réponse mais pas mal de travail ces deniers temps.

                                    Essaye ceci plutôt :


                                    if( strstr($type_file, 'jpg') || strstr($type_file, 'jpeg') || strstr($type_file, 'bmp') || strstr($type_file, 'gif') )
                                    {


                                    Explication : Il faut mettre des ou car ton image ne peut être à la fois en jpg, en bmp et en gif.

                                    Cordialement Inazo.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 avril 2007 à 1:46:46

                                      Nikel sa marche merci beaucoup !
                                      Mais il y a encore beaucoup à faire pour améliorer ce script.

                                      Et j'ai encore quelques problèmes :

                                      1) Alors voilà :
                                      $content_dir = '../Images/Blogs/pseudo/';

                                      Ceci est le chemin ou est enregistré l'image, mais j'aimerais qu'a la place de pseudo mettre une session. Celle ci : $_SESSION['pseudo'];
                                      Comment je peut l'intégrer ?

                                      2) mysql_query ("INSERT INTO hiphopstyle_blogsarticles VALUES('', 'images', '1', '". $photo1 ."', '". $photo2 ."', '". $photo3 ."', '". $photo4 ."', '". $photo5 ."', '". $pseudo ."', '". $titre ."', '". $article ."', '" . time() . "')")or die(mysql_error('erreur sql'));

                                      Dans cette requête, ou il y a ". $photo1 ." J'aimerais à la place que sa envoi le lien de l'image c'est à dire ( $content_dir = ) + ( lefichier.jpg )

                                      Encore merci de ton aide inazo !
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 avril 2007 à 9:54:51

                                        Salut à toi,

                                        Pour le content dir c'est pas compliquer il suffit de faire une concaténation des chaines :


                                        $content_dir = '../Images/Blogs/'.$_SESSION['pseudo'].'/';


                                        Voila maintenant pour la base de données rien de plus simple, encore une concaténation :


                                        $photo1 = $content_dir.$photo1;


                                        Tu met ceci avant de faire la requette est le toujours est joué, un conseil sécurise un peut la session pseudo avec un htmlspeciachars();

                                        Cordialement Inazo.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 avril 2007 à 10:00:31

                                          Salut !

                                          Oui exact merci beaucoup, j'avais fait sa en faite mais avec quelques petites fautes donc je penser être totalement à coter de la plaque mais non !

                                          Merci encore :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Problème envoi de formulaire

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown