Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
  #1  
Old 11-11-2005, 10:10 PM
stonyarc stonyarc is offline
 
Join Date: Aug 2005
Location: Leuven (Belgium)
Posts: 930
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default modification questions: capture data on load with javascript and php

Hello,

I'm working on a new modification and I'm having troubles with 2 items.


1. Doesn't vbulletin allow to run scripts from within a new subdirectory.
My new modification would require several separate php files to run. If I drop them in the vbtraffic subfolder they are not usable.

What is the way to fix this. I cannot put 15 files in the root of the forum.


2. As I want to capture information on the start of the forum I created the following code.

Code:
<script language="Javascript">
      function replaceText(text){
	      while(text.lastIndexOf("&"; > 0){
		      text = text.replace('&', '[vbtraffic]');
	      }
	      return text;
     }
      var web_referrer = replaceText(document.referrer);
     vbtraffic = new Image(1,1);
     vbtraffic.src = "./vbtraffic/counter.php?sw="+screen.width+"&sc="+screen.colorDepth+"&referer="+web_referrer+"&page="+location.href;
     var imgsrc = vbtraffic.src
    document.write('<img src=' + imgsrc + '>');
    </script>
(if it works i'll use a plugin now is temporary put in the FORUMHOME)

The basic counter.php code is

Code:
<?php
// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ##################### DEFINE IMPORTANT CONSTANTS #######################
//define('NO_REGISTER_GLOBALS', 1);
//define('GET_EDIT_TEMPLATES', true); 

// ########################## REQUIRE BACK-END ############################
require_once('../global.php');

global $vbulletin;

if(!isset($_COOKIE['vbtraffic_hash'])){
	$hash = md5(time());
}else{
	$hash = $_COOKIE['vbtraffic_hash'];
}

if($db->num_rows("select hash from" . TABLE_PREFIX . "vbtraffic_session where hash='".$hash."'") > 0){
	$db->query_write("update vbtraffic_session set time='".time()."' where `hash`='".$hash."'");
}else{
	$db->query_write("insert into vbtraffic_session values('".$hash."', '".time()."')");
}
setcookie("vbtraffic_hash", $hash, time()+43200);

?>
it's also tested with the counter in the root folder and it won't insert (./global.php).

Whatever I do this won't work.

Any help is appreciated
Reply With Quote
  #2  
Old 11-12-2005, 05:20 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Replace:
PHP Code:
require_once('../global.php'); 
by
PHP Code:
chdir('./..');
require_once(
'./global.php'); 
Reply With Quote
  #3  
Old 11-12-2005, 10:39 AM
stonyarc stonyarc is offline
 
Join Date: Aug 2005
Location: Leuven (Belgium)
Posts: 930
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarcoH64
Replace:
PHP Code:
require_once('../global.php'); 
by
PHP Code:
chdir('./..');
require_once(
'./global.php'); 
Thanks,
But the insert and the cookie don't get set that way either. I think the way that I'm calling the script doesn't work with creating the fake image.
Reply With Quote
  #4  
Old 11-13-2005, 06:24 PM
stonyarc stonyarc is offline
 
Join Date: Aug 2005
Location: Leuven (Belgium)
Posts: 930
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I found it.

The error were caused by a configuration in the php.ini

output_buffering should be on instead of off otherwise the cookie isn't set.

It's impossible to call a PHP function directly from javascript but there is a nice workaround for this.

Here is the code to fix it (this one works with vbulletin, if you build one with an image it doesn't work).

Code:
<script language="Javascript">
    var myUrl="./function.php?sw="+screen.width+"&sc="+screen.colorDepth+"&referer="+document.referrer+"&page="+location.href;
	var iframe1=document.createElement("iframe");
	iframe1.src=myUrl;
	document.body.appendChild(iframe1);
	iframe1.removeNode(true); //hides the frame from the user
</script>
Enjoy
Reply With Quote
  #5  
Old 09-04-2006, 09:40 PM
cavyspirit cavyspirit is offline
 
Join Date: Jan 2004
Posts: 151
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm trying to get a variable that I need for the user's screen width elsewhere in the php. How can I adapt this for that?
Reply With Quote
Reply

Thread Tools
Display Modes

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 09:21 PM.


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.03550 seconds
  • Memory Usage 2,203KB
  • 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
  • (3)bbcode_code
  • (4)bbcode_php
  • (1)bbcode_quote
  • (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