Se puede optimizar este codigo ?

Iniciado por nobo, 1 Marzo 2012, 22:30 PM

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

nobo

Pues eso... Como podria optimizar este codigo?

Código (php) [Seleccionar]
$error = null;
$direccion = null;
$poblacion = null;
$provincia = null;
$postal = null;
$nombre = null;
$nick = null;
    $pass = null;
    $password = null;
    $email = null;
    $mail = null;
    $telefono = null;
    $telefono2 = null;

if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] == 'http://localhost/zulo/alta_usuario.php' && ($_POST != null))
{
$direccion = $_POST["strDireccion"];
$poblacion = $_POST["strPoblacion"];
$provincia = $_POST["strProvincia"];
$postal = $_POST["intCpostal"];
$nombre = $_POST["strNombre"];
$nick = $_POST["strNick"];
    $error = false; //Indica si hay un error
    $pass = $_POST["strPassword"];
    $password = $_POST["password"];
    $email = $_POST["strEmail"];
    $mail = $_POST["mail"];
    $telefono = $_POST["intNtelf"];
    $telefono2 = $_POST["telefono"];

      if($pass!=$password)
      {
         echo "Las contraseñas no coinciden";
         $error = true;
      }
      if($email!=$mail)
      {
         echo "El email no coincide";
         $error = true;
      }
     
      if($telefono!=$telefono2)
      {
         echo "Los telefonos no coinciden";
         $error = true;
      }
     
      $checkuser = comprobaruser($_POST["strNick"]);
  if ($checkuser != 0)
      {
        header('Location: alta_usuariorepetido.php');
      }
     
      $checkmail = comprobarmail($_POST["strEmail"]);
  if ($checkmail != 0)
      {
        header('Location: alta_emailrepetido.php');     
      }

     if ($error != true)
     {
        $insertSQL = sprintf("INSERT INTO tblusuario (strNombre, strEmail, intActivo, strPassword, strDireccion, strNick, intCpostal, strProvincia, strPoblacion, intNtelf) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['strNombre'], "text"),
                       GetSQLValueString($_POST['strEmail'], "text"),
                       GetSQLValueString($_POST['intActivo'], "int"),
                       GetSQLValueString($_POST['strPassword'], "text"),
                       GetSQLValueString($_POST['strDireccion'], "text"),
                       GetSQLValueString($_POST['strNick'], "text"),
                       GetSQLValueString($_POST['intCpostal'], "int"),
                       GetSQLValueString($_POST['strProvincia'], "text"),
                       GetSQLValueString($_POST['strPoblacion'], "text"),
                       GetSQLValueString($_POST['intNtelf'], "int"));
        mysql_select_db($database_conexionzulo, $conexionzulo);
        mysql_query($insertSQL, $conexionzulo);
header('Location: alta_ok.php');
    }
     
}

WHK

$password = $_POST["password"];
Porque no usas la variable $_POST directamente en ves de pasarlo a otras variables?

GetSQLValueString($_POST['strNombre'], "text") es mejor que mysql_real_escape_string() ?

nobo

Para luego poder compararlas, no?

Pues no se si es mejor o no.. :S

Por eso lo pongo aqui para ver que es mejor o como hacerlo mejor...

Shell Root

Las puedes comparar si usar la variable, es decir,
Código (php) [Seleccionar]


if( $_POST["strPassword"] != $_POST["password"] ){
   /* SNIP */

if( $_POST["strEmail"] != $_POST["mail"] ){

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nobo

Pues si! Teneis razon ;)

Las otras si las tengo que dejar, no? Las que estan null...
Las uso para una vez mandado el form, si hay errores imprimir por pantalla los values de cada campo.

En cuanto al GetSQLValueString.. Lo dejo?

WHK

No sabemos que hace esa función y si php.net el creador de php te dice que uses mysql_real_escape_string creo que es por algo, si haces algo que no te dice php que hagas entonces puedes correr riesgos de inyección.

Dale un vistazo a este post:
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html

nobo

OK! Perfecto gracias !! :D

Y en cuanto al codigo hay algo mas que pueda hacer para que no sea "spaguetti" xDDD