2010-12-13 16 views
0

J'essaie de trouver une façon plus propre de traiter les données POST. Voici ma forme:Formulaires de traitement

Email <input type="text" name="email" /><br/> 
Subject <input type="text" name="subject" /><br/> 
Message <input type="text" name="body" /><br/> 
<input type="submit" value="Submit"> 

J'ai créé une page PHP pour traiter la forme et a appelé une classe comme ceci:

$mail = new Email(); 
$mail->processPost($_POST); 

Dans ma classe, j'ai:

function processPost($post) { 
foreach($post as $key => $value) { 
$_POST[$key] = $$value; 
} 
} 

function Email($to, $subject, $body) { 
$this->processPost->email; 
$this->processPost->subject; 
$this->processPost->body; 
} 

Mais Je ne suis pas sûr de savoir comment définir les variables comme publiques dans la fonction processPost afin qu'elles soient disponibles pour la fonction Email. J'apprécierais de l'aide avec ça. Je ne reçois aucun résultat de la fonction processPost lorsque je l'appelle comme ci-dessus et j'essaie d'écho les variables en dessous. Merci.

+0

Désolé, j'ai raté coder une partie du code comme code. – sehummel

Répondre

1

Vous ne savez pas exactement ce que vous essayez d'accomplir ici. Peut-être quelque chose comme ça? PS: Cet exemple est en PHP5, il ne fonctionne pas en PHP4.

+0

Merci, Joksnet. J'espérais pouvoir écrire un cours suffisamment flexible pour pouvoir traiter de façon très abstraite toutes les variables du post, en assignant les variables à la volée. Une partie des résultats que je veux générer dyanmiquement $ email = $ _POST ['email'], $ subject = $ _POST ['sujet'], etc, où la clé est assignée au nom de la variable, donc je peux travailler avec ces variables dans d'autres parties du script. – sehummel

2

Je ne suis pas sûr de ce que vous essayez de faire dans votre fonction Postprocess ici:

foreach ($ post as $ key => $ value) { $ _POST [$ key] = $ valeur $; }

double dollar assignant $ _POST [$ key] à la valeur de la variable valeur $$ (ex $ email) mais variable $ e-mail n'a pas de valeur de ce que je peux dire. Maintenant, pourquoi l'attribuez-vous à $ _POST [$ key] au lieu de $ this-> processPost [$ key]? Si vous l'avez fait de cette façon, vous devriez être en mesure d'accéder à la valeur de la fonction Email: $ this-> processPost [ « email »]

Toutes mes excuses si je mal lu la question

+0

Non, vous avez raison. Je réécris comme ceci: la fonction publique processPost ($ post) { \t \t \t foreach ($ post as $ key => $ value) { \t \t \t \t $$ key = $ _POST [$ key]; Comment puis-je obtenir les variables de cette fonction et les utiliser dans d'autres fonctions. Ai-je besoin de les rendre publics, ou je les accès avec e-mail (où ce fait référence à $ email $ this-> processPost-> de la fonction processPost \t \t \t}} \t \t – sehummel

+0

je ferais quelque chose comme?: foreach ($ post comme $ key => $ valeur) {$ this-> postProcess [$ key] = someSecurityEscapeCheck ($ value);} Je crois en php 4 ou 5, si vous affectez à une variable membre que vous n'ont pas déclaré dans la classe, c'est automatiquement public.Ensuite, dans la fonction Email, vous y accédez avec: $ this-> postProcess ['email'] (et vous n'avez pas besoin de le passer dans la fonction) J'ai ajouté une fausse fonction pour échapper les paramètres post parce que vous allez vouloir protéger contre les intrusions malveillantes. Mais cela dépasse la portée de cette réponse. – DTest

0
<?php 

class Email { 

    public $data=array(); 

    function __construct($array=array()) 
    { 
     foreach($array as $key=>$value) 
     { 
      $this->data[$key] = $value; 

     } 
     return (object) $this->data; /* :D */ 
    } 

    function get($key='') 
    { 
     return $this->data[$key]; 
    } 
} 

$foo = new Email($_POST); 

echo $foo->get('email'); 
echo $foo->get('subject'); 
?> 
+0

Je ne suis pas tout à fait sûr de ce que cela fait, mais il fait écho les valeurs de $ _POST donc j'étais heureux. Je ne recommanderais pas de l'utiliser – Ross

+0

Merci, Ross. Je pense que je vais mal à ce sujet. Je suis nouveau à le faire de cette façon (fonctions d'écriture). – sehummel

+0

Ross, je veux saisir toutes les variables de la publication et les assigner à des variables que je peux utiliser ailleurs dans la classe, donc je peux créer une fonction d'envoi avec toutes ces variables. – sehummel