Zachowac bezpieczenstwo takiego uploadu to cos co Ci sie nie uda (IMG:
http://forum.php.pl/style_emoticons/default/smile.gif)
Zobacz jak fajnie to wyglada we frameworku CodeIgnier, oto moj skrypt uploadu fotek:
Szczerze polecam bo mniej czasu zajmie Ci przeczytanie user-guide co jest rownowazne z posiadnieciem wiedzy jak pisac w CI, nic pisanie od golasa..
Kontroller:
<?php
function up() {
$this->load->view('upload_form', array('error' => ' ' )); return;
}
function up_do() {
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|png|jpg|jpeg|JPEG|JPG';
$config['max_size'] = '1500';
//$config['max_width'] = '1024';
//$config['max_height'] = '768';
$config['encrypt_name'] = true;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload()) {
$error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error);
return;
}
$data = $this->upload->data();
if ( empty($data['image_width']) or
empty($data['image_height']) or
empty($data['image_type'])) {
$error = array('error' => '<p>Plik nie jest porpawnym obrazkiem.</p>'); $this->load->view('upload_form', $error);
return;
}
$data = array( 'upload_data' => $data, 'fname' => $this->_gen_name($data['file_path'], $data['full_path'], $data['file_ext']),
);
$this->load->view('upload_success', $data);
return;
}
# @param int random string strlen
function _gen_rand_name($len=6) {
$chars = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890';
$chars_count = strlen($chars) - 1; $rand_name = '';
while( strlen($rand_name) < (int
)$len) $rand_name .= $chars{ mt_rand(0
, $chars_count) }; return $rand_name;
}
# @param string "file_path" like -> D:/htdocs/fotki/uploads/
# @param string "full_path" like -> D:/htdocs/fotki/uploads/fc0de9b4e7899adb909fd043c5161c68.gif
function _gen_name($fpath='', $fname='', $fext='') {
if ( ! is_dir($fpath)) die('blad odczytu bazy'); if ( ! is_file($fname)) die('blad odczytu pliku'); if ( ! preg_match('#^.[w]{3,4}$#', $fext)) die('nieprawidlowe rozszerzenie?');
do {
$rname = $this->_gen_rand_name();
} while ( is_file( $fpath . $rname ));
rename( $fname, $fpath . $rname . $fext ); return $rname . $fext;
}
?>
widok: upload_form
<?php echo form_open_multipart
('up_do');?> <input type="file" class="lol" name="userfile" size="30" />
<input type="submit" value="wrzuc zdjecie" />
</form>
Staram sie tylko poromowac sluszna koncepcje uzywania frameworkow.
pozdro600