Pregunta:
Fecha: 24-06-2015 07:12:22
(En Español)
Tengo una duda principalmente en como pasar o como mostrar informacion ya almacenada en mi base de datos en la barra de direccion se que se usa el metodo $_GET mas sin embargo seria tras dar un submit a un boton, cierto? mas sin embargo tengo una pagina de login que primeramente uso el metodo POST y al hacer login todo bien, bueno a lo que voy lo que quiero ser es esto por ejemplo al hacer login o logearse como quieran llamarlo me lleva al index dandole el acceso al contenido mas sin embargo tengo otra pagina llamada perfil.php y quiero en la barra de direcciones se vea en nombre ejemplo del usuario en sesion y no tengo idea de como :/ podrian ayudarme por favor seria de gran ayuda para mi conocimiento n.n
Si necesitan el codigo que lo dudo diganlo n.n
Saludos. Votos: 1 - Respuestas: 11 - Vistas: 22 Compartir en: Google Facebook Twitter LinkedIn Link
¿Cómo pasar variables por URL?[Resuelta]
Ayudenme en esta duda que tengo en pasar variables:Tengo una duda principalmente en como pasar o como mostrar informacion ya almacenada en mi base de datos en la barra de direccion se que se usa el metodo $_GET mas sin embargo seria tras dar un submit a un boton, cierto? mas sin embargo tengo una pagina de login que primeramente uso el metodo POST y al hacer login todo bien, bueno a lo que voy lo que quiero ser es esto por ejemplo al hacer login o logearse como quieran llamarlo me lleva al index dandole el acceso al contenido mas sin embargo tengo otra pagina llamada perfil.php y quiero en la barra de direcciones se vea en nombre ejemplo del usuario en sesion y no tengo idea de como :/ podrian ayudarme por favor seria de gran ayuda para mi conocimiento n.n
Si necesitan el codigo que lo dudo diganlo n.n
Saludos. Votos: 1 - Respuestas: 11 - Vistas: 22 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 25-06-2015 17:13:47 Primero nada muchas gracias, Txema Arbulo, contestar siempre ayudando a la comunidad n.n
Ahora si a lo que vamos ya que nadien me respondia decidi pensar y pensar como lograr lo que queria para darme entender mejor yo queri algo como lo facebook que si ponias https://www.facebook.com/profile.php?id=28864648 y si existia un usuario asi se viera su perfil y lo logre, solo no pondre completo todo lo que yo hice yo pondre el codigo a ver que tal te parece:
<?php session_start(); require_once("conexion.php"); if(isset($_SESSION['user']) && $_SESSION['id'] == $_GET['id']) { $date_name = $_SESSION['user']; ?> <!DOCTYPE html> <html lang="es"> <head> <title><?php echo $date_name;?></title> </head> <body> //aqui todo lo que tenga que ver con el perfil yo en esta ocasion lo hice en html5 reponsive n.n <p>yo solo pondre esta etiqueta en este ejemplo :P y esto se mostrara si hay un usuario en sesion y si en la URL se puso https://elnombredetuweb.com/perfil?id=3657</p> /*si es que existe se mostrara su perfil LOL en caso contrario de que se puso http://elnombredetuweb.com/perfil.php se mostrara la pagina 404 o que no existe el usuario lo que ustedes ponder ejemplo:*/ </body> </html> <? } else if (isset($_SESSION['user']) && $_SESSION['id'] != $_GET['id']) { ?> <p>Esto se mostrara como puse arriba si solo puso http://elnombredetuweb.com/perfil.php</p> //no obstante algo importante a tomar en cuenta es que esto funciona mas sin embargo solo si hay sesion iniciada como hacerle para mostrar los datos si no estas logeados o conectados como quieran decirle, el cogigo no lo pondre mas sin embargo les dio la idea como deia mi compañero: Txema seria inseguro en caso de que queramos mostrar datos de tu base datos de una tabla a una persona que nunca haiga iniciado sesion entonces como le hacemos si queremos lo mismo que arriba solo antes de traerles datos de la base de datos hagamoslo desde un archivo .dat o .txt como gusten guardan solo y tan solo los datos id y nombre o lo que quieran que no sean importantes ahi en que momento al momento de registrarlos osea en su pagina de registro implementan que guarde tambien en ese documento el id y nombre en este caso n.n ahora como lo mostramos aqui la parte que me falta de codigo. yo no lo pondre pero saben que va antes de else n.n o no? xD <? } else { ?> <p>Esto se mostrara en la pagina en caso de que no haiga iniciado sesion</p> <? } ?>
asi lo que puse arriba ya lo implemente yo, que les parece? a mi me funciono aunque solo me queda una duda para serlo como le hace facebook conste esta es la forma pobre :/ y por que digo pobre por que en mi dominio no me dejan modificar el httacess u.u.
asi decia solo me falta saber como hacer lo mismo que facebook que cuando pones https://www.facebook.com/chrismart ejemplo aparezca el perfil no se como hacer o.o o no tengo idea tal vez le agraga el nombre de la sesion a la pagina de index y le quita ? o el php con httacces o como @.@ es posible cambiar el nombre de una pagina ejemplo http://elnombredetuweb.com/perfil.php por http://elnombredetuweb.com/chrismart como es posible eso? o.o alguien sabe o que me de una idea por favor.
Saludos.
Disculpa si tarde en contestar Txema. Votos: 1 - Link respuesta -
Fecha: 26-06-2015 00:07:00 Ok Ignora la primera respuesta que te di Txema, es que funciona pero no de la forma que queria y como que gratuitamenete mmm... que eso no hace facebook si es asi eso es lo quiero ^^
usando lo tuyo me sale un error pero me funciona la parte del else aqui te pongo el codigo:
<?php if (isset($_GET['id'])){ $resultado = consulta("SELECT id FROM usuarios WHERE id ='{$_GET['id']}'"); echo 'Hola '.$_GET['id']; /* Y sigo desarrollando código y página para ver los datos de Chismart, que es el valor de $_GET */; } else { echo 'No existe el usuario '.$_GET['id']; } ?>
pero cuando pongo en la barra de direcciones esto http://misitioweb.com/pruebas/profile.php?id=1
me sale este error:
Fatal error: Call to undefined function consulta() in /data/webs/sites/y/o/youanimeoficial/web/pruebas/profile.php on line 3
bueno yo le puse id en vez de * por que este llama a todo lo que hay en la tabla cuando yo no mas necesito la id n.n o me equivoco?
ahora vamos a los filtros los acabo de ver pero aun no les entiendo bien sera pooner esto FILTER_VALIDATE_IP para que sea mas seguro?
o aun no entiendo bien seguire viendo a ver si encuentro un lugar donde me expliquen se los filtros y tambien tego otra idea a ver que te parece vale.
La idea es que en la pagina de registro ademas de registrar los datos con POST en nuestra tabla de nuestra base de datos tambien podrias registrar los datos que no sean importantes tanto como el password o el correo o otra cosa con $da = fopen('datos.datos.dat', 'w'); y ya tu sabes que se gravan y en un documento simple ya sea en texto o dato ahi guardas la id y nombre ejemplo de los usuarios para utilizarlos en lo gustes y asi sin arriesgar la informacion de la base de datos creo.
esas son mis dudas ^^
saludos. Votos: 1 - Link respuesta -
Fecha: 26-06-2015 12:56:32 Para tener en mente:
De los llamados verbos en HTTP recuerda que cada uno tiene una función. GET se utiliza, como su nombre lo indica, para obtener información. Se menciona que cuando utilizas GET la llamada debe ser idempotente.
GET es el verbo más utilizado en HTTP, cada request a una página web es una petición GET.
Si los datos que vas a mostrar son datos sensibles entonces entra el tema de autenticación, canales seguros, etc.
La manera en que estás ejecutando tu query no es correcta porque es vulnerable. Recuerda la regla principal de seguridad:
Se debe desconfiar de TODA entrada de datos
Filtra y valida adecuadamente los datos.
Saludos y espero que te sirva un poco mi aporte. Votos: 1 - Link respuesta -
Fecha: 26-06-2015 13:50:18 Hola Ernesto gracias por dar tu punto de vista pero en primera cual entrada de datos o.o si piensas que yo lo llevo a la pagina despues de login estas equivocado nada que ver uso el metodo $_POST y ya con GET recupero la id y si Txema tienes razon no nos gustarian que nos modificaran la id del usuario ahora sigo insistiendo que usando un archivo dat o txt para guardar esos datos no tan importantes como el password o hotmail y luego consultarlos y traerlos no es mala opcion asi si los modifican puedes simplemente hacer un codigo php que los vuelva a modificar, y bueno salia error no por que no hubiera puesto el conexion si no por que tu pusistes Txema esto: $resultado = consulta("SELECT * FROM tabla_usuarios WHERE usuario ='{$_GET['usuario']}'"); cuando consulta nunca existe asi que lo cambie solo por mysql_query y funciono ahora yo cambie el codigo que puse al principio por que no hacia lo que queria aqui dejo el nuevo que si me funciono:
<?php require_once("conexion.php"); //obtenemos el perfil a mostrar , nos lo proporciona la url $numero_perfil = (int) $_GET['id']; //el (int) sirve para asegurarnos que la variable solo contenga numeros(asi evitamos hackeos). //peticion sql $obtener_perfil = mysql_query("SELECT id,nombre FROM usuarios WHERE id='".$numero_perfil."'"); //contamos cuantos resultados de perfil devuelve la peticion $numero_perfil = mysql_num_rows($obtener_perfil); //si devuelve 1 lo mostramos pero si devuelve 0 mandamos error //si no existe el perfil le mandamo error if($numero_perfil <= 0) { echo "nada"; ?> <p>Nada</p> <? } else if($profile = mysql_fetch_assoc($obtener_perfil)) { echo "Estas en el perfil de :".$profile['nombre']." y se registro el dia:".$profile['dia']; ?> <p>a</p> <? } ?>
aunque siento que esto si esta mal es vunerable o que piensan?
comenten sus repuesta n.n Votos: 1 - Link respuesta -
Fecha: 26-06-2015 14:20:04 Chrismart Anji, en tu ejemplo la variable $_GET['usuario'] es una entrada de datos. Tú se la estás pasando al script y trabajas con ella directamente. Eso hace vulnerable tu script y pones en riesgo tu integridad de datos.
[UPDATE] Ya leí ese último snippet. Lo que haces está correcto y proteges tu info. Como última sugerencia utiliza la extensión mysqli en vez de mysql pues esta última ya es obsoleta desde hace varios años. Votos: 1 - Link respuesta -
Fecha: 26-06-2015 14:27:29 Consejo de optimización:
Cambié unas líneas de lugar para optimizar el código y no desperdiciar recursos.
<?php require_once("conexion.php"); //obtenemos el perfil a mostrar , nos lo proporciona la url $numero_perfil = (int) $_GET['id']; //el (int) sirve para asegurarnos que la variable solo contenga numeros(asi evitamos hackeos). if($numero_perfil <= 0) { echo "nada"; ?> <p>Nada</p> <? } else { //peticion sql $obtener_perfil = mysql_query("SELECT id,nombre FROM usuarios WHERE id='".$numero_perfil."'"); //contamos cuantos resultados de perfil devuelve la peticion $numero_perfil = mysql_num_rows($obtener_perfil); //si devuelve 1 lo mostramos pero si devuelve 0 mandamos error //si no existe el perfil le mandamo error if($profile = mysql_fetch_assoc($obtener_perfil)) { echo "Estas en el perfil de :".$profile['nombre']." y se registro el dia:".$profile['dia']; ?> <p>a</p> <? } } ?>Votos: 2 - Link respuesta -
Fecha: 26-06-2015 17:08:17 Muy excelente codigo Ernesto me gusto, solo con lo de msqli me da un error :/ por eso no puse disculpa si soy tonto es que nunca lo usado yo pongo asi:
$obtener_perfil = mysqli_query("SELECT id,nombre FROM usuarios WHERE id='".$numero_perfil."'");
y me sale esto, en que me equivoco:
Warning: mysqli_query() expects at least 2 parameters, 1 given in /data/webs/sites/y/o/youanimeoficial/web/pruebas/profile.php on line 15
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /data/webs/sites/y/o/youanimeoficial/web/pruebas/profile.php on line 17
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in /data/webs/sites/y/o/youanimeoficial/web/pruebas/profile.php on line 20
y ya para mas seguridad le pongo filtros ô me equivoco?
gracias por ayuda Ernesto saludos. Votos: 1 - Link respuesta -
Fecha: 26-06-2015 18:16:10 Ok ya resolvi el problema mira ya me adapte a mysqli ^^ el problema era este por si alguna vez lo necesita alguien:
$obtener_perfil = mysqli_query("SELECT id,nombre FROM usuarios WHERE id='".$numero_perfil."'"); <- Error
esto:
$obtener_perfil = mysqli_query($conexi,"SELECT id,nombre FROM usuarios WHERE id='".$numero_perfil."'"); <- correcto
que bueno que soy rapido para aprender n.n Votos: 1 - Link respuesta -
Fecha: 27-06-2015 10:42:24 Sí, y se vería mejor aún así:
$obtener_perfil = mysqli_query($conexi,"SELECT id,nombre FROM usuarios WHERE id='{$numero_perfil}'");
Cuando utilices cadenas de caracteres entre dobles comillas (") tus variables PHP es mejor ponerlas dentro de llaves({,}). Esto indica a PHP que es una variable.
Esto ayuda a que tu código sea más legible Votos: 3 - Link respuesta -
Fecha: 27-06-2015 17:41:38 ^^ pues muchas gracias por tus consejos Ernesto esto me ayudo mucho.
Tomare tus consejos. Votos: 1 - Link respuesta -
Fecha: 01-07-2015 21:06:30 Este Txema no es que entre los paisanos nos entendamos mas xD es solo que el me dijo debes usar mas bien seria mejor si usas esto y aquello y pues asi me puse a investigar y luego modifique ^^ tu pusistes el ejemplo primero si, pero no es lo mismo a mira puse un codigo mejor que el tuyo usalo :/ a veces si funciona y otra veces no asi que hay que usar yo te recomiendo que uses esto y aquello aun asi agradezco tus respuestas tambien me ayudastes n.n
saludos n.n Votos: 1 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
