Go Back   vb.org Archive > Community Discussions > Modification Requests/Questions (Unpaid)
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 11-02-2004, 11:57 AM
Benj's Avatar
Benj Benj is offline
 
Join Date: May 2006
Posts: 180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Mod rewrite username forwarder

I would like to have a hack that allows users to view other users profiles by typing http://www.mydomain.com/username which forwards to member.php?u=23 or whatever. ive been told you can do this with mod rewrite, any1 care to have a go
Reply With Quote
  #2  
Old 11-04-2004, 12:32 AM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

One way for a basic mod_rewrite of the members section: in your .htaccess, you need the following
Code:
RewriteEngine on
Options +FollowSymLinks
RewriteRule ^member([0-9]+).html$ member.php?u=$1 [L]
Now to have it based on the membername, you would need to do a little on-the-fly manipulation of that .htaccess file: this is dangerous, as a bug in your .htaccess can make your site unviewable...

This said, it is doable to have a cached htaccess that is updated via a daily cron job based on the userlist, but it would make for high server overhead having a N-line htaccess file where N in the number of members you have...
Reply With Quote
  #3  
Old 11-04-2004, 05:55 AM
memobug memobug is offline
 
Join Date: Jun 2002
Posts: 418
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Natch
...Now to have it based on the membername, you would need to do a little on-the-fly manipulation of that .htaccess file: this is dangerous, as a bug in your .htaccess can make your site unviewable...

This said, it is doable to have a cached htaccess that is updated via a daily cron job based on the userlist, but it would make for high server overhead having a N-line htaccess file where N in the number of members you have...
Maybe a simpler way would be to use mod_rewrite as described above, but instead of the cron cached stuff, instead call the existing membersearch using the member name as an argument like this:

https://vborg.vbsupport.ru/memberlis...username=Natch

which will give you names like Natch. If you want names exactly matching Natch, you'd just need to hack memberlist.php slightly:

above
Code:
if ($ausername)
{
$condition .= " AND username LIKE '%" . addslashes_like(htmlspecialchars_uni($ausername)) . "%' ";
}
add
Code:
if ($myusername)
{
$condition .= " AND username = '" . "htmlspecialchars_uni($myusername)" . "' ";
}
and then change the link above to use myusername=Natch instead of ausername=Natch (UNTESTED)

Also: You've probably noticed that in the admin panel if you do a user search and there is only one result it goes right to that user. It shouldn't be too hard to get that to happen in memberlist.php too.

Regards,

Matt
Reply With Quote
  #4  
Old 11-04-2004, 11:29 PM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I had a chat with a mod_rewrite expert last night at my local PHP User Group meeting: suggestion from there was to write a small redirect script (uanmeparse.php) to parse the username to userid, then redirect to forumhome/member.php?u=$userid, and then mod_rewrite like so:
Code:
RewriteEngine on
Options +FollowSymLinks
RewriteRule ^~([a-z0-9]*)$ unameparse.php?un=$1 [L,NC]
Then, your unameparse.php goes in serverroot, along with .htaccess, and you call http://www.yourdomain.com/~username =>> this would redirect to the user's profile...
Reply With Quote
  #5  
Old 11-04-2004, 11:32 PM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by memobug
Maybe a simpler way would be to use mod_rewrite as described above, but instead of the cron cached stuff, instead call the existing membersearch using the member name as an argument like this:

https://vborg.vbsupport.ru/memberlis...username=Natch

which will give you names like Natch. If you want names exactly matching Natch, you'd just need to hack memberlist.php slightly:

above
Code:
if ($ausername)
{
$condition .= " AND username LIKE '%" . addslashes_like(htmlspecialchars_uni($ausername)) . "%' ";
}
add
Code:
if ($myusername)
{
$condition .= " AND username = '" . "htmlspecialchars_uni($myusername)" . "' ";
}
and then change the link above to use myusername=Natch instead of ausername=Natch (UNTESTED)

Also: You've probably noticed that in the admin panel if you do a user search and there is only one result it goes right to that user. It shouldn't be too hard to get that to happen in memberlist.php too.

Regards,

Matt
I do like your idea Matt: nice lateral thinking ... this other method creates a new file, instead of modding a vB file: sometimes a hack-less method is preferable...
Reply With Quote
  #6  
Old 11-05-2004, 12:03 AM
Zachery's Avatar
Zachery Zachery is offline
 
Join Date: Jul 2002
Location: Ontario, Canada
Posts: 11,440
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Natch
I do like your idea Matt: nice lateral thinking ... this other method creates a new file, instead of modding a vB file: sometimes a hack-less method is preferable...
Why not use a 404 redirect in a new folder?
Reply With Quote
  #7  
Old 11-05-2004, 12:05 AM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Seems sloppy to me Zachery: a 404 used for something other than an actually missing page is against the HTML spec, and some proxy servers will simply serve up an ISP specific custom 404 page, rather than follow the script's directive, on getting the 404 HTML header.
Reply With Quote
  #8  
Old 11-05-2004, 05:44 AM
memobug memobug is offline
 
Join Date: Jun 2002
Posts: 418
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Natch
sometimes a hack-less method is preferable...
You're on the wrong forum then

Regards,

Matt
Reply With Quote
  #9  
Old 11-07-2004, 12:08 PM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not for long...
Reply With Quote
  #10  
Old 11-07-2004, 03:00 PM
Logikos Logikos is offline
 
Join Date: Jan 2003
Posts: 2,924
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This works, https://vborg.vbsupport.ru/member.ph...me=Live%20Wire
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 10:20 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.05064 seconds
  • Memory Usage 2,259KB
  • Queries Executed 11 (?)
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
  • (6)bbcode_code
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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_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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete