New question

Question:

 
  2  
 
Date: 15-12-2016 07:30:35 (In Spanish)

Operaciones matemáticas en comercio electrónico y protección de campos[Resolved]

Buenas tardes compañeros,

tengo un par de dudas que me están costando resolver.

La primera es que tengo varios checkboxes con opciones de un producto a la venta, unas opciones tienen un precio positivo y otras negativo. Adjunto foto:

IMAGEN

Cuando me paso los datos por Jquery a PHP me paso lo que es el tipo de operación, pero no hace lo que necesito.
me devuelve vacío, adjunto el código PHP:

$precioFinal = ($precioFinal).$operacion.($precio);


Donde $operacion es el simbolo de suma o resta, pero parece que lo coge como texto creo.

Otra duda y más grande es la siguiente, dado que el html y el javascript se puede modificar desde el navegador podrían modificar los precios. Esto hay alguna forma de resolverlo?, por ejemplo el código que tengo es este;

<div class="bloquesProducto">
<p class="text-center fontSize20 negrita colorNegro">PERSONALIZA TU PRODUCTO</p><br>
<p><strong>Color de chasis y ruedas:</strong></p><input type="checkbox" name="10" id="10" value="0" checked="checked" onclick="opcionDetalles(10,10, 0)" onchange="simulaRadioButtons(10,this.id)"> Plata (0 €)<br>
<input type="checkbox" name="10" id="11" value="0" onclick="opcionDetalles(10,11, 0)" onchange="simulaRadioButtons(10,this.id)"> Negro. (0 €)<br>
<input type="checkbox" name="10" id="12" value="0" onclick="opcionDetalles(10,12, 0)" onchange="simulaRadioButtons(10,this.id)"> Blanco (0 €)<br>
<input type="checkbox" name="10" id="13" value="0" onclick="opcionDetalles(10,13, 0)" onchange="simulaRadioButtons(10,this.id)"> Rojo (0 €)<br><br>
<p><strong>Estructura del chasis en aluminio:</strong></p>
<input type="checkbox" name="11" id="15" value="50" onclick="opcionDetalles(11,15, 50)"> SI. (solo disponible en color plata). (50 €)<br><br>
<p><strong>Opciones de configuración:</strong></p>
<input type="checkbox" name="12" id="14" value="-25" onclick="opcionDetalles(12,14, -25)"> SIN la sillita para el coche. (-25 €)<br>
<input type="checkbox" name="12" id="16" value="15" onclick="opcionDetalles(12,16, 15)"> CON ruedas neumáticas. (15 €)<br><input type="checkbox" name="12" id="17" value="15" onclick="opcionDetalles(12,17, 15)"> CON sombrilla (15 €)<br><br>
<p><strong>Gastos de envío:</strong></p>
<input type="checkbox" name="13" id="18" value="0" checked="checked" onclick="opcionDetalles(13,18, 0)" onchange="simulaRadioButtons(13,this.id)"> Península. (0 €)<br>
<input type="checkbox" name="13" id="19" value="40" onclick="opcionDetalles(13,19, 40)" onchange="simulaRadioButtons(13,this.id)"> Baleares (40 €)<br>
<input type="checkbox" name="13" id="20" value="30" onclick="opcionDetalles(13,20, 30)" onchange="simulaRadioButtons(13,this.id)"> Portugal. (30 €)<br>                    
</div>


Esto se puede modificar desde el navegador haciendo que cuando sume o reste, (SI LO CONSIGO JAJAJA), no sea el valor real.... alguien me puede ayudar?, nunca he hecho nada de tipo tienda, y luego viene el tema de las pasarelas.... ya veremos, pero de momento con solventar estas dos dudas me hacéis un favor enorme.

Muchas gracias
Tags: HTML - Javascript - JQuery - MySQL - PHP - Question - Security - Web Votes: 2 - Answers: 6 - Views: 10 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 16-12-2016 03:24:03 Efectivamente compañero el simbolo esta llegando como string es por ello que no hace la operacion

    te adjunto tu solucion

    $precioFinal = 0;
    
    switch ($operacion) {
        case '+':
             $precioFinal = $precioFinal + $precio;
             break;
        case '-':
             $precioFinal = $precioFinal - $precio;
             break;
    }
    
    echo "----->". $precioFinal;
    
    


    saludos

    prueba y me comentas

    Att
    Jose Quinto
      Votes: 2 - Link answer
     
  •  
      1  
     
    Date: 17-12-2016 01:47:48 Hola Juan,


    gracias por tu aporte, de los 2 problemas que expuse este lo solucioné de manera parecida, con un condicional si era + hacia preciofinal += precio y si era negativo -=.

    El problema que sigo teniendo es que una persona que sepa puede modificar los values o los ids directamente con el inspector de chrome por ejemplo.. y esto no se como protegerlo, se me ocurrión que en el momento de dar de alta el producto en la zona de administración se genere un hash o algo así que se relacione con el precio, pero bueno.... también se pueden copiar los hash de otras opciones con precios distintos y pegarlos en el sitio correspondiente...

    Debe haber alguna forma de proteger los formularios que tengan opciones que sumen y resten precio al precio final, si no hubiera opciones no hay problema, pero habiendolas.. no se como solucionarlo...
      Votes: 1 - Link answer
     
  • Date: 17-12-2016 02:55:41 Hola Fran, los precios deberás obtenerlos desde el servidor y no del usuario, esa es tu segunda solución ;)

    El usuario solo identifica que quiere (tema ID, no datos que por cierto tu ya tienes en el servidor)

    Un tema bien tratado, saludos a todos y como siempre buen código!
      Votes: 2 - Link answer
     
  •  
      0  
     
    Date: 17-12-2016 08:17:27 Muchas gracias Fernando, me lo suponía.

    De las 2 formas que comento... la de generar un hash único alfanumérico o pasar solo las IDS? es por adquirir buenos hábitos de programación.

    No obstante podría cambiar desde el navegador también los IDS manualmente cogiendo el ID de otro complemento no?

    Qué opción es mejor Fernando?, quedo a la espera y ya me pongo a programarlo.

    Muchas gracias como siempre por las ayudas que recibo en este foro.
      Votes: 0 - Link answer
     
  • Date: 18-12-2016 02:24:22 Lo que dice Fernando es correcto, tenés que tratar de tomar la cantidad mínima de datos desde la página. En este caso, solo el id (o los id's).

    Si lo querés proteger un poco, calculá el hash de cada id con el algoritmo que más cómodo te sientas.

    Y cualquiera es seguro. Estuve viendo algún video que han posteado por acá y la solución es calcular dos veces ese hash y sería casi imposible que descubran con que algoritmo lo hiciste.

    Y sobre copiar el hash de otro producto para que tome el precio de ese producto, capaz que no tenés que quedarte solo con el precio.

    Siguiendo con tu ejemplo, te cambia el hash de la opción sin sillita a la opción con sombrilla (es decir, te resta 15 pero te tendría que sumar 15).

    Como dice Fernando, vas a buscar en la base con el id de la opción sin sillita, antes de que confirme, le mostrás las opciones que eligió y le va a salir sin sillita (cuando el cliente "vivo" quiso elegir con sombrilla pero que le salga el precio con la opción sin sillita) y ahí se va a dar cuenta de que, aunque le cambió por "atrás", vos buscas en la base antes de grabar y le mostrás lo que va a comprar.

    Yo no le veo problema, siempre tenés que ir a buscar en la base aunque tenga cierto costo de tener que ir a buscar a la base. Es más seguro.

    No se si fui claro

    Saludos

    DIEGO
      Votes: 1 - Link answer
     
  •  
      0  
     
    Date: 20-12-2016 06:28:47 Muchas gracias por las respuestas a todos.   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com