2014-01-31 68 views
0

我想用$ _REQUEST,但我不希望值,如果它从一个cookie来了。做这个的最好方式是什么?这是我目前的做法。由于

$value=isset($_GET['name'])?$_GET['name']:(isset($_POST['name'])?$_POST['name']:NULL); 
+1

任何你想使用$ _REQUEST而不是特定的$ _GET或$ _POST的原因? –

+0

因为我的代码不关心它的,只要它是那种两个人来。对于其他方面,我非常需要知道它是否是POST,但这不是其中之一。感谢 – user1032531

+0

如果你_永远_想'$ _COOKIE'阵列...你可以改变'variables_order'将它排除在外,所以它不会读,对于'$ _REQUEST',也不会使超全局。 – Wrikken

回答

1

我想用$ _REQUEST,但我不希望值,如果它从一个cookie来了。

这些是两个互斥的陈述,恐怕。据the PHP docs$_REQUEST是:

的关联数组默认包含_GET,$ _ POST和$ _COOKIE的内容。

如果你只想使用$_GET$_POST明确不想$_COOKIE那么你就必须单独使用。

总的来说这是一个好主意,抽象的基础设施的依赖,所以你可以做一个函数(或者更好的是,一个对象),它可以让你要寻找的值。也许这样简单:

function getRequestValue($name) { 
    if (isset($_GET[$name])) { 
     return $_GET[$name]; 
    } 
    if (isset($_POST[$name])) { 
     return $_POST[$name]; 
    } 
    // throw an error? return a default value or null? 
} 
+0

谢谢大卫,你和约翰所见略同! – user1032531

1

只是做一个函数,它这个逻辑你:

function fromCookielessRequest($key) { 
    if (isset($_GET[$key])) { 
     return $_GET[$key]; 
    } 
    if (isset($_POST[$key])) { 
     return $_POST[$key]; 
    } 
    return null; 
} 

$name  = fromCookielessRequest('name'); 
$password = fromCookielessRequest('password'); 
+0

感谢约翰,看起来我必须继续做类似我怎么过。 – user1032531