Re: Parameter passing question [message #173550 is a reply to message #173547] |
Mon, 18 April 2011 19:04 |
Denis McMahon
Messages: 634 Registered: September 2010
Karma:
|
Senior Member |
|
|
On Mon, 18 Apr 2011 14:34:33 -0400, Chuck Lavin wrote:
> "Chuck Lavin" <x(at)x(dot)x> wrote in message
> news:Qk%qp(dot)16994$7N3(dot)5715(at)newsfe10(dot)iad...
>> "Unrest" <unrest(at)nullvector(dot)org> wrote in message
>> news:4dac7f92$0$68307$afc38c87(at)news5(dot)united-newsserver(dot)de...
>>> Am Mon, 18 Apr 2011 17:42:31 +0000 schrieb Denis McMahon:
>>>> <?php
>>>> if (isset($_GET['x'])) {
>>>> if ($_GET['x'] == null) {
>>>> // it's null
>>>> } else {
>>>> // it has data
>>>> }
>>>> } else {
>>>> // it's not defined
>>>> }
>>>> ?>
>>>>
>>>>
>>> isset() checks if a variable exists and _is not null_. ->
>>> http://de.php.net/manual/en/function.isset.php
>>>
>>> so your "if ($_GET['x'] == null)" will never evaluate to true.
>> My point exactly. How can I tell if a URL does not reference a
>> parameter at all?
>>
>> I need to move passed parameters into session variables:
>>
>> 1) If a parameter is passed with a value, set the session variable with
>> that
>> value;
>>
>> 2) If a parameter is passed with an empty value, get rid of that
>> session variable;
>>
>> 3) If a parameter is not passed at all (not referenced in the URL),
>> don't touch the session variable.
> I have this IF statement:
>
> if (isset($_SESSION['COMPANY_CODE'])) {
> $COMPANY_CODE = $_SESSION['COMPANY_CODE'];
> } else {
> $query = parse_str($_SERVER['QUERY_STRING']); $COMPANY_CODE = $app;
> $_SESSION['COMPANY_CODE'] = $COMPANY_CODE;
> }
>
> It currently does the reverse of what I need it to do. This block gives
> precedence to the session variable. If the session variable exists, the
> passed parameter is ignored.
>
> I need to give precedence to the passed parameter. If the parameter is
> passed (either with a value or empty), I need to modify the session
> variable accordingly. If the parameter is not passed, I want to leave
> the session variable untouched.
>
> As I understand it, checking for isset($app) will not tell the
> difference between http://www.somewhere.com/?app= and
> http://www.somewhere.com .
<?php
// first set the value according to the session variable
// if set, else to an empty string
if (isset($_SESSION['COMPANY_CODE'])) {
$COMPANY_CODE = $_SESSION['COMPANY_CODE'];
} else {
$COMPANY_CODE = "";
}
// now over-ride the previous value with the value from the
// http get request if one is set
if (isset($_GET['app'])) {
if ($_GET['app'] === "") {
// app was an empty string
$COMPANY_CODE = "";
} else {
// app was non empty string
$COMPANY_CODE = $_GET['app'];
}
} else {
// app not defined in get
// leave variable alone alone
}
// finally, update the session variable to the current value
$_SESSION['COMPANY_CODE'] = $COMPANY_CODE;
?>
Rgds
Denis McMahon
|
|
|