Php 处理表格
我试图找到一种更干净的方法来处理POST数据。这是我的表格: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
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')提交表单后,在您的函数中执行code>操作。不,您做对了。我将其改写为:公共函数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,如果是的话