Foros del Web » Programando para Internet » PHP »

$_GET['id'] no funciona

Estas en el tema de $_GET['id'] no funciona en el foro de PHP en Foros del Web. Hola, trataré de explicarme lo mejor posible. Encontre algunos códigos en un tutorial para crear un sistema de usuarios, uno de los códigos sirve para ...
  #1 (permalink)  
Antiguo 21/02/2013, 03:33
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 2 meses
Puntos: 1
$_GET['id'] no funciona

Hola, trataré de explicarme lo mejor posible. Encontre algunos códigos en un tutorial para crear un sistema de usuarios, uno de los códigos sirve para agarrrar y mostrar los datos de la sesión activa, se llama perfil.php. Hasta ayer me funcionaba perfecto, iniciaba sesión, y cuando entraba a perfil.php, mostraba los datos del usuario logeado.
Pero no se que pasó y ahora cuando entro a perfil.php, me muestra lo siguiente: "Notice: Undefined index: id in C:\xampp\htdocs\web\user - copia\perfil.php on line 4"

Si en la linea 4 pongo:
$perfil = mysql_query("SELECT * FROM user WHERE usuario_id='".$_GET['id']."'")
me salta el "notice"

Pero si pongo directamene el id, funciona correctamente y muestra los datos del usuario.
$perfil = mysql_query("SELECT * FROM user WHERE usuario_id='1'") or die(mysql_error());
O sea, el primer código no agarra el 'id', donde está el fallo?

Les dejo el código de perfil.php y algunos otros códigos:

--->Este archivo se llama perfil.php, y sirve para agarrar el id de la sesión activa y mostrar los datos del usuario.

<?php
session_start();
include('acceso_db.php');
$perfil = mysql_query("SELECT * FROM user WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
if(mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada
$row = mysql_fetch_array($perfil);
$id = $row["usuario_id"];
$nick = $row["usuario_nombre"];
$email = $row["usuario_email"];
$freg = $row["usuario_freg"];
?>
<strong>Nick:</strong> <?=$nick?><br />
<strong>Email:</strong> <?=$email?><br />
<strong>Registrado el:</strong> <?=$freg?><br />
<strong>URL del perfil:</strong> <a href="perfil.php?id=<?=$id?>">Click aquí</a>
<?php
}else {
?>
<p>El perfil seleccionado no existe o ha sido eliminado.</p>
<?php
}
?>




--->Este archivo se llama acceso.php, sirve para iniciar sesión
<?php
session_start();
include('acceso_db.php');
if(empty($_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías
?>
<form action="comprobar.php" method="post">
<label>Usuario:</label><br />
<input type="text" name="usuario_nombre" /><br />
<label>Contraseña:</label><br />
<input type="password" name="usuario_clave" /><br />
<input type="submit" name="enviar" value="Ingresar" />
</form>
<?php
}else {
?>
<p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="logout.php">Salir</a></p>
<?php
}
?>




--->Este archivo se llama comprobar.php, y comprueba los datos del formulario del login

<?php
session_start();
include('acceso_db.php');
if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario
// comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos
if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) {
echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
}else {
// "limpiamos" los campos del formulario de posibles códigos maliciosos
$usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
$usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
$usuario_clave = md5($usuario_clave);
// comprobamos que los datos ingresados en el formulario coincidan con los de la BD
$sql = mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM user WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'");
if($row = mysql_fetch_array($sql)) {
$_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id
$_SESSION['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre
header("Location: acceso.php");
}else {
?>
Error, <a href="acceso.php">Reintentar</a>
<?php
}
}
}else {
header("Location: acceso.php");
}
?>



Base de datos:
CREATE TABLE `usuarios` (
`usuario_id` int(4) NOT NULL AUTO_INCREMENT,
`usuario_nombre` varchar(15) NOT NULL DEFAULT '',
`usuario_clave` varchar(32) NOT NULL DEFAULT '',
`usuario_email` varchar(50) NOT NULL DEFAULT '',
`usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`usuario_id`)
)
  #2 (permalink)  
Antiguo 21/02/2013, 03:43
 
Fecha de Ingreso: octubre-2011
Mensajes: 113
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: $_GET['id'] no funciona

resumiéndote,,,,, asegúrate de que envías las variable id, por POST o por GET, en este caso por GET

comprueba si en vez de usuario_id= $_get['id] , tienes que usar usuario_id= $_session['id]
  #3 (permalink)  
Antiguo 21/02/2013, 03:52
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_GET['id'] no funciona

Es mas seguro y recomendable pasar los datos por session que por get ya que por get pueden ser alterados

usa $_SESSION['usuario_id']
Código PHP:
Ver original
  1. $perfil = mysql_query("SELECT * FROM user WHERE usuario_id='".$_SESSION['usuario_id']."'")

si fuera por get imaginate que lo modifico en la url y tu codigo me mostraria informacion de otra cuenta
  #4 (permalink)  
Antiguo 21/02/2013, 03:55
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: $_GET['id'] no funciona

mil gracias a los dos, ya tengo todo aclaro y ahora me funciona bien

Etiquetas: formulario, mysql, registro, select, sql, usuarios, variables
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 19:13.