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

Reply
 
Thread Tools Display Modes
  #1  
Old 07-06-2009, 02:54 AM
nirvana43's Avatar
nirvana43 nirvana43 is offline
 
Join Date: Oct 2007
Location: Pune, India
Posts: 361
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Error : Unable to add cookies, header already sent.

Hello
I've created 1 custom page by referring to vBulletin API Basics topic posted by Psionic Vision.
Here is topic url : https://vborg.vbsupport.ru/showthread.php?t=98009
I'm getting following error :
Quote:
Unable to add cookies, header already sent.
File: /home2/aditya43/public_html/forums/test.php
Line: 1
My test.php file contains following code :
Quote:
<?php
error_reporting(E_ALL & ~E_NOTICE);
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'adi');
$globaltemplates = array('adi');
require('./global.php');
include('aaa/tmp.php');
$navbits = array();
$navbits[$parent] = 'Aditya Test Page';
$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
if (!$vbulletin->userinfo['userid'])
{
print_no_permission();
}
else
{
eval('print_output("' . fetch_template('adi') . '");');
}
?>
My template "adi" under vbulletin contains following code :
Quote:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions[bbtitle]</title>
$headinclude
</head>
<body>
$header
$navbar
<if condition="$adiinitcond">
$testcond1
<else/>
$testcond2
</if>
</table>
$footer
</body>
</html>
tmp.php file contains :
Quote:
$a=5;
$b=6;
$adiinitcond="$a>$b";
$testcond1="$a is bigger";
$testcond2="$b is bigger";
However if i login to vbulletin forum and then access test.php, it works perfect. But as a guest it gives me above error.
I also wanna allow guests on test.php or at least it should print vbulletin error message.

Here is what i've done so far to get rid of above error :
1. Removed all whitespace etc.
2. Tried "<?php" tag without closing php tag "?>"
3. Tested after removing "include('aaa/tmp.php');" from test.php
4. Removed all "echo", "print" etc. from tmp.php

The possible cause of above error is i'm trying to send data or something to browser before vbulletin cookies. So i traced my entire code and found i'm not sending anything to browser before cookies (or am i?).
Reply With Quote
  #2  
Old 07-06-2009, 03:24 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You posted this exact same question on vb.com and I answered over there.
Reply With Quote
  #3  
Old 07-07-2009, 01:03 AM
nirvana43's Avatar
nirvana43 nirvana43 is offline
 
Join Date: Oct 2007
Location: Pune, India
Posts: 361
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
You posted this exact same question on vb.com and I answered over there.
Thank you for your reply :
Quote:
You should be posting this over at vb.org where they deal with custom coding.

You should try giving no permission *before* you eval any templates (like your navbar).

If you need further help, you should post this over at vb.org.
You should try giving no permission *before* you eval any templates (like your navbar).
Please explain more... how do i do that?
Can you post the code segment?
Here is what i've tried so far :
Quote:
eval('$navbar = "' . fetch_template('navbar') . '";');
if (!$vbulletin->userinfo['userid'])
{
print_no_permission();
}
else
{
eval('print_output("' . fetch_template('bebo') . '");');
}
But that ain't solving the problem.
Well can you tell me something, if i write "include(file.php)" in else part before "eval('print...')" can cause error??
But still i think as cookies are already sent because of *no permission* condition, it would've worked...

EDIT :
I tried all above things but still nothing is working.
Reply With Quote
  #4  
Old 07-07-2009, 01:26 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Right after including global.php is when you want to do the lines about whether the user is logged in:
PHP Code:
 if (!$vbulletin->userinfo['userid'])
{
print_no_permission();

Then do the rest of your stuff.
Reply With Quote
  #5  
Old 07-07-2009, 02:31 AM
nirvana43's Avatar
nirvana43 nirvana43 is offline
 
Join Date: Oct 2007
Location: Pune, India
Posts: 361
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Right after including global.php is when you want to do the lines about whether the user is logged in:
PHP Code:
 if (!$vbulletin->userinfo['userid'])
{
print_no_permission();

Then do the rest of your stuff.
That is exactly what i've tried as specified in my above post. But i'm still getting same error.
BTW is there any way i can permit guests also on same page.
Because if we put *no permission* thing then only registered members can view the page.
Is there any way we can get around this cookies problem?

I also tried ob_flush();
But still aint working :erm:
Reply With Quote
  #6  
Old 07-07-2009, 02:45 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nirvana43 View Post
That is exactly what i've tried as specified in my above post. But i'm still getting same error.
That is not what you are showing in the above post. You have the no permission going on after the template is evaled, not before.
Quote:
Originally Posted by nirvana43 View Post
BTW is there any way i can permit guests also on same page.
Sure, by not putting in that line. The code says 'if there is no userid, then give them a no permission page'. If you don't want that to happen, why do you have it in your code?
Reply With Quote
  #7  
Old 01-02-2010, 09:39 PM
saajjj saajjj is offline
 
Join Date: Nov 2009
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Apologies for digging up this old thread.

I was wondering if the OP found a solution?

I was stuck in EXACTLY the same position and the solution was quite strange. All I did was to ensure that test.php was saved without the Byte Order Mark. For those who don't know, the BOM allows applications to know what the encoding of the file is. You can read all about it here

Software like notepad++ (free) make it very easy to save a file without the BOM.
Reply With Quote
  #8  
Old 01-03-2010, 01:15 AM
nirvana43's Avatar
nirvana43 nirvana43 is offline
 
Join Date: Oct 2007
Location: Pune, India
Posts: 361
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, BOM could cause similar problem. Saving file in utf encoded format could also cause garbage character data to be displayed on page. All we gotta do is save file in ANSI/ASCII. I use Ultra Edit for writing codes.
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:31 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.05729 seconds
  • Memory Usage 2,244KB
  • 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
  • (2)bbcode_php
  • (10)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (8)post_thanks_box
  • (8)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (8)post_thanks_postbit_info
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)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