views:

20

answers:

3

Say I am rolling out a CMS. Each user gets their own page at domain.com/username/index.php. At the moment I'm considering having a new account create a folder at said location and make an index file like so:

<?php
$username=blahblah;
require("../indextemplate.php");
?>

Which would work fine. Everyone gets their own custom pages and such. What seems stupid to me is that I have to make identical folders and files for every unique user. Is there a way instead to catch people using a domain.com/username. And send them directly to indextemplate.php?

As I'm typing this I realized I might be able to use the 'that page does not exist' redirect that apache has in combination with $_SERVER["REQUEST_URI"] (not sure if the apache redirect will mess w/ the url) to go to the correct page.

I guess I'm asking then which approach is better (creating millions of folders/pages was the solution i found googling but it really seems worse). Is their a horrible downside to the second option? Or a third way perhaps.

A: 

May be,

<?php
$username=blahblah;
require("../indextemplate.php?username=".$username);
?>

And then, I guess you need use $_GET['username'] in your indextemplate script. Tray it!

isola009
+1  A: 

Use a .htaccess file if you want to use these url redirects.

Basically the .htaccess could tell the server to treat example.com/user/Idiomatic as example.com/index.php?q=user&name=Idiomatic, then it's all php/mysql to load the data by these $_GET variables. This is used by many CMS'es like Drupal.

http://en.wikipedia.org/wiki/Rewrite_engine

Creating a new file each time is pointless, way to many files would be created.

Rakward
Thanks! Looks like exactly what I wanted.
Idiomatic
A: 

Have a look at mod_rewrite.

For example, you have user.php:

$username = $_GET['username'];
require("../indextemplate.php");

Rewrite could be configured something like this:

RewriteEngine On
RewriteRule ^(\w+)/?$ user.php?username=$1 [L]
Anpher