Php 处理表格

Php 处理表格,php,post,Php,Post,我试图找到一种更干净的方法来处理POST数据。这是我的表格: 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"&g

我试图找到一种更干净的方法来处理POST数据。这是我的表格:

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">
在我的班上,我有:

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;  
}

但是我不知道如何在processPost函数中将变量设置为public,以便电子邮件函数可以使用它们。我很感激你能帮我。当我像上面那样调用processPost函数,然后尝试回显它下面的变量时,我没有从中得到任何输出。谢谢。

我不知道你在这里想要达到什么目的。也许是这样的

<?php
class Email
{
  protected $to = '';
  protected $subject = '';
  protected $body = '';

  public function __construct( $to, $subject, $body )
  {
     // TODO: Validate input with `filter_var`

     $this->to = $to;
     $this->subject = $subject;
     $this->body = $body;
  }

  public static function fromArray( array $array )
  {
    // TODO: Validate $array with `filter_var_array`

    return new self($array['to'], $array['subject'], $array['body']);
  }

  public function send()
  {
    // TODO: Implement send() function
  }
}

$mail = Email::fromArray($_POST);
$mail->send();

不确定您在这里想要实现什么。也许是这样的

<?php
class Email
{
  protected $to = '';
  protected $subject = '';
  protected $body = '';

  public function __construct( $to, $subject, $body )
  {
     // TODO: Validate input with `filter_var`

     $this->to = $to;
     $this->subject = $subject;
     $this->body = $body;
  }

  public static function fromArray( array $array )
  {
    // TODO: Validate $array with `filter_var_array`

    return new self($array['to'], $array['subject'], $array['body']);
  }

  public function send()
  {
    // TODO: Implement send() function
  }
}

$mail = Email::fromArray($_POST);
$mail->send();

我不确定您在后处理函数中要做什么:

foreach($key=>$value){ $\u POST[$key]=$$value; }

double dollar正在将$\u POST[$key]分配给变量$$value(例如$email)的值,但从我所能看出,$email变量没有任何值

现在,为什么要将其分配给$_POST[$key],而不是$this->processPost[$key]?如果这样做,您应该能够访问电子邮件函数中的值:$this->processPost['Email']


抱歉,如果我误读了问题

我不确定您在这里的后处理功能中要做什么:

<?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');
?>
foreach($key=>$value){ $\u POST[$key]=$$value; }

double dollar正在将$\u POST[$key]分配给变量$$value(例如$email)的值,但从我所能看出,$email变量没有任何值

现在,为什么要将其分配给$_POST[$key],而不是$this->processPost[$key]?如果这样做,您应该能够访问电子邮件函数中的值:$this->processPost['Email']

如果我误读了问题,请道歉


<?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');
?>


对不起,我没有将一些代码编码为代码。对不起,我没有将一些代码编码为代码。谢谢,Joksnet。我希望我可以编写一个足够灵活的类,以非常抽象的方式处理post中的所有变量,动态分配变量。我想要的部分结果是动态生成$email=$\u POST['email']、$subject=$\u POST['subject']等,其中键被分配给变量名,这样我就可以在脚本的其他部分使用这些变量。谢谢,Joksnet。我希望我可以编写一个足够灵活的类,以非常抽象的方式处理post中的所有变量,动态分配变量。我想要的部分结果是动态生成$email=$\u POST['email']、$subject=$\u POST['subject']等,其中键被分配给变量名,这样我就可以在脚本的其他部分处理这些变量。我不完全确定这是做什么的,但它回显了$\u POST值,所以我很高兴。我不建议你用它,汉克斯,罗斯。我想我做错了。Ross,我想从帖子中获取所有变量,并将它们分配给我可以在类中其他地方使用的变量,这样我就可以用所有这些变量创建一个send函数。好吧,我(很差)在上面演示的方法,就是这样做的。您只需在类中的任何位置执行
$this->data['some_field']
即可访问变量,因为它是可公开访问的。除了使用
$this->
设置和获取变量之外,我不知道有什么方法可以动态分配变量。但我完全是一个oop失败者。如果你要用我这个糟糕的例子,你可以用
$email=$this->get('email')在表单提交后在你的函数中。我不完全确定这是做什么的,但它回显了$\u POST值,所以我很高兴。我不建议你用它,汉克斯,罗斯。我想我做错了。Ross,我想从帖子中获取所有变量,并将它们分配给我可以在类中其他地方使用的变量,这样我就可以用所有这些变量创建一个send函数。好吧,我(很差)在上面演示的方法,就是这样做的。您只需在类中的任何位置执行
$this->data['some_field']
即可访问变量,因为它是可公开访问的。除了使用
$this->
设置和获取变量之外,我不知道有什么方法可以动态分配变量。但我完全是一个oop失败者。如果你要用我这个糟糕的例子,你可以用
$email=$this->get('email')操作。不,您做对了。我将其改写为:公共函数processPost($post){foreach($post as$key=>$value){$$key=$\u post[$key];然后如何从该函数获取变量并在其他函数中使用它们。我需要将它们公开,还是使用$this->processPost->email访问它们(其中引用的是processPost函数中的$email?}}我会做如下操作:foreach($key=>$value){$this->postProcess[$key]=someSecurityEscapeCheck($value);}我相信PHP4或PHP5,如果你分配给一个没有在类中声明的成员变量,它会自动公开。然后在Email函数中,你用:$this->postProcess['Email']访问它(你不需要将它传递到函数中)我添加了一个假函数来转义post参数,因为您想防止恶意输入。但这超出了此答案的范围。不,您答对了。我将其重写为:公共函数processPost($post){foreach($post as$key=>$value){$$key=$\u post[$key];然后如何从该函数获取变量并在其他函数中使用它们。我是否需要将它们公开,还是使用$this->processPost->email(其中引用了来自processPost函数的$email?}}我将执行以下操作:foreach($post as$key=>$value){$this->postProcess[$key]=someSecurityEscapeCheck($value);}我相信PHP4或PHP5,如果是的话