vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Variables turning blank. (https://vborg.vbsupport.ru/showthread.php?t=75410)

jackti 01-30-2005 09:03 AM

Variables turning blank.
 
Hope you guys can help me out a bit on this.

What I'm doing is this: In my vbulletin $header, I have my own template + some code to set cookies and stuff that has nothing to do with vbulletin, this is supposed to happen on both vbulletin pages and non-vbulletin pages..

What happens is, if i call my header.php from my own pages, it works great.. but when the header.php file gets called from a vbulletin page, i can not work with variables, they are blanked some where along the way (like $_GET['whatever'] and such will not work).

Specifically, i want $_GET['do'], and $_POST['vb_login_username/password'] to get passed along, but they refuse to, even if i try reassigning them to different variables inside vb itself, they also get blanked by the time they get to my includes.

I'm not that seasoned with PHP, so it's like looking for something i don't even know what looks like within the vb code.

Help is much welcome

Tekton 01-30-2005 10:49 AM

Shouldn't you put that kind of code in the phpinclude start template instead of the header?

jackti 01-30-2005 11:34 AM

Quote:

Originally Posted by Tekton
Shouldn't you put that kind of code in the phpinclude start template instead of the header?

Sorry guess I didn't explain it too well, but that's where it's called from yes and not the actual headertemplate within vB.

Still $_GET['do'] or whatever within my header.php (called from phpinclude_start) turn out blank no matter what I try.

Jolten 01-30-2005 11:46 AM

It's really hard to say without seeing more code.

The best I can offer is to assign the server variables to another variable a la:
Code:

$var = $_GET['whatever'];
Then use $var wherever you're trying to use that variable.
Code:

if (!isset($var)){

  blah blah blah

} else {

  yadda yadda yadda

}


jackti 01-30-2005 12:08 PM

Quote:

Originally Posted by Jolten
It's really hard to say without seeing more code.

The best I can offer is to assign the server variables to another variable a la:
Then use $var wherever you're trying to use that variable.

Thanks, but I already tried it, and no luck.

Here's how I tested it and set it up:

The file header.php is called from phpinclude_start, header.php includes some setcookie and session management code.

On my own pages, where header.php is included.. let's call it my_non_vb_related_page.php, i do this in the include file:

Code:

// header.php called from my_non_vb_related_page.php
print_r($_GET);
// This results in the correct output as i would expect from the URL string I'm using.

I do the same thing, except load "header.php" from the showpost.php in vbulletin (through the phpinclude template), and _nothing_.

Then I put this in the functions.php file that comes with vbulletin (just to make sure I'm not crazy):

Code:

// Inside functions.php
print_r($_GET);
// This results in the correct output as i would expect from the URL string I'm using.

and add this to the same file:
$brand_new_var = $_GET['whatever'];
echo $brand_new_var;
// Still works great!

Then I add this in my header.php, and call it from a vbulletin page.

Code:

// Inside header.php called from showpost.php
echo $brand_new_var;
// Nothing again!!

I'm really out of ideas, like i said I'm not a PHP guru of any kind, I'm sure there's a perfectly simple reason for this but ahve no clue where to start looking, and for what.

Jolten 01-30-2005 12:21 PM

Try adding it to forum/global.php

And you'll need to include global.php before the variable is called in header.php. That's the root of your problem. You're calling a variable before it's set. Since I assume header.php loads before the vb page scripts.

jackti 01-30-2005 12:34 PM

adding it to global.php is the same story.

Code:

// Top of global.php, load a vb-page...
$brand_new_var = $_GET;
print_r($brand_new_var);
// Works!

Code:

// Top of header.php called from showpost.php
print_r($brand_new_var);
// Nothing

// then..
print_r($_GET);
// you get a empty array here...

Code:

// Top of header.php called from myownpage.php
print_r($brand_new_var);
// Nothing, of coarse ;)

// then..
print_r($_GET);
// works fine


Jolten 01-30-2005 12:36 PM

I edited my post up there :)

---> You'll need to include global.php before the variable is called in header.php. That's the root of your problem. You're calling a variable before it's set. Since I assume header.php loads before the vb page scripts.

jackti 01-30-2005 12:55 PM

:nervous: lol, you're absolutely right about the case in the middle. I'm not really sure what is called in what order, but I'm thinking that vb must blank some variables before it starts phpinclude because otherwise $_GET would not be blank , right?...

even if it explains why $brand_new_var turns out blank, it doesn't explain why I also get an empty $_GET/$_REQUEST Array in my header ?

Thats really the problem, making it into another variable name would just be a way to get around it (if it actually would have worked)..

..also when I try including global.php from my header.php and try loading a page I get a bunch of database errors and the page does not load at all, but I shouldn't need to do that anyway on pages that have nothing to do with vb.

Jolten 01-30-2005 01:04 PM

So... header.php doesn't reside in the same directory as the forums?

You're right though $_GET should still work as long as the variable is present in the url

miz 01-30-2005 01:15 PM

your problem is not in code or in templates
the problem is - you using
echo / print/print_r

this make page blank.....
instead of print put the var you want to print in template
and it will work.

jackti 01-30-2005 01:20 PM

No, my header.php is on a whole different domain (same box, just different users)

i tried using chdir() before and after including global.php but it still won't work, something about too many SQL connections after a short time.. (it's looping or something probably).

I just have no clue what to do about the whole $_GET-problem and I'm running out of ideas, I appreciate the help a lot though, Thanks.

I guess I'll end up print_r'ing $_GET through ~5000 lines of php code to find out where it gets lost =) Nothing like a nice relaxing Sunday afternoon..

It works on the top of global.php, but not at the bottom. I guess thats a start.

edit: MIZ, I didn't quite understand what you meant by your post, could you explain it a little more in detail?

miz 01-30-2005 01:23 PM

if you try to echo and you use templates
that its wont show anything
not the echo and not the templates
if you included global this will happen to you

but if you will try to do something like
PHP Code:

echo "something here";
die; 
// you can user exit(); also 

then its will work,
you dont belive me ? try it.

also 1 more thing

Quote:

$brand_new_var = $_GET['whatever'];
try to do it like that :

PHP Code:

$_GET['whatever'] = "bla";
$brand_new_var $_GET['whatever']; 

then $brand_new_var will have a value.

jackti 01-30-2005 01:43 PM

Thanks Miz, but the problem isn't that it doesn't have a value, because it does at the top of global.php even when you do it my way as you quoted above. It's supposed to be a variable from the URL string, not a constant from within the script, and by the bottom of global.php the value is gone no matter how you set it..

And I don't want to just print it out in a template inside vb somewhere, I need it for db queries and to set cookies and stuff within my own header.php, and it's blank by the time it gets there.

miz 01-30-2005 01:48 PM

you cant print anything when you using global.php
no metter what you will do
so right you placed it in top of global.php , after the file runned its shout its down
cuse this is the way global works
no metter what you will try to do
unless you will use the die(); function
which stop the file runing.

if you need to get all info use global
and instead of echo use template functions and put all vars in template
this is the best solution you can get

jackti 01-30-2005 01:57 PM

MIZ, I'm really having problems understanding how to "use the template functions to put the variables in a template"? how exactly would I do that to be able to pass the arrays $_GET, $_POST etc. to my header.php?

And the die(); thing in global makes the forum.. well.. die, and the point is for people to be able to browse the forum :)

miz 01-30-2005 02:31 PM

PHP Code:

$myvar "bla bla";

eval(
'print_output("' fetch_template('mytemplate') . '");');

/* or if you want to get template in variable and then show it via formhome template for exsample use :
*/
eval('$newvar= "' fetch_template('mytemplate') . '";'); 

then place $newvar in forum home template of where ever you want it to be showen.

offcurse in template 'mytemplate' place $myvar inside the template


All times are GMT. The time now is 02:57 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01069 seconds
  • Memory Usage 1,770KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (8)bbcode_code_printable
  • (3)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (17)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete