2014-03-03 185 views
1

所以我有一個代碼註冊,我想爲每個用戶註冊,他得到自己的文件夾與他註冊的同名,我不知道該怎麼做,我聽到有mkdir但即時通訊新的,所以如果任何人都可以幫助我,請在哪裏我應該添加該mkdir或什麼和命令是什麼!註冊後登錄的目錄

這裏是我的register.php:

<?php 

require_once 'core/init.php'; 



if(input::exists()) { 
    if(Token::check(Input::get('token'))) { 
     $validate = new Validate(); 
     $validation = $validate->check($_POST, array(
      'username' => array(
       'required' => true, 
       'min' => 2, 
       'max' => 20, 
       'unique' => 'users' 
      ), 
      'password' => array(
       'required' => true, 
       'min' => 6 
      ), 
      'password_again' => array(
       'required' => true, 
       'matches' => 'password' 
      ), 
      'name' => array(
       'required' => true, 
       'min' => 2, 
       'max' => 50 
      ) 
     )); 

     if($validation->passed()) { 
      $user = new User(); 

      $salt = Hash::salt(32); 


      try { 
       $user->create(array(
        'username' => Input::get('username'), 
        'password' => Hash::make(Input::get('password'), $salt), 
        'salt' => $salt, 
        'name' => Input::get('name'), 
        'joined' => date('Y-m-d H:i:s'), 
        'group' => 1 
       )); 
       Session::flash('home', '<h3>Registracija uspešna!</h3>'); 
       Redirect::to('mojprofil.php'); 

      } catch (Exception $e) { 
       die($e->getMessage()); 
      } 
     } else { 
      foreach($validation->errors() as $error) { 
       echo $error, '<br>'; 
      } 
     } 
    } 
} 

?> 
+0

http://php.net/ mkdir我的建議是你在同一點創建目錄,你的'$ user-> create()**是成功的**。 – Aquillo

回答

1

您不希望將用戶名作爲目錄名,並且存在與此相關的安全缺陷。所以我建議創建一個獨特的目錄名和商店,也是在用戶排在你的數據庫:

(假設用戶名是獨一無二的!)

..... 
try { 
     //- Create a hashed directoryname based on the username 
      $user_dir = md5(Input::get('username'); 


     $user->create(array(
      'username' => Input::get('username'), 
      'password' => Hash::make(Input::get('password'), $salt), 
      'salt' => $salt, 
      'name' => Input::get('name'), 
      'joined' => date('Y-m-d H:i:s'), 
      'group' => 1, 
      'directory' => $user_dir //- Add this field also to your database 
     )); 
     Session::flash('home', '<h3>Registracija uspešna!</h3>'); 

     //- Create directory, use the right path: absolute/relative 
      mkdir(__DIR_.'/path/to/'.$user_dir); 

     Redirect::to('mojprofil.php'); 
} 
..... 
1

在部分

  try { 
      $user->create(array(
       'username' => Input::get('username'), 
       'password' => Hash::make(Input::get('password'), $salt), 
       'salt' => $salt, 
       'name' => Input::get('name'), 
       'joined' => date('Y-m-d H:i:s'), 
       'group' => 1 
      )); 
      Session::flash('home', '<h3>Registracija uspešna!</h3>'); 

添加此

  mkdir('pathtouserdir'.DS.Input::get('username')); 

但是,你應該照顧,該用戶名是正確的過濾器。 沒有trailling /或../../或者那裏有什麼。 這將改變目錄路徑並可能導致安全問題。 您還可能需要設置目錄權限,以便Web服務器可以正確訪問它。 有關更多詳細信息,請參閱http://php.net/mkdir