Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 05-24-2006, 11:20 PM
whitejeep whitejeep is offline
 
Join Date: May 2006
Posts: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Problems with echo and eval WHY is this a PHP issue or vbulletin only? Please explain

Can you help me explain but i have been useing echo and print_r and var_dump to debug my PHP in the past i have tried in the same in vbulletin. And have run to a problem and maybe you might have some other sujestion since i am new to PHP and not new to programing its self and so far find the tools alittle on the premitive side for debugging in PHP and allways looking for new ways to debug my scripts with tools provided in the lanagiage ussly help.

So how do I get around this basic problem - I have found that when i do a echo and have in my PHP script a eval(); like below I have to comment the eval out if i what to print my debug messages - why is this the case and how do i get around the problem any ideas. Note: if I do not use my debug statements in the PHP in vbulletin I do get the correct templete shown on the page but if I try to put debug code in then the page is blank and no debug messages show up either - WHY - Now if I comment out the eval then my debug statements show up but the templete does not. So far the only things that works is to paste the HTML that is redered on a page by view the source and pasting the HTML below the PHP code and my debug code and templete does show.

echo 'This is a test message';
echo "<br>";

// eval('print_output("' . fetch_template('testpage') . '");');

I also use not only echo messages but var_dump and print_r as well as echo to debug my PHP vbulletin script - as you know i am kind of new to this PHP stuff not to mention the vbulletin stuff and the why things are done in vbulletin I do not know if this is just in vbulletin or a standard PHP and useing stardard output problems - if you could explain why and how I should get around the problem - if i was using another language i might use some # defines to get around the problem but i do not see that supported in PHP as of yet.

THANKS
Reply With Quote
  #2  
Old 05-24-2006, 11:34 PM
Hellcat Hellcat is offline
 
Join Date: May 2003
Location: Germany
Posts: 560
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

AFAIK vBulletin uses PHP's output controll feature.
All possible output get stored in a buffer, rather than directely sent to the browser.
That buffer can get modified before the final output, and vB likes doing that

I always add a "die;" or "exit;" after my echo or vardump debug.

A better (and way more clean way ) would be enabling vB's debug mode and use DEVDEBUG(); instead of echo to make up your debug messages....
Reply With Quote
  #3  
Old 05-25-2006, 01:33 AM
whitejeep whitejeep is offline
 
Join Date: May 2006
Posts: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ok Cool I can use DEVDEBUG('This is a test message'); is this correct and if so how do I do a vardump() or print_r();
Reply With Quote
  #4  
Old 05-25-2006, 01:44 AM
Adrian Schneider's Avatar
Adrian Schneider Adrian Schneider is offline
 
Join Date: Jul 2004
Posts: 2,528
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah, vBulletin uses output buffering in many places (hooks mostly). If you use any (echo, print_r, var_dump, etc) in the actual script, it should almost always work...

devDebug() puts it into the debug dropdown menu in the bottom of the page (this of course requires debug mode to be enabled). This would not be ideal for larger pieces of text... What I use is a bunch of functions that I include (in a functions_debug.php file or something similar). Here is one:
PHP Code:
function ajDump($var$exit false)
{
    echo 
'<pre>';
    
var_dump($var);
    echo 
'</pre>';
    if (
$exit)
    {
        exit;
    }

Reply With Quote
  #5  
Old 05-25-2006, 02:09 AM
whitejeep whitejeep is offline
 
Join Date: May 2006
Posts: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

DEVDEBUG("DEBUG THIS FILE - EDITOR HERE");


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


Ok this does print out the templete but my debugging statements do not display so what am I doing wrong please explain how this function DEVDEBUG(); is used and how to get it working in my PHP file. THANKS

I am real stumped and have tried a couple of versions and nothing works for me?

Note: I have also tryied moving the debug statement after the eval and that does not work either?

Ya the echo statements and print_r and var_dump do work if i do not have a eval() in the PHP but if I have a eval() in the PHP it just shows a blank page in vbulletin I do not know about anywhere else. I rember have a problem when i was doing some PHP to a backend for merchent processing. But now this is causeing me real probems and i have to be able the debug my PHP before the templete displays and then inside the templete like in the body of the templete. Can you explain how this can be done. THANKS

SirAdrian - Can you send me the file functions_debug.php i would love to look at the PHP and see if anything their gives me a idea of what i am doing wrong and what type of debug functions i can use. THANKS

I have change my notifation type to instant did not know it was not set correctly THANKS
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:32 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03893 seconds
  • Memory Usage 2,205KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete