Foros del Web » Programando para Internet » PHP »

insertar url en campo de db al iniciar sesion los usuarios

Estas en el tema de insertar url en campo de db al iniciar sesion los usuarios en el foro de PHP en Foros del Web. Estoy creando en mi web una sección de usuarios con perfiles y lista de usuarios y necesito ayuda para acabar. Lo que quiero es subir ...

  #1 (permalink)  
Antiguo 27/04/2016, 14:32
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
insertar url en campo de db al iniciar sesion los usuarios

Estoy creando en mi web una sección de usuarios con perfiles y lista de usuarios y necesito ayuda para acabar.

Lo que quiero es subir una url de img a un campo de la tabla usuarios en la db cuando los usuarios inician sesión, reemplazando a la existente, y otra url de img diferente, en el mismo campo, cuando se cierra la sesión, reemplazando a la existente.

La idea es que aparezca en la lista de usuarios cuando están conectados o desconectados usando dos imágenes diferentes.

La verdad, he probado muchas formas y no consigo nada.

Ahora estoy probando insertando un código en el archivo encargado de comprobar el inicio de sesión y nada de nada.

Este es el código del archivo:
Código PHP:
Ver original
  1. <?php
  2.     include('Conexion_db.php');
  3.     if(isset($_POST['enviar'])) {
  4.         if(empty($_POST['usuario'])) {
  5.                 header('Location: index.php?error1=acceso');
  6. $errores[]=true;
  7.            return $errores;
  8. }
  9.         if(empty($_POST['clave'])) {
  10.                 header('Location: index.php?error2=acceso');
  11. $errores[]=true;
  12.            return $errores;
  13.  
  14.         }else {
  15.             $usuario = mysql_real_escape_string($_POST['usuario']);
  16.             $clave = mysql_real_escape_string($_POST['clave']);
  17.  
  18.             $sql = mysql_query("SELECT id_usuario, usuario, clave FROM usuarios WHERE usuario='".$usuario."' AND clave='".$clave."'");
  19.             if($row = mysql_fetch_array($sql)) {
  20.                 $_SESSION['id_usuario'] = $row['id_usuario'];
  21.                 $_SESSION['usuario'] = $row["usuario"];
  22.                                 $_SESSION['nivel'] = $row["nivel"];
  23.                 header("Location: index.php");
  24.             }else {
  25. ?>
  26.  
  27. <?php
  28. $conexion = mysqli_connect('localhost', 'usuario_db', 'clave_db', 'nombre_db');
  29.  
  30. $online = $_POST['online'];
  31. $id_usuario = $_POST['id_usuario'];
  32.  
  33. $consulta="UPDATE usuarios SET online='$online' VALUES ('conectado.png') WHERE id_usuario='$id_usuario';";
  34.  
  35. $fil = mysqli_query($conexion, $consulta);
  36.  
  37. header("Location: index.php");
  38. ?>
  39. <?php
  40.                 header('Location: index.php?error3=acceso');
  41. $errores[]=true;
  42.            return $errores;
  43. ?>
  44. <?php
  45.             }
  46.         }
  47.     }else {
  48.         header("Location: index.php");
  49.     }
  50. ?>
  51. <?php
  52. $archivo_origen = $_FILES['archivo_usuario']['tmp_name'];
  53. $archivo_final = "avatares/avatar<?=$id_usuario?>";
  54.  
  55.  
  56. if(move_uploaded_file($archivo_origen, $archivo_final)){
  57.    print "El archivo fue subido con éxito.";
  58. }else{
  59.    print "Error al intentar subir el archivo.";
  60. }
  61.  ?>

Me pongo en vuestras manos

Saludos y Gracias de antemano.
  #2 (permalink)  
Antiguo 27/04/2016, 14:40
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Esta es la parte del código para la subida de la url:

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysqli_connect('localhost', 'usuario_db', 'clave_db', 'nombre_db');
  3.  
  4. $online = $_POST['online'];
  5. $id_usuario = $_POST['id_usuario'];
  6.  
  7. $consulta="UPDATE usuarios SET online='$online' VALUES ('conectado.png') WHERE id_usuario='$id_usuario';";
  8.  
  9. $fil = mysqli_query($conexion, $consulta);
  10.  
  11. header("Location: index.php");
  12. ?>

Alguien sabe porque no funciona o si es valido para lo que quiero.
  #3 (permalink)  
Antiguo 27/04/2016, 15:22
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 11 meses
Puntos: 39
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Vamos con un poco de lógica. Qué intentas hacer aquí?
Código SQL:
Ver original
  1. UPDATE usuarios SET online='$online' VALUES ('conectado.png') WHERE id_usuario='$id_usuario';

El valor 'conectado.png' en qué columna lo pones?
VALUES no está dentro de la sintaxis de UPDATE
  #4 (permalink)  
Antiguo 28/04/2016, 00:50
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Cita:
Iniciado por rodocoyote15 Ver Mensaje
Vamos con un poco de lógica. Qué intentas hacer aquí?
Código SQL:
Ver original
  1. UPDATE usuarios SET online='$online' VALUES ('conectado.png') WHERE id_usuario='$id_usuario';

El valor 'conectado.png' en qué columna lo pones?
VALUES no está dentro de la sintaxis de UPDATE
Gracias por responder rodocoyote15

No se mucho de php y no puedo evitar cometer errores, seguro que esto es una chapuza y existe otras formas mejores, pero yo no las conozco.

Creí que conectado.png se metería en la tabla 'usuarios' campo 'online'

A que te refieres con esto: VALUES no está dentro de la sintaxis de UPDATE

No se puede o esta mal hecho.

No se lo que quieres decir.
  #5 (permalink)  
Antiguo 28/04/2016, 02:39
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

A lo que se refiere el compañero es que tu consulta no es valida.

La sintaxis de update la puedes encontrar aqui

un ejemplo:
Código SQL:
Ver original
  1. UPDATE tabla SET columna='valor_a_asignar' WHERE columna_1='coincidencia_en_columna_1';
__________________
Unset($vida['malRollo']);
  #6 (permalink)  
Antiguo 28/04/2016, 02:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

SQL no es PHP, es otro lenguaje y tiene sus propias reglas que debes respetar.
Lee el Link que te pasan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 28/04/2016, 05:31
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Cita:
Iniciado por gnzsoloyo Ver Mensaje
SQL no es PHP, es otro lenguaje y tiene sus propias reglas que debes respetar.
Lee el Link que te pasan.
Si yo lo intento, pero no es nada fácil cuando se utilizan términos que me suenan a chino y te mandan a pag que están en ingles, y que no se ni papa, y encima el traductor de bing no la traduce, con lo cual hay que traducir párrafo a párrafo.

Gracias de todos modos.
  #8 (permalink)  
Antiguo 28/04/2016, 06:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Lo siento, pero la mayor parte de lo que necesitas leer a nivel técnico está en inglés, y si no puedes al menoos entenderlo (aunque no lo domines), no podrás nunca trabajar en programación y menos aún en desarrollos con bases de datos.

Ahora bien, tu problema es simple, y pudes resolverlo leyendo un tutorial BASICO de SQL, porqu eel error de sintaxis que cometes es tan sencillo que ni siquiera tienes que leer inglés par darte cuenta.
Si en el manual de refrenencia te pone esta descripción:
Cita:
Código MySQL:
Ver original
  1. UPDATE [LOW_PRIORITY] [IGNORE] table_reference
  2.     SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
  3.     [WHERE where_condition]
  4.     [ORDER BY ...]
como mínimo tienes que darte cuenta que no hay ninguna cláusula VALUES, no te parece?
Eso quiere decir simplemente que el VALUES no pertenece a un UPDATE.

AL menos eso debe quedarte claro.

Además, algunos párrafos mas abajo tienes este ejemplo:

Código MySQL:
Ver original
  1. UPDATE items,month SET items.price=month.price
  2. WHERE items.id=month.id;
Con esos es más que evidente donde estás cometiendo el error en tu query.

Nota bene y sin pretender ofender: En desarrollo, programación y BBDD, no saber "ni papa" no es una justificacion para no esforzarse en aprender. Si no entiendes al menos inglés técnico, ponte con un dicionario al lado del teclado (eltraductor de Bing es un asco), y tradúcelo.
Con un poco de práctica irás entendiendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 28/04/2016, 07:19
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

El link es de la documentacion oficial, pero también puedes encontar información en castellano, que quizas no tan extensa y precisa como la oficial, pero te puden servir para aprender.

Por ejemplo aquí.

Si estas comenzando, lo mejor es que te tomes un tiempo en leer algun manual básico, en el que se expliquen la sintaxis y conceptos mas elementales, para a partir de una base minima ir creciendo.


Una explicación simple de UPDATE, podría ser así:

La instrucción UPDATE nos permite actualizar registros de una tabla.

Mediante la cláusula SET especificamos que campos del/los registro/s van a ser actualizados.

Mediante la cláusula WHERE podemos establecer que registros se van a actualizar, si se omite el WHERE todos los registros seran actualizados.


La sentencia puede incluir otras clausulas, pero de momento para lo que nos interesa eso es lo básico.

Sabiendo esto deberias poder entender un ejemplo básico:
Código SQL:
Ver original
  1. UPDATE nombre_mi_tabla SET columna='valor_a_asignar' WHERE columna_1='coincidencia_en_columna_1';
__________________
Unset($vida['malRollo']);
  #10 (permalink)  
Antiguo 28/04/2016, 07:41
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Perdona las modestias pero sigo sin entender

Lo de poner el VALUES en el UPDATE no lo he inventado yo, lo vi en internet y lo probé como tantas otras cosas, quizás me confundí, ya te digo que no conozco bien el php, ni el sql.

Solo quiero acabar con mi web.

Ni siquiera pretendo trabajar en ello, ni ganar dinero.

Hoy he vuelto a conseguir meter la img en el campo de db pero se metió en todos los usuarios. He ido a la db y las he eliminado manualmente, y he vuelto a intentarlo pero no vuelve a subirla mas.

El código lo he cambiado según he entendido lo que me habéis sugerido, y ahora esta así:

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysqli_connect('', '', '', '');
  3.  
  4. $online = $_POST['online'];
  5. $id_usuario' = $_POST['id_usuario''];
  6.  
  7. $consulta="UPDATE usuarios SET online='conectado.png' WHERE online='$online' id_usuario'='$id_usuario''";
  8.  
  9. $fil = mysqli_query($conexion, $consulta);
  10. header('Location: index.php');
  11. ?>

Pero sigue sin hacer lo que quiero
  #11 (permalink)  
Antiguo 28/04/2016, 07:58
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

no entiendo porque tanto rollo, esta bien que no sepas algo, pero a esta altura y con tanto aporte que te han dado, pues ya deberias de haberlo aclarado, por otro lado, porque no simplemente ingresas por ejemplo Inline u Offline en el campo, y en tu documento validas el campo:

Código PHP:
Ver original
  1. $consulta="UPDATE usuarios SET online = '$estado' WHERE  id_usuario = '$id_usuario' ";
  2.  
  3.  
  4. if($row['campo'] == "Inline"){
  5. $img = "loquesea.png";
  6. }else{
  7. $img = "loquenosea.png";
  8. }
Código HTML:
Ver original
  1. <img src="directorio/<?php echo $img; ?>">
????
digo sin tanto rollo amigo, hay miles de maneras de hacer lo que buscas, pero si indicas esto:

Cita:
Perdona las modestias pero sigo sin entender
luego de tanto aporte, pues imagina...
__________________
[email protected]
HITCEL
  #12 (permalink)  
Antiguo 28/04/2016, 11:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Cita:
Iniciado por jearj Ver Mensaje

Código PHP:
Ver original
  1. $consulta="UPDATE usuarios SET online='conectado.png' WHERE online='$online' id_usuario'='$id_usuario''";
  2. ?>
En serio: Por favor, lee un tutorial básico como ya te han aconsejado.
En cualquiera de ellos podrás encontrar que un WHERE que tiene más de una condición debe relacionar las condiciones por medio de las cláusulas AND u OR, dependiendo de la obligatoriedad de las condiciones que se ponen.

Código SQL:
Ver original
  1. UPDATE usuarios SET online='conectado.png'
  2. WHERE online='$online' AND id_usuario'='$id_usuario'

Además, y MUY importante: debes SIEMPRE hacer que los errores se muestren de alguna forma, o de lo contrario nunca sabrás lo que está pasando.
Tu query tenía un error sintáctico, el que yate dije, pero hubiese sido muy simple para ti saber que tenías que verificar la sintaxis, si al menos hubieras considerado una salida por error:
Código PHP:
Ver original
  1. $fil = mysqli_query($conexion, $consulta) or die("Error al ejecutar la sentencia: ".mysqli_error($conexion));
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 28/04/2016 a las 11:09
  #13 (permalink)  
Antiguo 28/04/2016, 11:10
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

La idea es que comprendas el por qué de cada cosa una vez que lo entiendas veras las cosas claras.

Hazte las siguientes preguntas.

¿ Que tabla quiero actualizar ?
La tabla usuarios ( UPDATE usuarios )

¿ Que campo o campos quiero actualizar y con que dato ?
El campo online con el dato online.png ( SET online='online.png' )

¿ Cuándo quiero que se actualice el campo o bajo que criterios ?
Cuando el id_usuario coincida con $id_usuario ( WHERE id_usuario=$id_usuario )

Sí lo unimos todo.
Código SQL:
Ver original
  1. UPDATE usuarios SET online='online.png'  WHERE id_usuario=$id_usuario
__________________
Unset($vida['malRollo']);
  #14 (permalink)  
Antiguo 29/04/2016, 04:48
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Entiendo lo que dices se el esfuerzo y las buenas intenciones que ponéis a la hora de subir aportes a la red con intención de informar y facilitar las cosas a los que intentan aprender este tema. Sin embargo también creo que se usan lenguajes demasiado técnicos y que se da por sentado que los novatos que apenas saben, entienden esos términos; No siempre lo que escribo, como yo sé de lo que hablo, los que me leen también lo saben, porque puede darse el caso que este tan metido en una cosa, que no me percate que las palabras técnicas las he aprendido yo pero el novato aún no.
Por ejemplo a ‘Xerifandtomas’ le agradezco sus explicaciones, porque le he visto en el mensaje #13 la estructura del UPDATE paso a paso.
Sin embargo en el #9 se explica muy bien y lo entiendo, pero cuando me pone este ejemplo:
UPDATE nombre_mi_tabla SET columna='valor_a_asignar' WHERE columna_1='coincidencia_en_columna_1';
Lo reviso y aquí me pierdo: WHERE columna_1='coincidencia_en_columna_1';
Él sabe cuál es la columna 1 y cuál es su coincidencia, pero yo no lo sé.
En mi caso creo que es el id_ usuario, pero el ¿a qué se refiere exactamente? Eso no lo sé.
Lo que me vengo a referir es que, si hablas a alguien que está a cero también lo entiende el que está en un nivel medio; creo que los aportes deberían enfocarse un poco más en ese aspecto.
Muchas gracias a todo el que sabe, por compartir vuestro saber, aunque yo ahora solo busco ayuda no aprender: eso lo dejo para mi hijo que aunque solo tiene 16 años, se le ha metido en la cabeza de ser programador.
  #15 (permalink)  
Antiguo 29/04/2016, 04:55
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Ahora a lo que estamos que es a lo que vengo.

Este forma me parece muy atractiva, pero la he probado y no me funciona, aunque como el UPDATE sigue sin subir el texto a la db, no puedo saberlo con certeza, y esta parte: '$estado' es lo que no tengo claro.

Cita:
Iniciado por xfxstudios Ver Mensaje
no entiendo porque tanto rollo, esta bien que no sepas algo, pero a esta altura y con tanto aporte que te han dado, pues ya deberias de haberlo aclarado, por otro lado, porque no simplemente ingresas por ejemplo Inline u Offline en el campo, y en tu documento validas el campo:

Código PHP:
Ver original
  1. $consulta="UPDATE usuarios SET online = '$estado' WHERE  id_usuario = '$id_usuario' ";
  2.  
  3.  
  4. if($row['campo'] == "Inline"){
  5. $img = "loquesea.png";
  6. }else{
  7. $img = "loquenosea.png";
  8. }
Código HTML:
Ver original
  1. <img src="directorio/<?php echo $img; ?>">
????
digo sin tanto rollo amigo, hay miles de maneras de hacer lo que buscas, pero si indicas esto:



luego de tanto aporte, pues imagina...
¿Tengo que hacer alguna modificación en la db o me sirve con el campo 'online'?
  #16 (permalink)  
Antiguo 29/04/2016, 05:06
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Esto es lo que tengo puesto ahora, pero no sube nada a la db.

<?php
$conexion = mysqli_connect(', '', '', '');

$online = $_POST['online'];
$id_usuario' = $_POST['id_usuario'];

$consulta="UPDATE usuarios SET online='conectado.png' WHERE id_usuario='$id_usuario'";

$fil = mysqli_query($conexion, $consulta) or die("Error al ejecutar la sentencia: ".mysqli_error($conexion));
header('Location: index.php');
?>

¿Sobra algo?
¿Falta algo?

Última edición por jearj; 29/04/2016 a las 05:11
  #17 (permalink)  
Antiguo 29/04/2016, 06:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Cita:
Iniciado por jearj Ver Mensaje
Esto es lo que tengo puesto ahora, pero no sube nada a la db.

<?php
$conexion = mysqli_connect(', '', '', '');

$online = $_POST['online'];
$id_usuario' = $_POST['id_usuario'];

$consulta="UPDATE usuarios SET online='conectado.png' WHERE id_usuario='$id_usuario'";

$fil = mysqli_query($conexion, $consulta) or die("Error al ejecutar la sentencia: ".mysqli_error($conexion));
header('Location: index.php');
?>

¿Sobra algo?
¿Falta algo?
¿Lo probaste? ¿TE volvió algún error de ejecución o sintaxis?

Necesitamos algo de feedback.

Cita:
Lo que me vengo a referir es que, si hablas a alguien que está a cero también lo entiende el que está en un nivel medio; creo que los aportes deberían enfocarse un poco más en ese aspecto.
Cuando estás "a cero", como dices, lo que debes hacer es NO intentar programar algo que necesites desarrollar, sino PROBAR cómo funcionan las cosas paso a pas, para entenderlas ANTES de usarlas.

Tu te estás queriendo meter a programar sin saber hacerlo, y realizar consultas sin probar manualmente como funcionan y cómo se escriben.
Es lo mismo que intentar manejar un camión con acoplado luego de que te enseñen a usar una motocicleta, sólo porque sabes las reglas de tránsito. Es imposible. Si no practicas en una playa de maniobras hasta dominar su manejo, no podrás.

Aquí pasa exactamente lo mismo...

Para probar el SQL y ver como se deben escribir las consultas, simplemente debes usar phpMyadmin, o bien el MySQL Workbench (que puedes descargar de la web oficial), y probar cada cosa, con un manual básico a mano.
Hacer consultas sin saberlas escribir sin errores de sintaxis es un despropósito. Nunca te funcionará porque no le funcionó a NADIE.

Para probar, luego, cómo funciona sólo el PHP, sin la base, puedes usar sencillamente algún sandbox disponible en la web (p.e.: http://sandbox.onlinephpfunctions.com/). Alli puedes testear el PHP puro.

Luego, para probar ambas cosas al mismo tiempo, necesitarás trabajar en tu propia PC.

Recién cuando hayas hecho mínimamente algunas pruebas y experiencias desastrosas y las hayas corregido, estarás en condiciones de hacer tu proyecto.
Mientras tanto, estarás tropezando constantemente con cosas elementales, y nosotros intentando enseñarte lo más básico.... que en definitiva no es el sentido real del sitio. FDW es un lugar para ayudar a resolver problemas puntuales, errores de desarrollo, inconvenientes técnicos, no para dar cursos basicos de programación. Sin ofender.

Respecto al lenguaje técnico, lamento decirte que este rubro ES TECNICO, y es NECESARIO que lo sea, porque es la lingua franca que nos permite comunicarnos con seguridad y precisión. Tienes que aprender a pensar técnicamente, porque en todos los foros de programación se expresan de esta forma.
Bien podríamos,luego, intentar hacerlo en un lenguaje humano, no implica que se pueda lograr. Describir ciertas cosas sin palabras técnicas requiere postear media docena de paginas de explicaciones para asegurarnos que se entiende.
Y encima no hay subrubro de desarrollo más técnico que BBDD...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 29/04/2016 a las 06:40
  #18 (permalink)  
Antiguo 29/04/2016, 07:40
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Si ya me gustaría hacer todo eso que dices amigo gnzsoloyo, pero para mi ya se paso el momento, y para colmo terminaría mi web dentro de un par de años.

Desgraciadamente no me queda tiempo para aprender a programar ahora tengo tres niños que mantener y tengo una discapacidad de un 65% en las piernas, de modo que los trabajos no me llueven, así que solo hay tiempo para trabajar. esto de crear webs lo vengo haciendo mas de 15 años pero solo para mi uso personar, para mi es una herramienta para expresar mis ideas y nada mas.

Siempre lo he hecho en html con css y demás, el php, javasgript y sql solo lo introduzco para ampliar las funciones de la web, solo se me ocurre algo para ponerlo busco códigos y los adapto a mis necesidades.

Gracias por tus consejos gnzsoloyo
  #19 (permalink)  
Antiguo 29/04/2016, 07:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Vovlamos a lo dicho respecto al código, que no me has respondido:
Cita:
¿Lo probaste? ¿TE volvió algún error de ejecución o sintaxis?
Posdata: Mientras el cerebro funcione, no hay limitaciones. Yo ya tengo 53, dos hijos menores, y mi única diversión fuera de los hijos incluye trabajar todo el día en esto.
Cuando sólo te queda la opción de aprender a hacer, es lo que tienes que aprovechar. El aprendizaje termina cuando te guardan en el cajón. Entretanto sigues aprendiendo. Mi padrastro seguía estudiando y experimentando a los 92.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #20 (permalink)  
Antiguo 29/04/2016, 07:51
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

no, no me da error, simplemente no sube la url.

inicia sesión correctamente y nada mas


Yo tengo 52 pero mi vida no ha sido nada fácil
  #21 (permalink)  
Antiguo 29/04/2016, 11:49
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 11 meses
Puntos: 39
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysqli_connect(', '', '', '');
  3.  
  4. $online = $_POST['online'];
  5. $id_usuario' = $_POST['id_usuario'];
  6.  
  7. $consulta="UPDATE usuarios SET online='conectado.png' WHERE id_usuario='$id_usuario'";
  8.  
  9. $fil = mysqli_query($conexion, $consulta) or die("Error al ejecutar la sentencia: ".mysqli_error($conexion));
  10. ?>

Si hay algun error, te lo debe de mostrar sí o sí, prueba así, lo unico que le quité es el header de hasta el final, para que puedas ver qué error te muestra y nos comentes.
  #22 (permalink)  
Antiguo 29/04/2016, 12:15
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Hola chicos.

Un pequeño aporte tambien podra ser comentar las lineas de los codigos para que sepa mas o menos su funcion si dice que esta en ceros en programacion es un buen consejo. No es por ofender pero perro viejo SI aprende nuevos trucos.
  #23 (permalink)  
Antiguo 29/04/2016, 12:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Seré curioso pero... ¿Y ese apostrofo (') que está juto detras de la variable y antes del "=", ¿qué hace alli?

Código PHP:
$id_usuario' = $_POST['id_usuario]; 
debería ser:
Código PHP:
$id_usuario $_POST['id_usuario']; 
Y también habría que asegurarse de como queda todo:

Código PHP:
<?php
$conexion 
mysqli_connect('''''''');
 
$online $_POST['online'];
$id_usuario $_POST['id_usuario'];
 
$consulta="UPDATE usuarios SET online='$online' WHERE id_usuario='$id_usuario'";

 
// Visualizar la query completa:
echo $consulta;

$fil mysqli_query($conexion$consulta) or die("Error al ejecutar la sentencia: ".mysqli_error($conexion));
?>
Hay que tener mucho cuidado con el cerrado correcto de los apostrofes y las comillas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #24 (permalink)  
Antiguo 29/04/2016, 14:48
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

He probado lo que me has dicho, sin el header y sigue igual, no da error pero tampoco sube la url a la db

aquí pongo el código completo como esta ahora y el form que utilizo para iniciar sesión:

comprobar.php
<?php
session_start();
include('Conexion_db.php');
if(isset($_POST['enviar'])) {
if(empty($_POST['usuario'])) {
header('Location: index.php?error1=acceso');
$errores[]=true;
return $errores;
}
if(empty($_POST['clave'])) {
header('Location: index.php?error2=acceso');
$errores[]=true;
return $errores;

}else {
$usuario = mysql_real_escape_string($_POST['usuario']);
$clave = mysql_real_escape_string($_POST['clave']);

$sql = mysql_query("SELECT id_usuario, usuario, clave FROM usuarios WHERE usuario='".$usuario."' AND clave='".$clave."'");
if($row = mysql_fetch_array($sql)) {
$_SESSION['id_usuario'] = $row['id_usuario'];
$_SESSION['usuario'] = $row["usuario"];
$_SESSION['nivel'] = $row["nivel"];
header("Location: index.php");
}else {
?>

<?php
include('acceso_db.php');
$online = $_POST['online'];
$id_usuario = $_POST['id_usuario'];

$consulta="UPDATE usuarios SET online='conectado.png' WHERE id_usuario='$id_usuario'";

// Visualizar la query completa:
echo $consulta;

$fil = mysqli_query($conexion, $consulta) or die("Error al ejecutar la sentencia: ".mysqli_error($conexion));
?>


<?php
header('Location: index.php?error3=acceso');
$errores[]=true;
return $errores;
?>
<?php
}
}
}else {
header("Location: index.php");
}
?>
<?php
$archivo_origen = $_FILES['archivo_usuario']['tmp_name'];
$archivo_final = "avatares/avatar<?=$id_usuario?>";


if(move_uploaded_file($archivo_origen, $archivo_final)){
print "El archivo fue subido con éxito.";
}else{
print "Error al intentar subir el archivo.";
}
?>


form:
<form action="comprobar.php" method="post">
<?php
if($_GET['error1']=='acceso'){
echo '<font color="#000000" size="5">Error: </font><font color="#FF0000" size="4">No has puesto el Usuario.<br /></font>';
}
?>
<?php
if($_GET['error2']=='acceso'){


echo '<font color="#000000" size="5">Error: </font><font color="#FF0000" size="4">No has puesto la contraseña.<br /></font>';
}
?>
<?php
if($_GET['error3']=='acceso'){
echo '<font color="#000000" size="5">Error: </font><font color="#FF0000" size="4">El Usuario o la contraseña no son correctos.<br>Vuelve a intentarlo.<br /></font>';
}
?>
<div align='center'>
<label>Usuario:</label></div>
<div align='center'>
<input id='inputEntrar' type="text" name="usuario" placeholder="Aqui tu Nombre" /></div>
<div align='center'>
<label>Contrase&ntilde;a:</label></div>
<div align='center'>
<input id='inputEntrar' type="password" name="clave" placeholder="Aqui tu clave" /></div>
<div align='center'>
<input id="Boton" type="submit" name="enviar" value="Confirmar" />
</div>
</form>
  #25 (permalink)  
Antiguo 29/04/2016, 15:08
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Acabo de descubrir un error.
Cuando en el form pones mal la contraseña o el nombre de usuario, no sale el error3 (El Usuario o la contraseña no son correctos. Vuelve a intentarlo) que es lo que debería salir.

Sale esto:
UPDATE usuarios SET online='conectado.png' WHERE id_usuario=''Error al ejecutar la sentencia:

no entiendo porque no sale el error normal de php, con el nº de línea de donde esta el error.

Última edición por jearj; 29/04/2016 a las 15:35
  #26 (permalink)  
Antiguo 29/04/2016, 18:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

mysql_real_escape_string requiere de la variable de conexion para funcionar o te deja en blanco las variables, o al menos eso he comprobado, prueba asi:

Código PHP:
Ver original
  1. $usuario = $conexion->mysqli_real_escape_string($_POST['usuario']);
  2. $clave = $conexion->mysqli_real_escape_string($_POST['clave']);
donde la variable $conexion es tu variable de conexion a la BD, por cierto, utiliza mysqli en todo y no mescles mysql con mysqli, porque la primera esta descontinuada, por eso te las modifique alli, pero tendrias que modificar tu consulta completa

vieja: http://php.net/manual/es/function.my...ape-string.php

Nueva: http://php.net/manual/es/mysqli.real-escape-string.php
__________________
[email protected]
HITCEL
  #27 (permalink)  
Antiguo 30/04/2016, 06:07
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Nada de nada

Me da error en la misma línea:
$usuario = $conexion->mysqli_real_escape_string($_POST['usuario']);

creo que es porque el arcuivo de conexio a db tiene parámetros que utiliza mysql, los he cambiado por este mysqli y me da error en el conexio a db

Por otro lado, creo que esa parte es para limpiar los campos del formulario de posibles códigos maliciosos y no es lo que estoy haciendo, sin embargo he para que no este mezclado los he cambiado todos a mysq

Lo que me trae de cabeza es el UPDATE
  #28 (permalink)  
Antiguo 30/04/2016, 11:04
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 3 meses
Puntos: 13
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Hola, yo uso mysqli y esta linea:
Código PHP:
$usuario $conexion->mysqli_real_escape_string($_POST['usuario']); 
La he probado en mi código y no me anda, colocare como me anda a mi y como la leí en el manual y me funciono, a ver si te funciona.
Código PHP:
$usuario =mysqli_real_escape_string$conexion,$_POST['usuario']); 
Especificada para procedimientos, como lo dice en el manual.

Te recomiendo el uso de mysqli, por cierto.

Noto tambien en el codigo que posteaste que tiene dos archivos PHP que estas incluyendo como acceso a la base de datos:

Código PHP:
include('Conexion_db.php'); 
y
Código PHP:
include('acceso_db.php'); 
Nos comentas porque ese uso de ambas y no de una sola?

Saludos
  #29 (permalink)  
Antiguo 30/04/2016, 12:34
Avatar de jearj  
Fecha de Ingreso: julio-2008
Mensajes: 72
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Perdona, pero eso de los dos include, uno esta funcionando.
Resulta que utilizo dos tablas diferentes que cuando te registras el registro pasa a ambas.
Estuve u tiempo intentando iniciar sesión e las dos tablas a la ves pero no lo conseguí y se quedo el include ahí, pensé que me haría falta en posibles intentos mas adelante, no creí que pasara nada porque estuviera ahí, de echo los sistemas funcionan perfectamente.

Por otro lado, esto del $usuario =mysqli_real_escape_string( $conexion,$_POST['usuario']); ¿puede afectar al funcionamiento del UPDATE que es el problema que tengo?

Esto: mysqli no me la acepta, tiene que ser este: mysql para que no me de error.
  #30 (permalink)  
Antiguo 30/04/2016, 12:51
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 3 meses
Puntos: 13
Respuesta: insertar url en campo de db al iniciar sesion los usuarios

Quizas no te acepta mysqli porque estas usando solo en esa linea mysqli y en las demas inluyendo talvez la configuracion del acceso a la base no la usas, mysql se la considera obsoleta, es preferible usar mysqli, solo debes modificar las lineas de codigo a mysqli y claro leer algo el manual de cada funcion mysqli que vayas a reemplazar, por ejemplo:

Este seria un ejemplo sencillo de mysql:

Código PHP:
<?php
// Conexión
$enlace mysql_connect('anfitrión_mysql''usuario_mysql''contraseña_mysql')
    OR die(
mysql_error());

// Consulta
$consulta sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            
mysql_real_escape_string($usuario),
            
mysql_real_escape_string($contraseña));
?>
Este es un uso comun de mysqli:

Código PHP:
<?php
$enlace 
mysqli_connect("localhost""mi_usuario""mi_contraseña""world");

/* verificar la conexión */
if (mysqli_connect_errno()) {
    
printf("Falló la conexión: %s\n"mysqli_connect_error());
    exit();
}

mysqli_query($enlace"CREATE TEMPORARY TABLE miCiudad LIKE City");

$ciudad "'s Hertogenbosch";

/* esta consulta fallará debido a que no escapa $ciudad */
if (!mysqli_query($enlace"INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("Error: %s\n"mysqli_sqlstate($enlace));
}

$ciudad mysqli_real_escape_string($enlace$ciudad);

/* esta consulta con $ciudad escapada funcionará */
if (mysqli_query($enlace"INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("%d fila insertada.\n"mysqli_affected_rows($enlace));
}

mysqli_close($enlace);
?>
Aclaro, solo son ejemplos que encontre en la web, en el manual de referencia especificamente, puedes fijarte en las funciones mysqli y reemplazarlas en tu codigo, tratando de llevar la sintaxis correcta al ejemplo.

Con respecto si afecta o no aquella linea que te postee, pues si afecta porque esos son los datos que usa el usuario para inicar sesion o no? es decir, los que envia el form para buscar en la base, y tienes razon tambien es para poder filtrar cualquier caracter que pueda afectar al comportamiento de tu base de datos, especificamente:

Cita:
Lo conocido como inyección de código o inyección SQL no es otra cosa que una técnica mediante la cual un intruso utiliza las vulnerabilidades de las sentencias MySQL para propósitos distintos a los previstos en la aplicación.

Para evitar la posibilidad de ese efecto indeseado (inyección de código) PHP dispone de la función:

mysql_real_escape_string(cadena)
que hace una llamada a la librería MySQL del mismo nombre y para que «escape» los caracteres especiales contenidos en la cadena de forma que sea mucho más seguro su uso a través de mysql_query(). Los caracteres que son «escapados» son los siguientes: \x00, \n, \r, \, ', " y \x1a. Se convertirían en: \\x00, \\n, \\r, \\\, \', \" y \\x1a con lo cual la cadena ' or '34=34 se convertiría en \' or \'34=34 y la claúsula anteriormente comentada se convertiría en WHERE (Nombre='\' or \'34=34') con lo cual ya no se produciría el efecto indeseado y se evitaría el riesgo de uso inadecuado.
Si estas intentando crear un inicio de sesion, esa funcion es lo mas conveniente.

Puedes postear el codigo que tienes ya configurando a mysqli?

Espero aquello te haya despejado alguna duda. Luego de colocar la funcion me gustaria que nos digas exactamente cual es el comportamiento o el error que tienes al probar el inicio de sesion, puedes echarle un ojo a PHP ERROR LOG en el servidor local que estas utilizando.

Saludos.

Última edición por kip13; 30/04/2016 a las 13:08

Etiquetas: campo, mysql, select, sql, tabla, url, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.