string
con el HTML necesario para presentar los campos del formulario. Es necesario asegurarse que como parte del envío se envía un parámetro con nombre (i.e. utilizado como valor del atributo name del botón de envío del formulario).
+ */
+ protected function generaCamposFormulario ($datos) {
+ return '';
+ }
+
+ /**
+ * Procesa los datos del formulario.
+ */
+ protected function procesaFormulario($datos) {
+
+ }
+
+ /**
+ * Función que verifica si el usuario ha enviado el formulario. Comprueba si existe el parámetro $formId
en $params
.
+ *
+ * @param array $params Array que contiene los datos recibidos en el envío formulario.
+ *
+ * @return boolean Devuelve TRUE
si $formId
existe como clave en $params
+ */
+ private function formularioEnviado(&$params) {
+ return isset($params['action']) && $params['action'] == $this->formId;
+ }
+
+ /**
+ * Función que genera el HTML necesario para el formulario.
+ *
+ *
+ * @param array $errores (opcional) Array con los mensajes de error de validación y/o procesamiento del formulario.
+ *
+ * @param array $datos (opcional) Array con los valores por defecto de los campos del formulario.
+ */
+ private function generaFormulario($errores = array(), &$datos = array()) {
+
+ $html= $this->generaListaErrores($errores);
+
+ $html .= '';
+ return $html;
+ }
+
+ private function generaListaErrores($errores) {
+ $html='';
+ $numErrores = count($errores);
+ if ( $numErrores == 1 ) {
+ $html .= "- ".$errores[0]."
";
+ } else if ( $numErrores > 1 ) {
+ $html .= "- ";
+ $html .= implode("
- ", $errores);
+ $html .= "
";
+ }
+ return $html;
+ }
+
+ private function csrfguard_GenerateToken($formId) {
+ if ( ! isset($_SESSION) ) {
+ throw new Exception('La sesión del usuario no está definida.');
+ }
+
+ if ( function_exists('hash_algos') && in_array('sha512', hash_algos()) ) {
+ $token = hash('sha512', mt_rand(0, mt_getrandmax()));
+ } else {
+ $token=' ';
+ for ($i=0;$i<128;++$i) {
+ $r=mt_rand(0,35);
+ if ($r<26){
+ $c=chr(ord('a')+$r);
+ } else{
+ $c=chr(ord('0')+$r-26);
+ }
+ $token.=$c;
+ }
+ }
+
+ $_SESSION[$formId.'_'.self::CSRF_PARAM]=$token;
+
+ return $token;
+ }
+
+ private function csrfguard_ValidateToken($formId, $tokenRecibido) {
+ if ( ! isset($_SESSION) ) {
+ throw new Exception('La sesión del usuario no está definida.');
+ }
+
+ $result = TRUE;
+
+ if ( isset($_SESSION[$formId.'_'.self::CSRF_PARAM]) ) {
+ if ( $_SESSION[$formId.'_'.self::CSRF_PARAM] !== $tokenRecibido ) {
+ $result = array();
+ $result[] = 'Has enviado el formulario dos veces';
+ }
+ $_SESSION[$formId.'_'.self::CSRF_PARAM] = ' ';
+ unset($_SESSION[$formId.'_'.self::CSRF_PARAM]);
+ } else {
+ $result = array();
+ $result[] = 'Formulario no válido';
+ }
+ return $result;
+ }
+}
+?>
+
+
\ No newline at end of file
diff --git a/login/includes/formLogin.php b/login/includes/formLogin.php
new file mode 100644
index 0000000..31900fe
--- /dev/null
+++ b/login/includes/formLogin.php
@@ -0,0 +1,103 @@
+reply = array();
+ }
+
+ //Methods:
+
+ //Returns validation response:
+ public function getReply() {
+
+ if(isset($_SESSION["login"])){
+ $this->reply = "Bienvenido {$_SESSION['nombre']}
+ {$_SESSION['nombre']} has iniciado sesión correctamente.
+ Usa los botones para navegar
+
+ \n";
+ }
+ else if(!isset($_SESSION["login"])){
+ $this->reply = "ERROR
".
+ "El usuario o contraseña no son válidos.
+ Vuelve a intetarlo o regístrate si no lo habías hecho previamente.
+
+ \n";
+ }
+
+ return $this->reply;
+ }
+
+ //Process form:
+ public function processesForm($name, $pass) {
+ $login = true;
+ $name = $this->test_input($name);
+ $pass = $this->test_input($pass);
+
+ $username = isset($name) ? $name : null ;
+ if (!$username || !mb_ereg_match(self::HTML5_EMAIL_REGEXP, $username)) {
+ $login = false;
+ }
+ else{
+ $login = true;
+ }
+
+ $password = isset($pass) ? $pass : null ;
+ if (!$password || mb_strlen($password) < 4) {
+ $login = false;
+ }
+ else{
+ $login = true;
+ }
+
+ if ($login) {
+ $bd = new UserDAO('complucine');
+ if($bd){
+ $selectUser = $bd->selectUser($username);
+ if($selectUser){
+ /*
+ while($row = mysqli_fetch_array($selectUser)){
+ $id = $row['id'];
+ $username = $row['username'];
+ $email = $row['email'];
+ $password = $row['passwd'];
+ $rol = $row['rol'];
+ }
+ $this->user = $bd->loadUser($id, $username, $email, $password, $rol);
+ */
+ //ARREGLAR LO DE ARRIBA Y BORRAR:
+ if($username == "admin") $this->user = $bd->loadUser("0", "admin", "admin@complucine.sytes.net", "adminpass", "admin");
+ else if($username == "manager") $this->user = $bd->loadUser("1", "manager", "manager@complucine.sytes.net", "managerpass", "manager");
+ else $this->user = $bd->loadUser("2", "user", "user@complucine.sytes.net", "userpass", "user");
+ }
+ }
+
+ if ($this->user->getName()) {
+ $_SESSION['user'] = $this->user;
+ $_SESSION["nombre"] = $this->user->getName();
+ $_SESSION["login"] = $login;
+ $_SESSION["rol"] = $this->user->getRol();
+ }
+ }
+ //mysqli_free_result($selectUser);
+ }
+
+ protected function test_input($input){
+ return htmlspecialchars(trim(strip_tags($input)));
+ }
+
+
+}
+?>
\ No newline at end of file