I'm new to PHP and after writing a couple CMS' I'd like to try something more complex.

What I want to do is create a script whereby I can create a whole user area with functions, classes and forms etc. Something like a personal admin panel for the user but within their own directory. The aim would be to then create their own webpage within the webpage. I assume this is a common task as I guess it is what all blogs, portfolio sites, facebook, youtube do.

I have been experimenting with mkdir fopen fwrite and similar commands but I don't know how I could use these - without LOTS of code - to create fully functioning user areas like an admin panel.

After writing this I'm seeing problems in scaling this. If users are always creating files then this will eventually take up a lot of server space. Would a better way to do this be via MVC in a framework like Codeigniter?

Or would the best way to do this be by using php copy()?

有帮助吗?

解决方案

So you want to make facebook without lots of code. Good luck :)

But to create a seperate userarea you dont physically create files for those users. You have a database that stores the data per user and you have a php file that selects the right data for the right user.

The example below is a very simplistic proof of concept, and should not be used directly.

you have a table users

id | Name
1  | Elisa
2  | Hugo

And a table content

id | UserId | MyBlogEntry
1  | 1      | Hello, this is my blog
2  | 1      | Hello, this is my 2nd blog
3  | 2      | I dont like blogging

Now you have a page called usercontent.php which accepts a username as variable. You call it like usercontent.php?user=Elise or usercontent.php?user=Hugo

The content: Keep in mind I left out all validation checks for simplicity. You need to make sure there are valid users and no SQL Injection

<?
$user = isset($_GET['user']) ? $_GET['user'] : ''

if (empty($user)) {
  echo 'I dont know this user';
  exit;
}

echo $user.'\'s Blog<hr>';

$query = "SELECT * FROM content WHERE UserId=(SELECT Id FROM users WHERE name='".$user."')";

//execute mysqli query

while($row = $result->fetch_array(MYSQLI_ASSOC))
{
  echo '<p>' . $row['MyBlogEntry'] . '<p>';
}
?>

The ouput would be be something like this for Elisa

Elisa's blog
---------------------
Hello, this is my blog

Hello, this is my 2nd blog

And for Hugo

Hugo's blog
---------------------
I dont like blogging
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top