Jump to content


Photo

mod rewriting - is this possible?


  • Please log in to reply
12 replies to this topic

#1 redbullmarky

redbullmarky
  • Staff Alumni
  • Advanced Member
  • 2,863 posts
  • LocationBedfordshire, England

Posted 15 June 2006 - 08:40 PM

Hi all

Just wondering about mod rewrite. i've actually used it on sites before to provide users with their own homepage - eg so they can type [a href=\"http://www.mysite.com/users/redbullmarky\" target=\"_blank\"]http://www.mysite.com/users/redbullmarky[/a], which would get resolved to something like [a href=\"http://www.mysite.com/users/index.php?user=redbullmarky\" target=\"_blank\"]http://www.mysite.com/users/index.php?user=redbullmarky[/a].

now - i have a situation i want to find out more about.
on a site i'm doing at the moment, i need to refer to the username from the ROOT - ie, www.mysite.com/redbullmarky. also, each user will have sub-pages, so i can type in www.mysite.com/redbullmarky/mypage.

now - how can i keep these usernames safe from actual directories that exist? ie, what if someone sets their username as 'images', etc?

the only way i can think of is to check for URL's that do not have a 'php' or 'htm' extension, and then treat these like users. or worse still, using a custom 404 page to take a user to a page which deals with sending them to the correct place, in the event of anything typed in the URL.

can anyone advise the best way to do this? basically so my usernames do not clash with my directories and files?

cheers
Mark
"you have to keep pissing in the wind to learn how to keep your shoes dry..."

I say old chap, that is rather amusing!

#2 AndyB

AndyB
  • Staff Alumni
  • Advanced Member
  • 5,465 posts
  • LocationToronto

Posted 16 June 2006 - 12:12 AM

I can't help you with mod rewrite stuff so I'll suggest an old-fashioned method.

Presumably before a prospective user can have their own username, their choice needs to be checked to ensure it does not already exist. So, if I had a list of users and included imaginary users named images, includes, etc. wouldn't that achieve your objective?
Legend has it that reading the manual never killed anyone.
My site

#3 redbullmarky

redbullmarky
  • Staff Alumni
  • Advanced Member
  • 2,863 posts
  • LocationBedfordshire, England

Posted 16 June 2006 - 12:25 AM

[!--quoteo(post=384410:date=Jun 16 2006, 01:12 AM:name=AndyB)--][div class=\'quotetop\']QUOTE(AndyB @ Jun 16 2006, 01:12 AM) View Post[/div][div class=\'quotemain\'][!--quotec--]
I can't help you with mod rewrite stuff so I'll suggest an old-fashioned method.

Presumably before a prospective user can have their own username, their choice needs to be checked to ensure it does not already exist. So, if I had a list of users and included imaginary users named images, includes, etc. wouldn't that achieve your objective?
[/quote]

yeah - that bit i understand. the thing that is kinda getting me confused right now is that on a site i'm rewriting, i can literally type in: www.mysite.com/images and it will provide a page that says 'the user "images" does not exist'. even thought the images directory actually does exist, it seems to ignore it and deal with usernames, etc, as priority.

biggest prob is that talking to the old programmer is not possible and (going by the rest of his code) would not be practical. i have access to the site that currently does it via FTP, only i cannot find a htaccess file or anything else to give away the trick.

so in that respect - i'd love it (if they really wanted to) for a user to be able to call themselves 'images', 'includes', 'scripts' or any other stuff, but it's kinda proving a little tricky.

Cheers
Mark
"you have to keep pissing in the wind to learn how to keep your shoes dry..."

I say old chap, that is rather amusing!

#4 steelmanronald06

steelmanronald06
  • Staff Alumni
  • Advanced Member
  • 2,004 posts
  • LocationOk

Posted 16 June 2006 - 04:07 AM

You might get some REAL help if you would post..umm...idk...perhaps, a .htaccess file or whatever your using to re-write the urls? It ishard to see what you are doing wrong if we don't know how the mod_rewrite is acting. [img src=\"style_emoticons/[#EMO_DIR#]/unsure.gif\" style=\"vertical-align:middle\" emoid=\":unsure:\" border=\"0\" alt=\"unsure.gif\" /]

#5 redbullmarky

redbullmarky
  • Staff Alumni
  • Advanced Member
  • 2,863 posts
  • LocationBedfordshire, England

Posted 16 June 2006 - 02:33 PM

Hi Ronald

i'm actually hoping to get a view pointers before i start working out the regex bits, etc, and putting it together.
Like i say, i've done it in subdirectories (www.mysite.com/users/redbullmarky) but never the root - and as their are so many other files and directories, i dont want any clashes.

can you give me any idea of how you would go about doing this? ie, giving a user their own 'virtual directory' with virtual subdirectories within them?

Cheers
Mark
"you have to keep pissing in the wind to learn how to keep your shoes dry..."

I say old chap, that is rather amusing!

#6 steelmanronald06

steelmanronald06
  • Staff Alumni
  • Advanced Member
  • 2,004 posts
  • LocationOk

Posted 17 June 2006 - 09:04 PM

Sure. Here is how I would do it:

1) Insert folders you will be using (images, includes, headers, config, anything really that shouldn't be a user name but what you might use for directory organization) as usernames into your member table. Meaning make a member called images or whatever and give that user ZERO permissions. Then when a visitor tries to register, they can't have that username.

2) Next you will want to use mkdir() function. Use that function so when a user registers it will make a direcotry for them:
$username = //  The name they want to register with.

// Be sure to add an error check here to see if the username exist. If it does use exit();
// That will keep the mkdir function from making the directory anyways.

// Example is mkdir("/path/to/my/dir", 0700);
// So you would go

mkdir("/path/to/my/$username", 0700);
So it took the username they wanted, checks it first, and if it passes will create the url when $username is set to ronald:
[a href=\"http://www.site.com/path/to/my/ronald\" target=\"_blank\"]http://www.site.com/path/to/my/ronald[/a]

3) Then you are done. Not once do you ever have to mess with .htaccess and the database for the users.

Suggestion. You would have to give users ftp access to their directory ONLY! There is php functions that can make automatic ftp privs. but here is a better suggestion. PHPNuke does this, so you might want to pick it up and see how it works. But create a User Control Panel for the user, a simple code will work that is repeated in eachs users directory. Anyways, create the control panel to make it where they can add files to their directory and take them away. Not once do you EVER have to give them ftp access. The ftp access is contained within the CP code and all they are doing is using the provided access to create files for their dir. Kinda like WYSIWYG editor.

Again, this is how I would do it. It is a lot of work, true, but you come out in the end learning ALOT of stuff. Few people know how to use php to ftp and all that jazz. If you learnt that you would know alot more than most do about php.

#7 redbullmarky

redbullmarky
  • Staff Alumni
  • Advanced Member
  • 2,863 posts
  • LocationBedfordshire, England

Posted 21 June 2006 - 05:51 PM

unless i'm missing your point, i dont actually want the user to physically have their own directory/subdirectory.

rather:

http://www.mysite.com/redbullmarky

would resolve to:

http://www.mysite.com/users/profile.php?user=redbullmarky

and

http://www.mysite.com/redbullmarky/thisone

would resolve to

http://www.mysite.com/users/profile.php?user=redbullmarky&section=thisone

whilst i kinda know how to do the above, what i'm unsure on is if i DID want to allow a user called 'images', etc, etc.

i've thought it through and am almost certain that mod_rewrite in a htaccess would be my solution, but as i'm working from the root directory, with so many files/folders, etc to clash with, was just wondering if i can get away with this - have my cake and eat it - let a user call themselves 'images' if they want, but without affecting things when i'm referring to the 'images' directory for real.

any thoughts?
cheers
Mark
"you have to keep pissing in the wind to learn how to keep your shoes dry..."

I say old chap, that is rather amusing!

#8 steelmanronald06

steelmanronald06
  • Staff Alumni
  • Advanced Member
  • 2,004 posts
  • LocationOk

Posted 22 June 2006 - 03:52 PM

I wouldn't let a user call themselves images. It is just stupid. Don't let them have the same name as your directory. Who would want a username called image, images, includes, headers, config, etc.

#9 Eric_Ryk

Eric_Ryk
  • Members
  • PipPipPip
  • Advanced Member
  • 104 posts

Posted 22 June 2006 - 04:12 PM

Just add some form of little symbol before each username, a common one is:
~ or you could do *, #, $, `, @, etc...

#10 steelmanronald06

steelmanronald06
  • Staff Alumni
  • Advanced Member
  • 2,004 posts
  • LocationOk

Posted 24 June 2006 - 04:17 PM

that could work also. The only problem is that would it show up like that when he list the member names in a Memberlist? It might start looking kinda odd to do that, but if it is a smaller site it would be okay.

Another suggestion would be to make your directories like that instead.

/~images/
/~includes/

and so on.

#11 Eric_Ryk

Eric_Ryk
  • Members
  • PipPipPip
  • Advanced Member
  • 104 posts

Posted 25 June 2006 - 03:38 PM

[!--quoteo(post=387489:date=Jun 24 2006, 12:17 PM:name=steelmanronald06)--][div class=\'quotetop\']QUOTE(steelmanronald06 @ Jun 24 2006, 12:17 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
that could work also. The only problem is that would it show up like that when he list the member names in a Memberlist? It might start looking kinda odd to do that, but if it is a smaller site it would be okay.

Another suggestion would be to make your directories like that instead.

/~images/
/~includes/

and so on.
[/quote]No, it wouldn't show up like that on a member list. You'd just search specifically for the part after the symbol used.

#12 redbullmarky

redbullmarky
  • Staff Alumni
  • Advanced Member
  • 2,863 posts
  • LocationBedfordshire, England

Posted 25 June 2006 - 03:53 PM

[!--quoteo(post=387779:date=Jun 25 2006, 04:38 PM:name=Eric_Ryk)--][div class=\'quotetop\']QUOTE(Eric_Ryk @ Jun 25 2006, 04:38 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
No, it wouldn't show up like that on a member list. You'd just search specifically for the part after the symbol used.
[/quote]

good suggestions, chaps. thanks for your help!
If there are any alternatives, I'd still be keen to hear them, but using the ~ for directory names would help a good deal

Cheers
Mark
"you have to keep pissing in the wind to learn how to keep your shoes dry..."

I say old chap, that is rather amusing!

#13 redbullmarky

redbullmarky
  • Staff Alumni
  • Advanced Member
  • 2,863 posts
  • LocationBedfordshire, England

Posted 26 June 2006 - 11:28 AM

[!--quoteo(post=387785:date=Jun 25 2006, 04:53 PM:name=redbullmarky)--][div class=\'quotetop\']QUOTE(redbullmarky @ Jun 25 2006, 04:53 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
good suggestions, chaps. thanks for your help!
If there are any alternatives, I'd still be keen to hear them, but using the ~ for directory names would help a good deal

Cheers
Mark
[/quote]

Hi
Just wanna clear up with one more question. Aimed at anyone who's got a myspace profile.

How do you reckon they do it?

They have an 'index.cfm' to drive most of the content, which would be easy enough to work around on its own.
They also have 'misc', 'images' and 'modules' directories from what i can see, all with no special characters in their name.

Would I be right in guessing that you could have a list of rules that check each of my 'built in' directories one by one, and if found, stops processing any more rules - then as the last rule, redirect anything else to a page such as '/people/profile.php?user=redbullmarky' ?

If so, and if that's possible, could you possibly provide me a little example or provide a link of a good tutorial? the stuff i've done in the past has been relatively simple stuff, so i'm a little dazed...

Cheers
Mark
"you have to keep pissing in the wind to learn how to keep your shoes dry..."

I say old chap, that is rather amusing!




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users