Resultados concurso de programación - El Mejor programador de Underc0de

Iniciado por alexander1712, Noviembre 03, 2012, 10:28:38 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.


UnderC0de - Sección de PHP - Moderador: Alexander1712
Gestión 27/10/12

Presentan los resultados de este concurso


y el ganador es...

Roodaka

con su código optimizado:

Código: php
<?php
// Verificamos que la clave que necesitamos del arreglo $_POST este y seguimos.
if(isset($_POST['nombre']))
{
  // Conectamos a la base de datos o salimos.
  $conn = mysqli_connect('localhost', 'root', '', 'rdk') or exit('No se ha podido conectar a la base de datos.');

  // Validamos la variable quitandole un posible XSS y agregamos las comillas
  // que necesitaremos para las consultas.
  $target = '\''.mysqli_real_escape_string($conn, htmlspecialchars($_POST['nombre'])).'\'';

  // Chequeamos si nuestro nombre esta en la base de datos.
  $query = mysqli_query($conn, 'SELECT id FROM usuarios WHERE nombre = '.$target.' LIMIT 1');
  // Por medio de la cantidad de filas sabremos si hubo resultados o no
  if($query->num_rows >= 1)
   {
    echo 'Tu nombre ya est&aacute; en nuestra base de datos.';
   }
  else
   {
    $insert = mysqli_query($conn, 'INSERT INTO usuarios ( nombre ) VALUES ('.$target.')');
    // Chequeamos que haya sido exitosa basandonos en el numero de consultas afectadas
    if($insert->affected_rows($conn) >= 1)
     {
      echo 'Ahora tu nombre ha sido ingresado en nuestra base de datos';
     }
    else
     {
      echo 'Ha habido un error mientras se registraba su nombre, por favor intente m&aacute;s tarde.';
     }
   }
  // Cerramos la conexion
  mysqli_close($conn);
}
else
{
  // mostramos un formulario improvisado para testear este scripcito
  echo '<form method="post" action=""><label for="nombre">Nombre:</label><input name="nombre" type="text" /><input value="Enviar" name="enviar" type="submit" /></form>';
}


Cambios destacados:
* Comentarios agregados
* utilización correcta de " y '
* mysql por mysqli
* agregados filtros de seguridad
* identación correcta
* mensajes de errores agregados

Comentarios de mejoras del moderador:
Ninguno

Felicidades, y gracias a todos por participar...

quien quiera puede pedir que se publique su código en éste post.

Saludos! Atte. Alexander1712 - Moderador

:D Buenísimo! Quiero mi millón de dólares de premio en efectivo, por favor :)


Saludos!
Atte. No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Felicidades al ganador y gracias a los demás por participar.
Twitter: @The_Pr0ph3t
[email protected]