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. You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login



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