Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: nobo en 12 Febrero 2012, 23:28 pm



Título: Esto esta bien ??? SOLUCIONADO!
Publicado por: nobo en 12 Febrero 2012, 23:28 pm
Ahi va !

Código
  1. $tallas = comprobartalla($_GET['recordID']);
  2. if ($tallas == 0) {$carrito = comprobarcarrito($_GET['recordID']);
  3. if ($carrito !=0) {$insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",$_GET['intCantidad'],
  4.   $carrito);}
  5.   else {$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad) VALUES (%s, %s, %s)",
  6.                       GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
  7.   GetSQLValueString($_GET['recordID'], "int"),
  8.   GetSQLValueString($_GET['intCantidad'], "int"));}
  9.   }
  10.  

Pongo las funciones:


Código
  1. function comprobartalla($idproducto)
  2. {
  3. global $database_conexionzulo, $conexionzulo;
  4. mysql_select_db($database_conexionzulo, $conexionzulo);
  5. $query_ConsultaFuncion = sprintf("SELECT * FROM tblproductotalla WHERE relProducto=%s", $idproducto);
  6. $ConsultaFuncion = mysql_query($query_ConsultaFuncion, $conexionzulo) or die(mysql_error());
  7. $row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion);
  8. $totalRows_ConsultaFuncion = mysql_num_rows($ConsultaFuncion);
  9. if ($totalRows_ConsultaFuncion == 0)
  10. return 0;
  11. else return 1;
  12. mysql_free_result($ConsultaFuncion);
  13. }
  14.  
  15. // +++++++++++++++++++++++++++++++++++++++++++
  16. // +++++++++++++++++++++++++++++++++++++++++++
  17.  
  18. function comprobarcarrito($idproducto)
  19. {
  20. global $database_conexionzulo, $conexionzulo;
  21. mysql_select_db($database_conexionzulo, $conexionzulo);
  22. $query_ConsultaFuncion = sprintf("SELECT * FROM tblcarrito WHERE idUsuario = %s AND idProducto=%s AND intTransaccionEfectuada = 0", $_SESSION['MM_IdUsuario'],$idproducto);
  23. $ConsultaFuncion = mysql_query($query_ConsultaFuncion, $conexionzulo) or die(mysql_error());
  24. $row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion);
  25. $totalRows_ConsultaFuncion = mysql_num_rows($ConsultaFuncion);
  26. if ($totalRows_ConsultaFuncion >0)
  27. return $row_ConsultaFuncion['intContador'];
  28. else
  29. return 0;
  30. mysql_free_result($ConsultaFuncion);
  31. }


Lo solucione con un elseif:

Código
  1. if ($tallas == 0 && $carrito!=0){$insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",$_GET['intCantidad'],
  2.   $carrito);}
  3.   elseif ($tallas == 0 && $carrito == 0) {$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad) VALUES (%s, %s, %s)",
  4.                       GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
  5.                       GetSQLValueString($_GET['recordID'], "int"),
  6.                       GetSQLValueString($_GET['intCantidad'], "int"));}

No se si es la manera adecuada o que... Pero bueno.. Si hay otra espero que me la hagan saber :D

Gracias a todos los que me ayudaron ! Y a los que no.... TAMBIEN !! jajaja


Título: Re: Esto esta bien ???
Publicado por: Shell Root en 13 Febrero 2012, 05:18 am
Y la pregunta es?


Título: Re: Esto esta bien ???
Publicado por: nobo en 13 Febrero 2012, 10:42 am
Pues que si esta bien... Porque no me esta funcionando :S

Si hay algun error, esa es la pregunta. Porque no me esta funcionando...


Título: Re: Esto esta bien ???
Publicado por: Shell Root en 13 Febrero 2012, 16:17 pm
1. No esta funcionando qué!
2. Muestra algún error, cual?
3. No somos adivinos :D


Título: Re: Esto esta bien ???
Publicado por: WHK en 13 Febrero 2012, 16:28 pm
Como dice shellroot debes decir porque no funciona, sale algun mensaje o se queda en blanco o que?

Código:
or die(mysql_error());
Eso jamas jamas jamas se hace o si no le estarás revelando a un atacante la información sobre nombre de tablas, columnas, querys, etc, además tu código tiene inyección sql.

La función mysql_error() solo lo utiliza el desarrollador para ver que pasa en ciertas sircunstancias pero jamas se debe dejar a la vista de los demás, para eso existe mysql_error_num() y según el número tu sistema debería reaccionar y decir if(num == 2) echo 'error en tal cosa.' Pero nunca reveles tablas, columnas ni datos.


Título: Re: Esto esta bien ???
Publicado por: nobo en 13 Febrero 2012, 22:36 pm
Perfecto !! Si me interesa.. Pero... Todavia no empece con el tema seguridad ya que la pagina esta en desarrollo en cuanto haya que ponerla a funcionar... Pedire consejos de seguridad :D

Pues la cosa es que no da ningun error jajajaja Ese es el problema si no sabria por donde tirar mas o menos o lo postearia.. Pero es que no da ningun error !!!

Simplemente hace lo mismo que antes.. Me añade el producto al carrito pero no lo suma...

Lo que se supone que tiene que hacer eso es mirar si tiene talla y si esta en el carrito. Si esta en el carrito hacer un update para sumarlo.

Asi que ... Es como si no estubiese funcionando :S Pero sin ningun error ni nada..

Gracias a los dos !


Título: Re: Esto esta bien ???
Publicado por: nobo en 14 Febrero 2012, 17:47 pm
Echo de esta consulta que es de la funcion comprobartalla:

$query_ConsultaFuncion = sprintf("SELECT * FROM tblproductotalla WHERE relProducto=%s", $idproducto);

SELECT * FROM tblproductotalla WHERE relProducto=2

Echo de la consulta de la funcion comprobarcarrito:

SELECT * FROM tblcarrito WHERE idUsuario = 1 AND idProducto=2 AND intTransaccionEfectuada = 0

Echo de $tallas:

0 (cuando no hay tallas)

1 (cuando hay tallas)

Echo $carrito:
88 (cuando esta en el carrito intContador)

0 (cuando no esta en el carrito) ....

He ido probando con el if y si me imprimia un echo por ejemplo cuando $tallas == 0 && $carrito !=0 ... He intentado hacer el UPDATE con esa comparacion y no me lo hace... Lo he intentado asi: $insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",$_GET['intCantidad'],
                       $carrito);