Inclure pusieurs $_POST dans un input

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 : Inclure pusieurs $_POST dans un input

Re: Inclure pusieurs $_POST dans un input

par Elie » 12 juil. 2014, 12:16

Comme expliqué ca doit se faire en 2 temps ...
Premier formulaire pour stocker les informations en plus.

2eme formulaire pour passer ces informations dans le formulaire de Paypal...

Ou alors te servir des $_SESSION. Tu les stockes sur ton site, ca va sur Paypal, ca revient sur ton site apres le paiement et pouf les $_SESSION sont encore valable ... Je fais comme ca moi.

Re: Inclure pusieurs $_POST dans un input

par cindy381 » 12 juil. 2014, 10:04

Enfait paypal nous permet de rajouter un champ de notre choix ( celui se nomme custom ).
Si je met un champ du genre
<input name="titre" type="text" value="titre de l'annonce" />
( ça ne marche pas )

Je souhaite que l'utilisateurs saisie de facon " classique " avec des champs distinct son titre, sa ville, son phone .....
et tout récupérer dans la value du champ custom
<input name="custom" type="hidden" value="<?php echo $_SESSION['user']['id']>"/>
et je pourrais ainsi récupérer le tout sur l'autre page ipn.php avec un explode de custom

L'utilisateur rempli le formulaire --> ipn.php (recois les données du formulaire et traite ) --> redirection sur paypal pour procéder au payement

PS: Enfait j'ai besoin de stocker photo,titre,phone, rue en bdd mais je n suis pas obliger de passer par paypal pour les stocker en bdd mais dans mon formulaire à la fin j'ai le montant " amount " et lui doit passer par paypal.
Si vous avez une meilleur solution, je prends

Re: Inclure pusieurs $_POST dans un input

par Elie » 11 juil. 2014, 22:27

Il y a un soucis de logique dans ton code ...
A quelle moment le membre renseigne city, etc ...
Tu me dis que tu peux pas mettre ces champs dans Paypal et dans ton exemple il y a ces champs ...
Faut que ca se fasse donc en 2 temps.
Premier temps il renseigne ces champs et 2eme temps, tu les prérempli dans le formulaire paypal pour les recuperer apres.

Re: Inclure pusieurs $_POST dans un input

par cindy381 » 11 juil. 2014, 22:13

En fait je suis obligé de procéder de cette facon car paypal n'autorise pas d'autre champ à traiter.
Le seul moyen que "j'ai" trouver est donc de passer toutes mes variable souhaité au sein du champ custom que nous propose paypal.

en gros j'ai ma page formulaire.php -> qui va envoyer les info sur ipn.php (la page de verification avec le traitement paypal) et qui renvoi tt après sur le site de paypal pour procéder au payement
( formulaire.php --> ipn.php --> paypal )

il faut que je récupère mes champ titre,phone,street, photo sur ma page ipn.php pour les inclure dans mon INSERT afin de le mettre en bdd.

J'espère que tu ma compris

PS: tu met
<input name="custom" type="hidden" value="titre|city|street|postcode" />
ok c'est encore plus simple mais dans value il faut que j'integre aussi <?php echo $_SESSION['user']['id']
Qu'elle est donc la syntaxe a respecter
<?php echo $_SESSION['user']['id'], titre, street,postcode... ?

Re: Inclure pusieurs $_POST dans un input

par Elie » 11 juil. 2014, 21:48

Tu ne peux pas afficher
<input name="custom" type="hidden" value="<?php echo $_SESSION['user']['id'].'|'.$_POST['titre'].'|'.$_POST['city'].'|'.$_POST['street'].'|'.$_POST['postcode'] ?>" />
avant que la personne n'ai validé le formulaire ...
Donc faut juste mettre les nom des champs
<input name="custom" type="hidden" value="titre|city|street|postcode" />
Et tu feras là ou tu veux :
$explode = explode('|', $_POST['custom']);
foreach($explode as $v) {
echo $_POST[$v];
}
Meme si je vois pas l'interet ...
Tu les récuperes dans leur input respectif ...
'titre' => string '' (length=0)
'city' => string '' (length=0)
'street' => string '' (length=0)
'postcode' => string '' (length=0)

Re: Inclure pusieurs $_POST dans un input

par cindy381 » 11 juil. 2014, 21:41

voici le code complet du formulaire:
Il y a bien pourtant mes variable titre,city,...
Je ne comprends pas trop où est le problème, merci à vous
<?php
   
   $erreurs = array();   //tableau contenant des messages d'erreurs

 /* traitement des erreurs
 * tous les champs du formulaire non remplis seront placés
 * dans le tableau des erreurs $erreurs.A la fin du traitement
 * ce tableau sera soit vide, auquel cas on exécute la requête insert
 * pour inserer les données en bd, soit ce tableau n'est pas vide(champs non remplis) on invite
 * l'utilisateur à remplir tous les champs

 */
  if(!empty($_POST)) {//soumission du formulaire
   //Verification titre
  if(empty($_POST['titre']))
  {

   $erreurs['titre'] = 'Renseigner un nom de sortie';
  }
 
   //Verification ville
  if(empty($_POST['city']))
  {

    $erreurs['city'] = 'Renseigner une ville';
  }
 
   //Verification code postal
  if(empty($_POST['postcode']))
  {

    $erreurs['postcode'] = 'Renseigner un code postal';
  }
 

  
  /////////
  
  
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
  

$dossier = 'img/annonce/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Veuillez vérifier que le format de votre photo soit de type png, gif, jpg, jpeg, ';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'Téléchargement effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec du téléchargement !';
     }
}
else
{
     echo $erreur;
}


  
//fin traitement des erreurs


//s'il y a  problème, procède au debogage en decommentant les 2 lignes çi-dessus:
var_dump($_POST);
die('fin debogage');



//le tableau d'erreurs est vide alors on insère les données
if( empty( $erreurs)  ){




   $req = $bdd->prepare('INSERT INTO orders ( photo, titre, phone, street, postcode, city)
 
  VALUES (:photo, :titre, :phone, :street, :postcode, :city)');
   
   
   
     $retour= $req->execute(array(
          'photo'=>$_FILES['photo']['name'],
          'titre'=>$_POST['titre'],
          'phone'=>$_POST['phone'],
          'street'=>$_POST['street'],
          'postcode'=>$_POST['postcode'],
          'city'=>$_POST['city']
          
    ));
if( $retour ===false) echo "Problème lors de l'insertion";
       
}else{//le tableau ne contient
 echo "<p> renseignez les champs vides</p>";
}

}//fin de la soumission du formulaire


?>


Bienvenue,<?php echo $_SESSION['user']['email']; ?>

<form action="" method="post" enctype="multipart/form-data">

   

     <!-- titre de la sortie -->
     <label>titre :</label>
     <input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
     <div class="error"><?php if(isset($erreurs['titre'])) echo $erreurs['titre'];?></div>
 
     
      <!-- Ville de la sortie -->
      <label>Ville *</label>
      <input class="form-control" type="text" name="city" value="<?php if(isset($_POST['city'])) echo $_POST['city'];?>" />
      <div class="error"><?php if(isset($erreurs['city'])) echo $erreurs['city'];?></div>
     
     
       <!-- Ville de la sortie -->
      <label>Rue</label>
      <input class="form-control" type="text" name="street" value="<?php if(isset($_POST['street'])) echo $_POST['street'];?>" />
      <div class="error"><?php if(isset($erreurs['street'])) echo $erreurs['street'];?></div>
     
      <!-- Code postal de la sortie -->
      <label>Code postal *</label>
      <input class="form-control" type="text" name="postcode" value="<?php if(isset($_POST['postcode'])) echo $_POST['postcode'];?>" />
      <div class="error"><?php if(isset($erreurs['postcode'])) echo $erreurs['postcode'];?></div>
     

       <label>Télephone</label>
      <input class="form-control" type="text" name="phone" value="<?php if(isset($_POST['phone'])) echo $_POST['phone'];?>" />
       <div class="error"><?php if(isset($erreurs['phone'])) echo $erreurs['phone'];?></div>
             

      <label>Photo</label>
      <input  name="photo" type="file"/> 

<select name="amount">
<?php
$req = $bdd->query('SELECT * FROM offers');
while($d = $req->fetch(PDO::FETCH_ASSOC)){
        ?>
    <option value="<?php echo $d['price']; ?>"><?php echo $d['name'];?> -<?php echo $d['price'];?> Euros</option>
        <?php
}
?>
</select>

<input name="currency_code" type="hidden" value="EUR" />
<input name="shipping" type="hidden" value="0.00" />
<input name="tax" type="hidden" value="0.00" />
<input name="return" type="hidden" value="http://www.lasortie.fr/succes.php" />
<input name="cancel_return" type="hidden" value="URL_ANNULATION" />
<input name="notify_url" type="hidden" value="" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="[email protected]" />
<input name="item_name" type="hidden" value="offre publicitaire" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden" value="<?php echo $_SESSION['user']['id'].'|'.$_POST['titre'].'|'.$_POST['city'].'|'.$_POST['street'].'|'.$_POST['postcode'] ?>" />

    <input type="submit" value="S'abonner" class="btn primary">
    </form>

Re: Inclure pusieurs $_POST dans un input

par Elie » 11 juil. 2014, 21:29

Bah comme expliqué, pour lui il y a pas de $_POST avec titre, city et street ...

Au vu du code que tu as posté, je peux pas trop savoir d'ou cela vient ...

Re: Inclure pusieurs $_POST dans un input

par cindy381 » 11 juil. 2014, 21:07

Re, quand je soumet le formulaire j'ai l'erreur ci dessous à quoi est ce du svp ?

Téléchargement effectué avec succès !array(19) { ["titre"]=> string(10) "Aqua green" ["city"]=> string(3) "dsd" ["street"]=> string(3) "dsd" ["postcode"]=> string(5) "38000" ["phone"]=> string(10) "0476120123" ["amount"]=> string(1) "5" ["currency_code"]=> string(3) "EUR" ["shipping"]=> string(4) "0.00" ["tax"]=> string(4) "0.00" ["return"]=> string(33) "http://www.lasortie.fr/succes.php" ["cancel_return"]=> string(14) "URL_ANNULATION" ["notify_url"]=> string(0) "" ["cmd"]=> string(7) "_xclick" ["business"]=> string(22) "[email protected]" ["item_name"]=> string(18) "offre publicitaire" ["no_note"]=> string(1) "1" ["lc"]=> string(2) "FR" ["bn"]=> string(11) "PP-BuyNowBF" ["custom"]=> string(496) "
Notice: Undefined index: titre in /home/users6/l/lasortie/www/ma_pub.php on line 213

Notice: Undefined index: city in /home/users6/l/lasortie/www/ma_pub.php on line 213

Notice: Undefined index: street in /home/users6/l/lasortie/www/ma_pub.php on line 213

<?php
   
   $erreurs = array();   //tableau contenant des messages d'erreurs

 /* traitement des erreurs
 * tous les champs du formulaire non remplis seront placés
 * dans le tableau des erreurs $erreurs.A la fin du traitement
 * ce tableau sera soit vide, auquel cas on exécute la requête insert
 * pour inserer les données en bd, soit ce tableau n'est pas vide(champs non remplis) on invite
 * l'utilisateur à remplir tous les champs

 */
  if(!empty($_POST)) {//soumission du formulaire
   //Verification titre
  if(empty($_POST['titre']))
  {

   $erreurs['titre'] = 'Renseigner un nom de sortie';
  }
 
   //Verification ville
  if(empty($_POST['city']))
  {

    $erreurs['city'] = 'Renseigner une ville';
  }

?>
<form action="" method="post" enctype="multipart/form-data">

     <!-- titre de la sortie -->
     <label>titre :</label>
     <input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
     <div class="error"><?php if(isset($erreurs['titre'])) echo $erreurs['titre'];?></div>
 
     <!-- reste de code -->

<input name="currency_code" type="hidden" value="EUR" />

<input name="custom" type="hidden" value="<?php echo $_SESSION['user']['id'].'|'.$_POST['titre'].'|'.$_POST['city'].'|'.$_POST['street'].'|'.$_POST['postcode'] ?>" />

    <input type="submit" value="S'abonner" class="btn primary">
    </form>

Re: Inclure pusieurs $_POST dans un input

par cindy381 » 11 juil. 2014, 19:37

je te remercie, je vais essayer de me debrouiller par moi même maitenant
;)

Re: Inclure pusieurs $_POST dans un input

par Elie » 11 juil. 2014, 19:35

<input name="custom" type="hidden" value="<?php echo $_SESSION['user']['id'].'|'.$_POST['phone'].'|'.$_POST['titre'].'|'.$_POST['street'] ?>" />
Tu feras $explode = explode('|', $_POST['custom']);

Re: Inclure pusieurs $_POST dans un input

par cindy381 » 11 juil. 2014, 19:28

Il serait peut être plus interessant de partir sur un systeme d'explode à ca moment la par contre quel est la syntaxe à suivre au niveau de mon input custom pour la value

<input name="custom" type="hidden" value="user_id=<?php echo $_SESSION['user']['id'] ?>" />

par exemple: il faut que je rajoute dans la même value mon champ de saisie phone
<input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
Comment insérer le tout proprement et correctement svp
<input name="custom" type="hidden" value="user_id=<?php echo $_SESSION['user']['id'] ?>,<?php echo $_POST['phone'] ?>, <?php echo $_POST['titre'] ?>, <?php echo $_POST['street'] ?>, " />

Re: Inclure pusieurs $_POST dans un input

par Elie » 11 juil. 2014, 16:35

Regarde du coté de la fonction serialize(). http://php.net//manual/fr/function.serialize.php
Ca te permet de transformer un tableaux en chaine.
Sinon tu les sépares par un caratères precis et tu fais un explode() pour les recuperer...

Inclure pusieurs $_POST dans un input

par cindy381 » 11 juil. 2014, 16:34

Salut bon j'ai mon pti formulaire paypal
Je me suis rendu compte que je ne pouvais y mettre d'autre champ personel au sein du formulaire que fournis paypal.
Mais Paypal nous permet d'envoyer des données via le dernier input nommé "custom" je souhaiterais envoyé plusieurs données comme par exemple le titre, street, city, et une photo.
Je souhaite tout mettre dans le champ custom mais comment procéder svp, merci.

<form action="" method="post" enctype="multipart/form-data">

<!-- titre -->
<label>titre :</label>
<input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
<div class="error"><?php if(isset($erreurs['titre'])) echo $erreurs['titre'];?></div>

<input name="currency_code" type="hidden" value="EUR" />
<input name="shipping" type="hidden" value="0.00" />
<input name="tax" type="hidden" value="0.00" />
<input name="return" type="hidden" value="http://www............../succes.php" />
<input name="cancel_return" type="hidden" value="URL_ANNULATION" />
<input name="notify_url" type="hidden" value="" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="........" />
<input name="item_name" type="hidden" value="offre publicitaire" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden" value="user_id=<?php echo $_SESSION['user']['id'] ?>" />

<input type="submit" value="S'abonner" class="btn primary">
</form>