[Résolu] Faire appel à une fonction php dans un formulaire?

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 : [Résolu] Faire appel à une fonction php dans un formulaire?

Re: Comment faire appel à une fonction php dans un formulair

par khaled_jamel » 15 sept. 2011, 14:22

merci enormement moogli pour le temps que tu ma consacré, je débute avec la programmation web c'est vrai, et c'est très intéressant que quelqu’un m'oriente vers la bonne route pour réussir.
merci enormement encore une x. :priere:

Re: Comment faire appel à une fonction php dans un formulair

par moogli » 15 sept. 2011, 12:42

echo '<form action="#" method="post">;
echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';

ça fait la même chose l'action du formulaire sera la page où tu te trouve (si tu est sur la page 428.php ça revient a écrire action="428.php") mais cela permet aussi de s'affranchir des soucis d’emplacement dû au pseudo frame ou au ré écriture d'url qui peuvent être changeante dans le temps sans avoir à ré écrire le code du formulaire :)

Ensuite il faut bien que tu comprenne qu'une action d'un formulaire réclame un rechargement de page, sauf si tu utilise un formulaire flash ou des bidouilles ajax type frames invisible pour réaliser l'envoi du fichier sans rechargement de la page.

Maintenant je pense que tu ne visualise pas correctement le fonctionnement de "la programmation web". Hors mis les cas ajax / flash le code n'évolue pas en fonction d'un clique comme tu le fait sur un soft (comme word ou autre) chaque clique demande un rechargement de page qui va engendrer l'emploi d'un script php.
ton script php va se dérouler du haut vers le bas séquentiellement.
donc tu peux dans l'ordre
- réaliser l'upload du fichier
- si bon réalise la conversion en pdf
- si bon réaliser la conversion en flash (utile a ?)

afficher le reste de la page, voir pré remplir le formulaire en cas d'erreur.
Attention on ne peut pas près remplir un champ de type file (simplement pour éviter d'essayer de forcer l'upload d'un fichier quelconque genre le fichier de password sous nux dans une partie cachée du formulaire etc etc).

Comme l'indique AB commence doucement et après quand petit a petit tous fonctionne monte en puissance pour ajouter des options :) :
- réaliser le formulaire (donc a priori c'est bon)
- réaliser l'upload du fichier correctement
- réaliser la modif en pdf
- réaliser la modif en swf

pour rappel voici le fonctionnement de php http://www.phpdebutant.org/article118.php (globalement)

@+

Re: Comment faire appel à une fonction php dans un formulair

par khaled_jamel » 15 sept. 2011, 12:10

Merci AB aussi pour la réponse

Sinon pour un débutant, ton projet est "assez" ambitieux.
Oui lol :) très ambitieux looool
Par exemple la transformation de fichiers vers pdf n'est pas des plus conviviales, tu penses utiliser quoi, fpdf ?
Non j'ai trouver un script python qui utilise openoffice que v lui faire appel dans mon script.
Quant à générer des fichiers swf avec php ...
pour la generation des fichiers swf je vais utiliser l'outils swftools sous linux pour passer mon document pdf à swf.

merci, juste si tu dispose un peut du temps explique moi un peut
Pour compléter, il y a aussi le "#" (action = "#") qui indique spécifiquement au navigateur qu'on appelle la même page.

Re: Comment faire appel à une fonction php dans un formulair

par khaledjamel » 15 sept. 2011, 12:02

Bonjour
merci moogli pour la réponse
salut,

tu n'a pas compris le fonctionnement de php.

Php ne fonctionne que sur le serveur et pas chez le client !
oui c'est vrai je debute avec php mais jje ne pas fait attention à ce point la c'est vrai :)
tu ne peux utiliser une fonction en action d'un formulaire il te faut indiquer une page cible (qui peut être la même que celle qui affiche).
ça c'est que je cherche à faire
donc en gros <form method="POST" action="pagecible.php" enctype="multipart/form-data">
j'ai essayer ça et ça marche mlais je veux travailler dans la même page pour utiliser les variable de cette fonction ulterieurement (Question : e c q je peut utiliser la fonction 'include' fichier cible pour récupérer les variable ensuite??)
si c'est le même fichier tu peux très bien laisser vide ce champ ou alors utiliser $PHP_SELF (utilistion obsolète) ou mieux $_SERVER["PHP_SELF"] !
après il faut utiliser ta fonction FileList();
svp si tu développe un peut pour un débutant comme moi loool
@+

Re: Comment faire appel à une fonction php dans un formulair

par AB » 15 sept. 2011, 01:45

si c'est le même fichier tu peux très bien laisser vide ce champ ou alors utiliser $PHP_SELF (utilistion obsolète) ou mieux $_SERVER["PHP_SELF"] !
Pour compléter, il y a aussi le "#" (action = "#") qui indique spécifiquement au navigateur qu'on appelle la même page.

A part cela, autre remarque, le champ
<input type="hidden" name="MAX_SIZE" value="1000000">
DOIT précéder le champ de type file sinon il ne sera pas pris en compte.

Si besoin, un tuto sur l'upload de fichiers ici

Sinon pour un débutant, ton projet est "assez" ambitieux. A moins de bien connaître la prog par ailleurs, je te conseillerais plutôt de commencer par des choses plus simples. Par exemple la transformation de fichiers vers pdf n'est pas des plus conviviales, tu penses utiliser quoi, fpdf ? Et puis l'ouverture des fichiers MS office n'est pas disponible sans options. Quant à générer des fichiers swf avec php ...

Re: Comment faire appel à une fonction php dans un formulair

par moogli » 14 sept. 2011, 23:08

salut,

tu n'a pas compris le fonctionnement de php.

Php ne fonctionne que sur le serveur et pas chez le client !
tu ne peux utiliser une fonction en action d'un formulaire il te faut indiquer une page cible (qui peut être la même que celle qui affiche).

donc en gros <form method="POST" action="pagecible.php" enctype="multipart/form-data">

si c'est le même fichier tu peux très bien laisser vide ce champ ou alors utiliser $PHP_SELF (utilistion obsolète) ou mieux $_SERVER["PHP_SELF"] !

après il faut utiliser ta fonction FileList();

@+

[Résolu] Faire appel à une fonction php dans un formulaire?

par khaled_jamel » 14 sept. 2011, 22:44

Salut
je débute avec php il y a quelques semaines et je développe maintenant un script qui aura comme objectif l'upload, la conversion vers pdf puis swf des fichiers MS office. je suis bloquer maintenant dans l'appel de la fonction d'upload dans mon formulaire afin de passer le fichier monté vers ma fonction et rester dans la même page
Merci pour votre aide

voici mon code
    <?php  
    // le formulaire  
      echo '<form method="POST" action="FileList()" enctype="multipart/form-data">';  // je pense que la solution est dans cette ligne non???
            echo '<span class="Titre_Form">Your File :</span>';  
        echo '<input type="file" name="fich">';
        echo '<input type="hidden" name="MAX_SIZE" value="1000000">';
        echo '<input name="Upload" type="submit" class="Titre_Form" value="Convert File">';
      echo '</form>';
      echo '<span class="Titre_Form">This is Your File</span>';
      echo '<br><br>';
      echo '<span class="Titre_Form">File Name :</span>';
      echo '<br>';
      echo '<span class="Titre_Form">Size :</span>';
      echo '<br><br>';
      echo '<span class="Titre_Form">This is the Link :</span>';
      echo '<br><br>';
      echo '<hr class="Ligne">';
      echo '<br>';
    // fonction Upload
      function FileList()
      {
      if(isset($_FILES['fich']))
      {
         $files_loc = 'up_files/';
         $file = basename($_FILES['fich']['name']);
         if(move_uploaded_file($_FILES['fich']['tmp_name'], $files_loc . $file)) //TRUE if OK
         {
            echo 'File Uploaded !';
         }
         else //FALSE if not OK
         {
            echo 'Problem when uploading file !';
           
         }
      }
      }
     ?>