On Fri, 2002-02-01 at 14:27, Administrator wrote:
> Yesterday I presented this problem to a local usergroup...
> 
> // the following lines are contained in a class 
> // although I am echoing the value of $age from within the class
> // this is only for testing during development. 
> // $age will be assigned to [$this->age_Range] later in the code

No bug here: you're outputting text containing a '<' to a web page,
so the browser will try to interpret it as the start of a tag if it's
immediately followed by a character. In your profile class, change

        $this->age_Range = $age;

to

        $this->age_Range = htmlspecialchars($age);

and you'll see what I mean. (You could always just use 'View source',
I s'pose).


Cheers,

Torben


> $age = " AND ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5)<RIGHT(dob,5))";
> $age .= " BETWEEN '$this->minAge' AND '$this->maxAge')";
> echo $age."<br>";
> Output of the echo statement looks exactly like this...
> AND ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5)<RIGHT(dob,5))
> 
>-----------------------------------------------------------------------------------------------
> Here is what I found:
> 
> Now, from the above if I add white space between "...)<R..." like this "...) < R..." 
>everything works!
> The revised assignment looks like this:
> $age = " AND ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5) < 
>RIGHT(dob,5))";
> $age .= " BETWEEN '28' AND '42')";
> And echoes:
> AND ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5)<RIGHT(dob,5))BETWEEN 
>'28' AND '42')
> 
>-----------------------------------------------------------------------------------------------
> If you run the following code, you will see what I mean. I found this to be the case 
>with PHP 4.0.2 on Windows NT 4.0 and with PHP 4.0.6 on Linux. At one point I found 
>that echo of $age from outside the class returned the proper value regardless of 
>white space, now I can not re-create this. The behavior would appear to be the same 
>regardless of where you echo the var from. 
> For what it's worth...
> Kevin
> ---------------------------------------------------------
> <?PHP
> /*+------------------------------------------+
> |File: testclass.cls.php |
> |By: Kevin Koons |
> |On: Friday, February 01, 2002 11:34:41 AM |
> +------------------------------------------+*/
> $myProfile = new profile;
> $sql = $myProfile->profile1();
> echo "<B>The value of [\$age] returned by</B> 
>\$myProfile->profile1()<br><hr><br>".$sql."<br><hr><br><br><br>";
> echo "<B>called from class profile using</B> echo 
>\$myProfile->age_Range<br><hr><br>".$myProfile->age_Range."<br><hr><br><br><br>";
> $sql = $myProfile->profile2();
> echo "<B>The value [\$age] returned by</B> 
>\$myProfile->profile2()<br><hr><br>".$sql."<br><hr><br><br><br>";
> echo "<B>called from class profile using</B> echo 
>\$myProfile->age_Range<br><hr><br>".$myProfile->age_Range."<br><hr><br><br><br>";
> class profile
> {
> var $age_Range;
> var $minAge = 28;
> var $maxAge = 42;
> Function profile1() {
> // orig code, no white space
> $age = " AND ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5)<RIGHT(dob,5))";
> $age .= " BETWEEN '$this->minAge' AND '$this->maxAge')";
> $this->age_Range = $age;
> echo "<B>Echoed from IN class Profile, no white space</B><br><hr><br>";
> echo $this->age_Range."<br><hr><br><br><br>";
> Return ($age);
> }
> Function profile2() {
> // added white space between "...) < RIGHT..."
> $this->age_Range = " AND ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5) < 
>RIGHT(dob,5))";
> $this->age_Range .= " BETWEEN '$this->minAge' AND '$this->maxAge')";
> echo "<B>Echoed from IN class Profile, white space added</B><br><hr><br>";
> echo $this->age_Range."<br><hr><br><br><br>";
> Return ($age);
> }
> }
> ?>
> 
-- 
 Torben Wilson <[EMAIL PROTECTED]>
 http://www.thebuttlesschaps.com
 http://www.hybrid17.com
 http://www.inflatableeye.com
 +1.604.709.0506


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to