Diferencia entre revisiones de «Usuario:ManuelRomero/PHP/Examen segunda»

De WikiEducator
Saltar a: navegación, buscar
Línea 256: Línea 256:
 
     </body>
 
     </body>
 
</html>
 
</html>
 +
 +
</source>
 +
}}
 +
{{Plegable|hide|accededido.php|
 +
<source lang=php>
 +
<?php
 +
 +
/*
 +
* To change this license header, choose License Headers in Project Properties.
 +
* To change this template file, choose Tools | Templates
 +
* and open the template in the editor.
 +
*/
 +
$nombre = $_GET['nombre'];
 +
echo "<h1>Has accedido como $nombre</h1>";
 +
?>
 +
 +
</source>
 +
}}
 +
{{Plegable|hide|funciones.php|
 +
<source lang=php>
 +
<?php
 +
 +
/**
 +
* Se conecta a la base de datos con los parámetros establecidos
 +
*/
 +
function conectarse() {
 +
  $con = new mysqli("localhost", "root", "root", "usuarios");
 +
  if ($con->connect_errno != 0)
 +
    die("Abortamos la app, no se ha podido conectar Error " . $con->connect_error);
 +
  return $con;
 +
}
 +
 +
/**
 +
*
 +
* @param conexion mysqli $con
 +
* @param string $nombre
 +
* @param type $sentencia
 +
* @return type
 +
*/
 +
function insertar($nombre, $sentencia) {
 +
  $con=  conectarse();
 +
  $pass = genera_password();
 +
  $retorno = null;
 +
 +
  $stmt = $con->stmt_init();
 +
  $stmt = $con->prepare($sentencia);
 +
  $acceso = 0;
 +
  $stmt->bind_param("ssi", $nombre, $pass, $acceso);
 +
  if ($stmt->execute())
 +
    $retorno = $pass;
 +
 +
  $stmt->close();
 +
  return $retorno;
 +
  $con=null;
 +
}
 +
 +
/**
 +
* Generamos una password de 8 caracteres cogidos del código ascii
 +
* Evitamos los 32 primeros, muchos de ellos no imprimibles
 +
* También los 128 últimos por ser extendidos
 +
* @return string
 +
*/
 +
function genera_password() {
 +
  $pass = "";
 +
  for ($i = 0; $i < 8; $i++) {
 +
    $n = rand(33, 128);
 +
    $pass .= chr($n);
 +
  }
 +
  return $pass;
 +
}
 +
 +
/**
 +
*
 +
* Verifica si ese nombre existe en la base de datos con la que estamos trabajanod
 +
* @param string $nombre
 +
* @return boolean true/false según exista o no el nombre
 +
*/
 +
function existe($nombre) {
 +
  $con = conectarse();
 +
  $retorno = false;
 +
  $sentencia = "select * from usuario where nombre = ? ";
 +
  $stmt = $con->prepare($sentencia);
 +
  $stmt->bind_param("s", $nombre);
 +
  $a = $stmt->execute();
 +
  $stmt->store_result();
 +
 +
  if ($stmt->num_rows > 0)
 +
    $retorno = true;
 +
 +
  $stmt->close();
 +
  $con=null;
 +
 +
  return $retorno;
 +
}
 +
 +
/**
 +
* Actualiza la password del usuario con la nueva facilitada
 +
* Además pone en acceso el valor 1 o true que indica que el usuario ya cambió la passwrod
 +
* @param string $nom
 +
* @param string $pass
 +
* @return boolean indica si se ha actualizado  o no
 +
*/
 +
function actualizar($nom, $pass) {
 +
  $con=  conectarse();
 +
  $retorno = false;
 +
  $sentencia = "update usuario set pass = ?, acceso = ? where nombre = ?";
 +
  $stmt = $con->prepare($sentencia);
 +
  $acceso = 1;
 +
  $stmt->bind_param("sis", $pass, $acceso, $nom);
 +
 +
  $a = $stmt->execute();
 +
 +
  if ($stmt->affected_rows == 1)
 +
    $retorno = true;
 +
 +
  return $retorno;
 +
}
 +
 +
 +
/**
 +
* Verifica si el usuario y password existen en la base de datos
 +
* También en caso de que exista verifica si ha cambiado o no la password
 +
* @param type $usuario
 +
* @param type $pass
 +
* @return int retorno  uno de estos valores
 +
* -1 => El usuario/pass no existen en la base de datos
 +
* 0 => El usuario existe pero tiene que cambiar la password
 +
* 1 El usuario existe y ya cambió la password por lo que puede acceder
 +
*/
 +
function verifica( $usuario, $pass) {
 +
  $con = conectarse();
 +
  $sentencia = "select acceso from usuario where nombre =? and pass = ?";
 +
  $stmt = $con->prepare($sentencia);
 +
  $stmt->bind_param("ss", $usuario, $pass);
 +
  $a = $stmt->execute();
 +
  $stmt->store_result();
 +
  $stmt->bind_result($acceso);
 +
  $stmt->fetch();
 +
 +
  if ($stmt->num_rows == 0)
 +
    $retorno = -1;
 +
  else
 +
    $retorno = $acceso;
 +
  return $retorno;
 +
}
 +
 +
?>
  
 
</source>
 
</source>
 
}}
 
}}

Revisión de 22:49 25 may 2017

Ejercicio de xajax

  • Este ejercicio simplemente tiene que añadir el usuario en una lista y escribir el nombre y fecha del último usuario insertado
  • Muchos/as os habéis liado con sesiones y otro tema para la lista. No me lo había imaginado esto, no hace falta en absoluto, aunque así también se puede conseguir
  • Os adjunto el código que como veis es bastante sencillo

Ejercicio de base de datos

  • Es importante leer el enunciado, hay personas que parece que no lo han leído pues no han seguido las especificaciones
  • La parte de base de datos se repite continuamente. En este caso he creado un fichero de funciones para las acciones con bases de datos
  • Siguiendo las especificaciones se implementan los sigueintes ficheros