【发布时间】:2016-06-16 19:51:54
【问题描述】:
我有一些从表单$_POST 数组中获取的变量,并且我已经在每个值trim() 和filter_input() 上运行了很多函数。我知道我必须在每个页面的开头添加session_start(),并像这样使用它:$_SESSION["value"]。
我只是不知道如何从 post 数组中添加我的值,并且仍然对它们使用我的卫生功能:
$ip = $_SERVER['REMOTE_ADDR'];
$name = trim( filter_input( INPUT_POST, "name", FILTER_SANITIZE_STRING ) );
$email = trim( filter_input( INPUT_POST, "email", FILTER_SANITIZE_EMAIL ) );
$state = trim( filter_input( INPUT_POST, "state", FILTER_SANITIZE_STRING ) );
$zip = trim( filter_input( INPUT_POST, "zip", FILTER_SANITIZE_STRING ) );
$product_delivery = trim( filter_input( INPUT_POST, "product_delivery", FILTER_SANITIZE_STRING ) );
$facility_delivery = trim( filter_input( INPUT_POST, "facility_delivery", FILTER_SANITIZE_STRING ) );
$cc_cost = trim( filter_input( INPUT_POST, "cc_cost", FILTER_SANITIZE_STRING ) );
$labor_cost = trim( filter_input( INPUT_POST, "labor_cost", FILTER_SANITIZE_STRING ) );
$util_cost = trim( filter_input( INPUT_POST, "util_cost", FILTER_SANITIZE_STRING ) );
$total_savings = ($product_delivery - $facility_delivery - $cc_cost - $labor_cost - $util_cost);
$tons_per_year = trim( filter_input( INPUT_POST, "tons_per_year", FILTER_SANITIZE_STRING ) );
$savings_per_year = ($total_savings * $tons_per_year);
我可以这样做吗? $_SESSION[$zip]
【问题讨论】:
-
只做
$_SESSION['name'] = $name把它当作一个数组。 -
foreach(array('foo','bar','baz) as $x) { $_SESSION[$x] = trim(filter_input(INPUT_POST, $x, etc...); } -
马克 B 说了什么。但是话又说回来,你确定你在会话中需要所有这些吗?如果您想进一步审查/帮助,您可能希望更深入地展示您的设计:) 您会看到,对全局变量使用会话很容易,只是因为它很方便。但也很容易掉入反模式陷阱
-
哇,这是一个很酷的解决方案@Marc B。像这样吗?
foreach(array('ip','name','email', 'state') as $x) { $_SESSION[$x] = trim(filter_input(INPUT_POST, $x, FILTER_SANITIZE_STRING); } -
@Sebas 再次查看我的设计后,我实际上不需要将所有这些变量都带过来。从技术上讲,Marc 的答案是最好的,但我不需要它!