SHOW:
|
|
- or go back to the newest paste.
1 | public function add(){ | |
2 | if(Session::get("tipo") == "admin"){ | |
3 | Session::set('mod', isset($_POST['txtmod']) ? $_POST['txtmod'] : Session::get('mod')); | |
4 | $modelos = (Session::get('mod')!="") ? $this->mod_v->obtenerXDataList(Session::get('mod')) : array(); | |
5 | if (isset($_POST['btnaceptar'])) { | |
6 | if($this->checkDates()) { | |
7 | if(isset($_FILES['foto'])){ | |
8 | $ruta=$this->checkImage($_FILES['foto']); | |
9 | if($ruta!= null){ | |
10 | $load= array($_POST['txtmat'],$_POST['txtcant'],$_POST['txtdes'],$ruta,$_POST['txtmod'],$_POST['cboxtipo']); | |
11 | $this->mod_v->guardame($load); | |
12 | Session::set('vehiculos', array()); | |
13 | Session::set("msg","Vehículo Creado"); | |
14 | $this->redirect(array('index.php')); | |
15 | exit(); | |
16 | } | |
17 | } | |
18 | } | |
19 | } | |
20 | Session::set('modelos', $modelos); | |
21 | Session::set('tiposveh', $this->mod_tv->obtenerTodos()); | |
22 | $this->redirect(array('add.php')); | |
23 | } | |
24 | else { | |
25 | Session::set("msg","Debe ser administrador para acceder."); | |
26 | $this->redirect(array('Main','index.php')); | |
27 | } | |
28 | } | |
29 | public function edit(){ | |
30 | if(Session::get("tipo") == "admin"){ | |
31 | Session::set("id",$_GET['p']); | |
32 | Session::set('mod', isset($_POST['txtmod']) ? $_POST['txtmod'] : Session::get('mod')); | |
33 | $modelos = (Session::get('mod')!="") ? $this->mod_v->obtenerXDataList(Session::get('mod')) : array(); | |
34 | if (Session::get('id')!=null && isset($_POST['btnaceptar'])){ | |
35 | if($this->checkDates()) { | |
36 | $load= array($_POST['hid'],$_POST['txtmat'],$_POST['txtcant'],$_POST['txtdes'],$_POST['txtmod'],$_POST['cboxtipo']); | |
37 | $this->mod_v->modificame($load); | |
38 | Session::set('vehiculos', array()); | |
39 | Session::set("msg","Vehículo Editado"); | |
40 | $this->redirect(array('index.php')); | |
41 | exit(); | |
42 | } | |
43 | } | |
44 | Session::set('vehiculo', $this->mod_v->obtenerXId(Session::get('id'))); | |
45 | Session::set('modelos', $modelos); | |
46 | Session::set('tiposveh', $this->mod_tv->obtenerTodos()); | |
47 | $this->redirect(array('edit.php')); | |
48 | } | |
49 | else { | |
50 | Session::set("msg","Debe ser administrador para acceder."); | |
51 | $this->redirect(array('Main','index.php')); | |
52 | } | |
53 | } | |
54 | public function foto(){ | |
55 | if(Session::get("tipo") == "admin"){ | |
56 | if (isset($_POST['btnaceptar'])) { | |
57 | if(isset($_FILES['foto'])){ | |
58 | $ruta= $this->checkImage($_FILES['foto']); | |
59 | if($ruta!= null){ | |
60 | $load=array(Session::get('vehiculo')['vehId'],$ruta); | |
61 | $this->mod_v->mod_foto($load); | |
62 | echo 'anda'; | |
63 | header("Location:index.php?c=vehiculos&a=edit&p=$load[0]"); | |
64 | exit(); | |
65 | } | |
66 | } | |
67 | } | |
68 | $this->redirect(array('foto.php')); | |
69 | } | |
70 | else { | |
71 | Session::set("msg","Debe ser administrador para acceder."); | |
72 | $this->redirect(array('Main','index.php')); | |
73 | } | |
74 | } | |
75 | ||
76 | private function checkImage($file){ | |
77 | if ($file["error"] > 0){ | |
78 | Session::set('msg', "ha ocurrido un error"); | |
79 | return null; | |
80 | } | |
81 | else { | |
82 | $permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png"); | |
83 | if($this->checkExtension($file)){ | |
84 | - | $prefijo = substr(md5(uniqid(rand())),0,6); |
84 | + | // Es mejor calcular el prefijo y ruta luego de la validacion siguiente por q si no cumple habrias hecho ese trabajo en vano |
85 | - | $ruta = "View/Layout/upload/".$prefijo."_".$file['name']; |
85 | + | |
86 | if (in_array($file['type'], $permitidos) && $file['size'] <= $limite_kb * 1024){ | |
87 | // Es mejor su tu mismo agregas la extension al archivo en vez de confiar en lo que manda el usuario | |
88 | // Existe muchos bypass a validaciones de extension usando null bytes u otras tecnicas | |
89 | - | return ($resultado) ? $ruta : null; |
89 | + | // Por ejemplo imagen.jpg%00.php |
90 | - | } |
90 | + | $extensiones = array('jpg', 'jpeg', 'gif', 'png'); |
91 | // Generamos el prefijo | |
92 | $prefijo = uniqueId(6); | |
93 | // Obtenemos la extension correcta para el archivo | |
94 | - | } |
94 | + | $extension = $extensiones[array_search($file['type'], $extensiones)]; |
95 | // Limpiamos el nombre del archivo de cualquier cosa rara | |
96 | $nombre = stringURLSafe($file['name']); | |
97 | // Y finalmente armamos la ruta final | |
98 | $ruta = "View/Layout/upload/$prefijo-$nombre.$extension"; | |
99 | $resultado = move_uploaded_file($file["tmp_name"], $ruta); | |
100 | return ($resultado) ? $ruta : null; | |
101 | } | |
102 | else { | |
103 | Session::set('msg', "tipo de archivo no permitido o excede a los $limite_kb kb"); | |
104 | return null; | |
105 | } | |
106 | - | if($type == $file['type']){ |
106 | + | |
107 | else { | |
108 | Session::set('msg', "error en la extensión"); | |
109 | return null; | |
110 | } | |
111 | - | } |
111 | + | |
112 | } | |
113 | private function checkExtension($file){ | |
114 | $file['type'] = pathinfo($file['name'], PATHINFO_EXTENSION); | |
115 | $types = array('jpg', 'jpeg','png', 'gif'); | |
116 | // Aca le agrego strtolower por si envian algo como .JPG q suele ser comun | |
117 | foreach($types as $type){ | |
118 | if($type == strtolower($file['type'])){ | |
119 | return true; | |
120 | } | |
121 | } | |
122 | return false; | |
123 | } | |
124 | // Esta funcion nos limpiara el nombre del archivo eliminando cualquier caracter raro | |
125 | function stringURLSafe($string){ | |
126 | $str = str_replace('-', ' ', $string); | |
127 | $str = str_replace('_', ' ', $string); | |
128 | $str = str_replace('.', ' ', $string); | |
129 | $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str); | |
130 | $str = trim(strtolower($str)); | |
131 | return $str; | |
132 | } | |
133 | // Mi version cuando quiero generar un id unico de longitud fija :) | |
134 | function uniqueId($l = 8) { | |
135 | return substr(md5(uniqid(mt_rand(), true)), 0, $l); | |
136 | } |