View Single Post
  #19  
Old 06-22-2004, 02:45 AM
CreedFeed's Avatar
CreedFeed CreedFeed is offline
 
Join Date: Apr 2002
Location: Milwaukee, WI
Posts: 31
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
=============================================
Limitations:
=============================================
- The "Remember username/password?" options only remember sessions for forum. You dont have to login to forum again, when you go to album from forum, you dont have to login again, but if you go directly to your album, you still have to login. Cookie problem!
Ok I believe I have discovered why this limitation is occuring. Assuming you have installed the hack to integrate the 4images gallery and it works fine except for this limitation, here is the problem:

When you visit the 4images gallery the first thing that happens is the sessions.php script is run. First it looks to see if an existing session is found. If no session is found, it returns false. The exact function calls are as follows:


Code:
$site_sess = new Session();
The session is initiated


Code:
$this->demand_session();
The session tried to grab existing session info


Code:
$this->get_session_id();
In demand_session() the above code is first run. The class searches for a cookie "sessionhash" which won't be found the first time you visit the gallery, so this function fails.


Code:
if (!$this->load_session_info()) {
Next, the code loads all session info, based upon the value set in $this->get_session_id ... since that function failed the rest of the session script fails. No session is found.

=======================================

The basic problem:

First the function "get_session_id()" is called. Currently the function first checks for an existing cookie "sessionhash." Again, when you visit the gallery the very first time, no existing session will be there (sessions are deleted when you close your browser). Next the function checks to see if "sessionhash" exists in the query string (HTTP_GET_VARS) or from a submitted form (HTTP_POST_VARS). Again, on your very first visit to the gallery, neither of these will exist. Finally the function returns "false" which in essence says there is no session so the user is not logged in.

The basic fix:

We need to edit "get_session_id()" to include some code that will, after not finding an existing session, check to see if the user has cookies on their computer that identify them as a valid forum user. If the user's cookies (userid and password) match the info in the vbulletin user database table, then the user should be automatically logged in - we need to create the seession for them here.

=======================================

I am not super familiar with vB session code. I would have to sit down and spend some time to determine how the vB sessions are handled. If anyone is more familiar with this you can expand on the following basic pseudocode and make this fix so the discussed limitation is fixed. THE FOLLOWING IS NOT A FIX, BUT IS PSEUDOCODE FOR WHAT SHOULD HAPPEN.

Code:
// in the Session class, get_session_id() function
// after the check for a cookie, HTTP_POST_VARS
// or HTTP_GET_VARS named "sessionhash" fails...

if (COOKIE[userid] AND COOKIE[password]) {
  { select the password from vb user table for COOKIE[userid] }
  if (password == COOKIE[password]) {
    { user is valid, create new sessionhash now }
  }
}
That is just the basic idea. If someone can code this up and make it work, that would be great! I'll try to figure out the coding for this myself, but it may take awhile.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01998 seconds
  • Memory Usage 1,783KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (5)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete