Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Brian1511 en 24 Julio 2013, 22:53 pm



Título: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 24 Julio 2013, 22:53 pm
Hola a todos bueno sere breve ya estoy desde un movil y pues cansa escribir, bien mi problem es que no se como hacer para que un codigo php me haga un link la cual me lleve a una pagina con el dato de un registro de una bd?

ejemplo:

Click para ver tus puntos

cuando clicke se haga un link ejemplo:

http://miweb.com/ver_mis_puntos?id=1

este seria un ejemplo basico de lo que quiero
al poner este link en el buscador al entrar me mande a una pag html con los puntos del Id 1..

espero que me puedan ayudar , gracias y un buen saludo!


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 11:08 am
El link en sí mismo no te va a mostrar nada. Un enlace no es más que una referencia que pones en una página web para que al activarlo puedas desplazarte a otra página web.

Tienes que hacer que la página ver_mis_puntos lea el parámetro id enviado por GET y se comunique de forma conveniente con la base de datos para recabar la información que necesitas. Después de eso la muestras por pantalla.

Si necesitas más información para lanzar la consulta a la base de datos tendrás que ver la forma de proporcionársela a la página ( más parámetros GET, por POST, variables de sesión, cookies, ... )


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 13:08 pm
Hola qué tal.
En primer lugar, no te conviene usar el GET porque tu página web sería vulnerable a las Inyecciones SQL, con lo cual te recomiendo usar "session_start()", "session_destroy()" y "$_SESSION".

Te dejo un ejemplo base para que puedas examinarlo bien y modificarlo a tu gusto.

Index.php
Código
  1. <?php
  2. ?>
  3.  
  4. <form method="post">
  5. Leer dato nº
  6. <input type="text" name="dato"><br>
  7. <input type="submit" name="leer">
  8. </form>
  9.  
  10. <?php
  11. if(isset($_POST['leer'])){
  12. $_SESSION['modo'] = 1;
  13. $_SESSION['dato'] = $_POST['dato'];
  14. header("Location: Leer.php");
  15. }
  16. ?>
  17.  

Leer.php
Código
  1. <?php
  2. if($_SESSION['modo']!=1){
  3. header("Location: Index.php");
  4. } else {
  5.  
  6. echo 'Dato n&#38;#186; '.$_SESSION['dato'];
  7.  
  8. }
  9. ?>

PD:

Si estás totalmente seguro en querer usar el GET, no hay problema.
Directamente cambiá el method POST del form por method GET.
Eliminá la verificación de $_SESSION['modo'] (salvo que quieras dejarle cierta seguridad). Y Cambia $_SESSION y $_POST por $_GET.

Te tendría que quedar algo así...

Index.php
Código
  1. <form method="get">
  2. Leer dato nº
  3. <input type="text" name="dato"><br>
  4. <input type="submit" name="leer">
  5. </form>
  6.  
  7. <?php
  8. if(isset($_GET['leer'])){
  9. $dato = $_GET['dato'];
  10. header("Location: Leer.php?dato=".$dato);
  11. }
  12. ?>

Leer.php
Código
  1. <?php
  2. echo 'Dato nº '.$_GET['dato'];
  3. ?>

Reitero, no recomiendo usar el GET.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 13:24 pm
Eso de vulnerable a inyecciones SQL será si no validas lo que recibes, no??


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 13:47 pm
Eso de vulnerable a inyecciones SQL será si no validas lo que recibes, no??

No, el hecho de validar algo, implica una búsqueda y una respuesta.
Justamente lo que hace la inyección SQL es buscar una respuesta alterna (en términos básicos).

Ahora... si usaras el session_start, la inyección SQL no funcionaría, ya que la variable $_SESSION, básicamente lee las variables globales internas, no externas.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 14:00 pm
-


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 14:35 pm
creo que no me he explicado.

si yo tengo, por ejemplo,

pagina.php?id=1

evitar inyección es tan simple como verificar que id es numérico y mostrar un error en caso contrario.

En el caso de strings puedes optar bien por buscar los caracteres peligrosos y si se encuentra alguno abortar la operación, bien por eliminar dichos caracteres, bien por usar funciones de decodificacion de urls seguras, que sustituyen estos caracteres por representaciones que no causan problemas.

Es una mala práctica de cualquier programador no validar todas y cada una de las entradas del usuario.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 14:47 pm
Bueno gracias a todos por contestar de verdad muchas gracias , ahora les voy a mostrar lo que tengo :

este codigo es el info.php :

Código
  1.  
  2.  
  3. <?php
  4. include('funciones.php');
  5. require_once('funciones.php');
  6. $id = $_GET['user'];
  7. $sql = mysql_query("SELECT * FROM puntos WHERE user='".$id."'"); //Seleccionamos la parte de la base de datos donde el usuario es el usuario agarrado en la url, re***** si es perfil.php?user=admin, se selecionara la parte donde en la fila el usuario es admin.
  8. $row = mysql_fetch_array($sql); // seleccionamos la fila y le damos una variable
  9. echo "Tus Puntos son :  ".$row['puntos'].""; // mostramos el campo que deseamos de la fila, en este caso los puntos
  10. ?>
  11.  
  12. aqui cada uno tiene su explicacion! :D
  13.  
  14. y este es el link que me genera el www.paginaweb.com/info.php?id=***
  15.  
  16.  

Código
  1.  
  2. echo'<a href="http://quelok.netne.net/info.php?id='.$_SESSION['user'].'">  Ver Puntos   </a>';
  3.  
  4.  

pero no se porque estas 2 cosas ninguna funcionan :(


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 14:55 pm
una de las dos te sobra.

Código
  1. include('funciones.php');
  2. require_once('funciones.php');

Y aparte de eso no veo nada raro.

Eso si, con que no te funcionan... qué es exactamente lo que no funciona ??

El enlace sale bien ?? si es así céntrate en info.php... si el enlace sale mal... ya sabes.

En el caso de que te falle info.php:

* Verifica que te estás conectando a la base de datos.
* Verifica la sql que sea la correcta.
* Verifica que funciones.php no tiene algún código que te pueda fastidiar.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 15:04 pm
Bueno gracias a todos por contestar de verdad muchas gracias , ahora les voy a mostrar lo que tengo :

este codigo es el info.php

...

Antes que nada, no te recomiendo nombrar a la tabla con el nombre de una de las columnas porque podrías generar errores. Y además estás repitiendo un include (aunque con distintas funciones).
Fijate si esto te funciona...

Código
  1. <?php
  2. include('funciones.php');
  3. $sql = "SELECT * FROM puntos WHERE user='".$id."'");
  4. $rs = mysql_query($sql);
  5. $row = mysql_fetch_assoc($rs)
  6. echo "Tus Puntos son: ".$row['puntos'];
  7. ?>
  8.  

Código
  1. echo'<a href="http://quelok.netne.net/info.php?id='.$_SESSION['user'].'">  Ver Puntos   </a>';


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 15:04 pm
Antes que nada, no te recomiendo nombrar a la tabla con el nombre de una de las columnas porque podrías generar errores. Y además estás repitiendo un include (aunque con distintas funciones).
Fijate si esto te funciona...

Código
  1. <?php
  2. include('funciones.php');
  3. $sql = "SELECT * FROM puntos WHERE user='".$id."'");
  4. $rs = mysql_query($sql);
  5. $row = mysql_fetch_assoc($rs)
  6. echo "Tus Puntos son: ".$row['puntos'];
  7. ?>
  8.  

Código
  1. echo '<a href="http://quelok.netne.net/info.php?id='.$_SESSION['user'].'">  Ver Puntos   </a>';


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 15:35 pm
hola zikotik lamentable mente este no me funciono , aunque le faltaban ; y tenia () de mas no me funciono! :(

si quieres entra a la pagina de prueba :

http://quelok.netne.net/

logueate como

Usuario : hola
Contraseña: hola


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 15:43 pm
mmm...
Tenés algo mal en funciones.php o en logueado.php
una de dos.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 15:48 pm
PD:

Tenés un error en login.php también, porque pude acceder a logeado.php sin introdocir usuario y contraseña.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 15:52 pm
PD:

Tenés un error en login.php también, porque pude acceder a logeado.php sin introdocir usuario y contraseña.

Sabes que puedes editar un mensaje que has escrito y así evitar postear mensajes de dos en dos??


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 15:59 pm
-


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 16:01 pm
Sí, pero soy un tanto chicato...
Y aveces no lo veo por éso.

(tengo 0.90 y 1.2 de aumento)


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 16:19 pm
ok entiendo , pero nadie sabe como hacer algo como esto porfa ayudenme!!


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 16:21 pm
Si te interesa, te puedo armar un sistema de logueo GET.
Simplemente me decís el nombre de la tabla, el nombre y tipo de cada columna.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 16:25 pm
ok entiendo , pero nadie sabe como hacer algo como esto porfa ayudenme!!

La gente sabe hacer cosas como esas... es algo elemental de una página web recoger información por get ( o post ) y operar contra una base de datos en base a esa información.

Lo que pasa es que tu sistema es único... tienes un archivo funciones.php que nadie conoce su contenido, luego tampoco pueden evaluar los posibles errores contenidos en dicho archivo.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 16:31 pm
La gente sabe hacer cosas como esas... es algo elemental de una página web recoger información por get ( o post ) y operar contra una base de datos en base a esa información.

Lo que pasa es que tu sistema es único... tienes un archivo funciones.php que nadie conoce su contenido, luego tampoco pueden evaluar los posibles errores contenidos en dicho archivo.

Es verdad. Si no especificas todos los archivos, nadie podría saber el error exacto.
Tenés que implementar sistemas más sencillos y menos sinuosos.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 16:46 pm
bueno la tabla se llama "puntos"

id_puntos
user
pass
puntos
mail

zikotik gracias!



Bueno tengo este otro que ise para ver si me funciona , este esta raro ya que no me tira ningun error simplemente se queda en blanco lo revise pero no le allo el problem! :huh:

Código
  1.  
  2. <?php
  3. $conn = mysql_connect('localhost', 'root', 'root') or die ("Error de conexion.");
  4.  
  5. mysql_select_db("nombre bd",$conn) or die ("Error de conexion.");
  6.  
  7. $ssql = "SELECT * FROM puntos WHERE id_puntos='".$_SESSION["id_puntos"]."'";
  8.  
  9. $rs = mysql_query($ssql,$conn);
  10.  
  11. while($row = mysql_fetch_array($rs)) {
  12.  
  13. echo "Informacion:";
  14.  
  15. echo "ID:"." ".$row["id_puntos"]."<br>";
  16.  
  17. echo "Usuario:"." ".$row["user"]."<br>";
  18.  
  19. echo "Puntos:"." ".$row["puntos"]."<br>";
  20.  
  21. echo "Email:"." ".$row["mail"]."<br>";
  22.  
  23.  
  24. }
  25. ?>
  26.  
  27.  



Título: Re: Crear link con dato de un registro de una bd
Publicado por: 1mpuls0 en 25 Julio 2013, 16:48 pm
No estoy seguro, pero creo que Brian se bajó el código y no tiene ni idea de como funciona php y sql.
Así que será mejor que coloque el código para no estar adivinando el problema y hacer el post mas largo.

Edito:
En tu código donde inicias la sesión de variables?

Saludos.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 17:07 pm
Darhius bueno obiamente se nota que si soy nuevo en esto , amigo !

y pues solo publico por ayuda no estoy interesado en hacer largo nada y no te vallas a ofender ni nada por que solo quiero que me ayuden no que me acusen!
quiero que si vas a responder lo agas con algo que me ayude y este codigo me lo iso mi primo hace 2 dias y lo tenia de referencia ,pero el no esta en en este pais!

Saludos y perdon por mis expresiones no es mi intencion ofender a nadie! :D


Título: Re: Crear link con dato de un registro de una bd
Publicado por: eferion en 25 Julio 2013, 17:09 pm
Y no te has planteado entonces dejar de lado un código que no entiendes y empezar con un tutorial con el que puedas aprender de forma efectiva??

No por tirar código aprende uno a programar, ya te lo digo.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: 1mpuls0 en 25 Julio 2013, 17:18 pm
@Brian no me ofendo, a veces entiendo que las personas solo piden ayuda para algo en concreto, pero tambien debes de entender que aquí no se tiene una asistencia personalizada, se resuelven problemas en concreto.

@eferion Ya se lo he tratado de decir en sus otros post

Haz mirado la cantidad de post que haz creado en menos de una semana?, si tuvieras un poco de conocimiento en php y sql no pasaría.

y pues solo publico por ayuda no estoy interesado en hacer largo nada

Uno nunca sabe  ::)

Hasta pronto!


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 18:07 pm
Bueno tienen razon , pero si estoy tomando un par de manuales y algunas de las cosas del codigo las ise yo algunas las investigue por internet , pero gracias de todas formas y una ves mas tienen mucha razon.

Darhius espero que no dea un mal entendido :)

Saludos!


Título: Re: Crear link con dato de un registro de una bd
Publicado por: 1mpuls0 en 25 Julio 2013, 18:09 pm
No.

Pero de hecho estoy esperando a que coloques el código  :xD para ver que se puede hacer.

Saludos.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: zikotik en 25 Julio 2013, 18:43 pm
termino con unas transcripciones y comienzo con tu db.


Título: Re: Crear link con dato de un registro de una bd
Publicado por: Brian1511 en 25 Julio 2013, 19:18 pm
zikotik  bien amigo muchas gracias! :D

y pues Darhius no se que cod quieres que ponga porfavor dime cual quieres haci lo pongo ya que el codigo ya lo he puesto y son estos:

Esto es para el info.php:

Código
  1.  
  2. <?php
  3. include('conect.php');
  4. require_once('funciones.php');
  5. $id = $_GET['id_puntos'];
  6. $sql = mysql_query("SELECT * FROM puntos WHERE id_puntos='".$id."'");
  7. $row = mysql_fetch_array($sql);
  8. echo "Tus Puntos son :  ".$row['puntos']."";
  9. ?>
  10.  
  11.  


Este es el link que hace que valla a info.php con la id del usuario:

Código
  1.  
  2. echo'<a href="http://quelok.netne.net/info.php?id='.$_SESSION['id_puntos'].'">  Ver Puntos   </a>';
  3.  
  4.  

y pues revise todo las tablas, y eso pero realmente no me tira error , simplemente sale :

Tus Puntos son : ""?""

donde dice ""?"" es vacio!


Título: Re: Crear link con dato de un registro de una bd
Publicado por: EFEX en 25 Julio 2013, 19:29 pm
Código
  1. echo'<a href="http://quelok.netne.net/info.php?id_puntos='.$_SESSION['id_puntos'].'">  Ver Puntos   </a>';