Crear link con dato de un registro de una bd

Iniciado por Brian1511, 24 Julio 2013, 22:53 PM

0 Miembros y 2 Visitantes están viendo este tema.

Brian1511

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!



Creador de BrainMind

eferion

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, ... )

zikotik

#2
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 (php) [Seleccionar]
<?php
session_start
();
?>


<form method="post">
Leer dato nº
<input type="text" name="dato"><br>
<input type="submit" name="leer">
</form>

<?php
if(isset($_POST['leer'])){
$_SESSION['modo'] = 1;
$_SESSION['dato'] = $_POST['dato'];
header("Location: Leer.php");
}
?>



Leer.php
Código (php) [Seleccionar]
<?php
session_start
();
if(
$_SESSION['modo']!=1){
header("Location: Index.php");
} else {
 
echo 
'Dato n&#38;#186; '.$_SESSION['dato'];
 
session_destroy();
}
?>


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 (php) [Seleccionar]
<form method="get">
Leer dato nº
<input type="text" name="dato"><br>
<input type="submit" name="leer">
</form>

<?php
if(isset($_GET['leer'])){
$dato $_GET['dato'];
header("Location: Leer.php?dato=".$dato);
}
?>


Leer.php
Código (php) [Seleccionar]
<?php
echo 'Dato nº '.$_GET['dato'];
?>


Reitero, no recomiendo usar el GET.

eferion

Eso de vulnerable a inyecciones SQL será si no validas lo que recibes, no??

zikotik

Cita de: eferion en 25 Julio 2013, 13:24 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.

zikotik

#5
-

eferion

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.

Brian1511

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 (php) [Seleccionar]


<?php 
session_start
();
include(
'funciones.php');
require_once(
'funciones.php');
$id $_GET['user'];
$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.
$row mysql_fetch_array($sql); // seleccionamos la fila y le damos una variable
echo "Tus Puntos son :  ".$row['puntos'].""// mostramos el campo que deseamos de la fila, en este caso los puntos
?>


aqui cada uno tiene su explicacion! :D

y este es el link que me genera el www.paginaweb.com/info.php?id=***



Código (php) [Seleccionar]


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



pero no se porque estas 2 cosas ninguna funcionan :(



Creador de BrainMind

eferion

una de las dos te sobra.

Código (php) [Seleccionar]
include('funciones.php');
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.

zikotik

Cita de: 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

...

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 (php) [Seleccionar]

<?php
session_start
();
include(
'funciones.php');
$sql "SELECT * FROM puntos WHERE user='".$id."'");
$rs mysql_query($sql);
$row mysql_fetch_assoc($rs)
echo 
"Tus Puntos son: ".$row['puntos'];
?>



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