vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   Mod rewrite username forwarder (https://vborg.vbsupport.ru/showthread.php?t=71275)

Benj 11-02-2004 11:57 AM

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

Natch 11-04-2004 12:32 AM

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...

memobug 11-04-2004 05:55 AM

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

Natch 11-04-2004 11:29 PM

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...

Natch 11-04-2004 11:32 PM

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 :D ... this other method creates a new file, instead of modding a vB file: sometimes a hack-less method is preferable...

Zachery 11-05-2004 12:03 AM

Quote:

Originally Posted by Natch
I do like your idea Matt: nice lateral thinking :D ... 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?

Natch 11-05-2004 12:05 AM

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.

memobug 11-05-2004 05:44 AM

Quote:

Originally Posted by Natch
sometimes a hack-less method is preferable...

You're on the wrong forum then ;)

Regards,

Matt

Natch 11-07-2004 12:08 PM

Not for long... ;)

Logikos 11-07-2004 03:00 PM

This works, https://vborg.vbsupport.ru/member.ph...me=Live%20Wire


All times are GMT. The time now is 07:05 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.02133 seconds
  • Memory Usage 1,739KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (6)bbcode_code_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete