Log in

View Full Version : Using value in a Custom Profile field in a javascript


aciurczak
10-20-2005, 10:40 PM
I would like to use a setting in a custom profile field to affect the behavior of a javascript. I am now calling the javascript from a vbulletin template, passing a variable defined in the template to call the script.

All I need to figure out is how to equate that variable to "fieldX" for the logged in user (or a default if nobody is logged in). Are there any hints or FAQ's I've missed that could get me moving in the right direction?

Reeve of shinra
10-20-2005, 11:07 PM
You are opening yourself up to a security vulnerabiltiy this way. Its not suggested to use a custom profile field variable in a javascript.

aciurczak
10-20-2005, 11:11 PM
That's too bad; it would have been very useful. The script cycles images on the forum header, and I wanted to give users the option on how long a delay between cycles. Is there any safer or recommended way to accomplish something like this? Thanks for the quick reply...

Reeve of shinra
10-20-2005, 11:22 PM
Well you might be able to use a drop down box type profile field since you can could use different preset intervals. I think that would be okay.

It may be a little trickier for you however since I think each drop down is given a numerical value starting at 0. So if your presets were

5 seconds = value in db 0
10 seconds = value in db 1

The variable you will want to use is (I think) $bbuserinfo[fieldx] where x is the custom field #

aciurczak
10-20-2005, 11:57 PM
I spoke too soon, unfortunately, it only works if that field exists. If a user is not logged in, it doesn't exist, and the browser returns a javascript error. I've tried a number of fixes including trying to parse it as a string, trying to use the isNaN function if it isn't a number, but no luck so far. If anyone has stronger skills than I and sees what I'm doing wrong, I'd be really appreciative. Here is the javascript code in my vbulletin header template:

if ($bbuserinfo[field33])
{
tempdelay = ($bbuserinfo[field33])
}
else
{
tempdelay = 15000
}

With a logged-in user, this works great, and here is the source returned on a browser:

if (5000)
{
tempdelay = (5000)
}
else
{
tempdelay = 15000
}

However, when I bring up the page with a non-logged in user, there is a javascript error and the source returned from the browser is:

if ()
{
tempdelay = ()
}
else
{
tempdelay = 15000
}

There is a javascript error, tempdelay is not set, and the rest of the script fails. I just can't seem to deal with a variable that doesn't exist. Is there something like an isexisting("x") function that will accurately retun something if it is fed isexisting() ?