Php 如何检查变量是否已设置且不为NULL/空,并将其保存以供下一页进一步使用?

Php 如何检查变量是否已设置且不为NULL/空,并将其保存以供下一页进一步使用?,php,Php,我有一个嵌入式IE6浏览器的应用程序。在应用程序内部打开它时,它会发送一个$\u POST变量:$\u POST['variable'] 如果未发送此变量(安全检查以确保它仅通过应用程序打开),那么在脚本开头检查并保存以在下一页使用它的最佳方法是什么? 我在我的网站上使用会话,因为我存储帐户ids、email、password,所以我相信我也可以使用它来保存这个变量。请告诉我。您可以这样做: if(!array_key_exists('VARIABLE',$_POST)) { //this

我有一个嵌入式IE6浏览器的应用程序。在应用程序内部打开它时,它会发送一个
$\u POST
变量:
$\u POST['variable']

如果未发送此变量(安全检查以确保它仅通过应用程序打开),那么在脚本开头检查并保存以在下一页使用它的最佳方法是什么?


我在我的网站上使用会话,因为我存储帐户
id
s、
email
password
,所以我相信我也可以使用它来保存这个变量。请告诉我。

您可以这样做:

if(!array_key_exists('VARIABLE',$_POST))
{
   //this variable is not set in post - proceed accordingly
}
else
{
  //value is sent from POST, lets put it in session if its not already there,
  //or if a previous POST value is still in session - lets update that
  if(!array_key_exists('VARIABLE',$_SESSION) || 
  $_SESSION['VARIABLE'] != $_POST['VARIABLE'])
  {
     $_SESSION['VARIABLE'] = $_POST['VARIABLE'];
  }
}

// ...in the rest of the code check $_SESSION['VARIABLE'] and act accordingly.

我想你可能会发现这很有用,我刚刚做了一些测试:

echo isset($nothing) ? 'y' : 'n'; // no
$something = '';
echo isset($something) ? 'y' : 'n'; // yes
unset($something);
echo isset($something) ? 'y' : 'n'; //no

echo NULL == NULL        ? 'y' : 'n'; // y
echo NULL == ''          ? 'y' : 'n'; // y
echo NULL === ''         ? 'y' : 'n'; // n
echo NULL == $nothing    ? 'y' : 'n'; // y
echo NULL === $nothing   ? 'y' : 'n'; // y
echo NULL === $nothing   ? 'y' : 'n'; // y
$something = 'asd';
echo NULL === $something ? 'y' : 'n'; // n

会话是将值从一页保存到下一页的常用方法。你应该可以使用它。谢谢,还想知道当post变量设置为会话时,我是否应该清理它?=>`$_会话['VARIABLE']=$\u POST['VARIABLE'];`。。我确信我的应用程序不能被更改为更改post变量,但还是100%确定它更好吗?请告诉我好吗?@Monk25-当然可以!!!不要将任何用户提供的数据放在DB或会话或任何其他地方,除非已对其进行消毒。这是经验法则。不管你认为你的应用程序有多安全:)好的,谢谢。很高兴能肯定这一点。因此,将不安全(未净化)变量放入会话字符串也应该被视为不安全的?我通常做的是-不使用
$\u POST['var']
,而是使用自定义函数获取值,我编写的函数类似于
$var=getPost('var')
。在
getPost()
中,我编写代码从POST中获取值并对其进行清理。这意味着
$var
中的值现在是干净和安全的。通过这种方式,我不必关心如何清理每个变量,也不必根据我使用它的方式来处理——放入会话、更新数据库,或者只是在几行之后删除。我所有的变量都已清理,句号。我认为这是最好的办法。