Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: jdc en 5 Diciembre 2011, 23:16 PM

Título: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: jdc en 5 Diciembre 2011, 23:16 PM
No puedo encontrar el error, alguien lo ve?

Código (php) [Seleccionar]

<?php

 $usuario 
= @$_POST['editUser'];
 
$pass = @$_POST['editPass'];
 
$tipo = @$_POST['editTipo']; //int
 
$sede = @$_POST['editSede']; //int
 
$hash md5($usuario.$pass);
 
$id = @$_POST['idetable']; //int

 
$query mysql_query("UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';"$link);
 
?>



Gracias ñ_ñ
Título: Re: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: Shell Root en 6 Diciembre 2011, 02:03 AM
Lo mismo de siempre, imprime la query y verifica su contenido.
Código (php) [Seleccionar]
$sql = "UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';";
print $sql;
Título: Re: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: jdc en 6 Diciembre 2011, 02:40 AM
Doh toda la razon...

UPDATE `sistema`.`usuarios` SET `usuario` = \'\', `passwd` = \'fe703d2586565a194907f\', `tipo` = \'1\', `sede` = \'1\' WHERE `usuarios`.`id` =\'5\';




A ver pruebo y te cuento
Título: Re: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: jdc en 6 Diciembre 2011, 03:27 AM
Cita de: Shell Root en  6 Diciembre 2011, 02:03 AM
Lo mismo de siempre, imprime la query y verifica su contenido.
Código (php) [Seleccionar]
$sql = "UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';";
print $sql;


Gracias Shell Root quedo funcionando todo ok :) te pasaste!

Código (php) [Seleccionar]

<?php
 
 $usuario 
= @$_POST['editUser'];
 
$pass = @$_POST['editPass'];
 
$tipo = @$_POST['editTipo']; //int
 
$sede = @$_POST['editSede']; //int
 
$hash md5($usuario.$pass);
 
$id = @$_POST['idetable']; //int
 
 
$query mysql_query("UPDATE `sistema`.`usuarios` SET `usuario` = \"$usuario\", `passwd` = \"$hash\", `tipo` = \"$tipo\", `sede` = \"$tipo\" WHERE `usuarios`.`id` =\"$id\";"$link);
 
?>



En la Query habia problema de comillas y ademas habia un error mio, al tener un campo como disabled no enviaba los datos y cuando comparaba si estaba vacio siempre me daba true xD

Gracias otra vez :p
Título: Re: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: s00rk en 6 Diciembre 2011, 22:31 PM
Por que no usar simples comillas como ' , asi te ahorras las \ ?


"UPDATE `sistema`.`usuarios` SET `usuario` = '$usuario', `passwd` = '$hash', `tipo` = '$tipo', `sede` = '$tipo' WHERE `usuarios`.`id` ='$id';"

Las \, son comunmente usadas cuando tu tu string empieza por el mismo tipo de comillas y quiere imprimir ejemplo:

echo "hola como estas \"juan\"";
echo 'hola como estas \'juan\'';
echo "hola como estas 'juan'";
echo 'hola como estas "juan"';

Si empieza con " dentro de la cadena puedes poner ' directamente sin poner \ a menos que decees poner " ocuparas poner \ puesto que iniciaste con  " , bueno espero haberme explicado jejeje
Título: Re: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: jdc en 9 Diciembre 2011, 21:10 PM
Gracias, de hecho ya lo habia hecho ñ_ñ solo puse esto para mostrar como habia quedado funcionando, en mi sistema ya esta con comilla simple sin \
Título: Re: No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)
Publicado por: WHK en 10 Diciembre 2011, 14:00 PM
Y que pasa si realmente necesitas insertar un $?, además por asuntos de seguridad, evitar pasar clases y esas cosas me acostumbré a usar siempre comillas simples ya que ahi el código arbitrario no funciona, o sea:

echo "$algo"; imprime la variable
echo '$algo'; imprime $algo

De hecho habia un bug que permitia ejecución de código arbitrario en vbuletin por causa de esto.
Además recuerda que desde php no vale de nada enviar punto y coma ";" porque no puedes hacer multiples querys, recuerda que ya no estás en el phpmyadmin.

Así lo haría yo:
Código (php) [Seleccionar]
<?php
if(
isset($_POST['editUser']) and
isset($_POST['editPass']) and
isset($_POST['editTipo']) and
isset($_POST['editSede']) and
isset($_POST['idetable'])
){
if($query mysql_query('
if exists (
select id from `usuarios` where id = '
.(int)$_POST['idetable'].' limit 1
)
update `usuarios` set 
`usuario` = "'
.mysql_real_escape_string($_POST['editUser']).'",
`passwd` = "'
.md5($_POST['editUser'].$_POST['editPass']).'",
`tipo` = '
.(int)$_POST['editTipo'].',
`sede` = '
.(int)$_POST['editSede'].'
where `id`  = '
.(int)$_POST['idetable'].'
'
$link))
echo 'Editado!';
else
echo 'El usuario que se desea editar no existe.';
}
?>