PHP - Obtener link y redireccionar a la pagina

 
Vista:
Imágen de perfil de Alex
Val: 105
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Alex (53 intervenciones) el 19/07/2019 05:00:33
Buenas noches, estoy desarrollando una pagina web en la que quiero configurar un sistema de usuarios con registro, inicio de sesión, etc.
Mi consulta es la siguiente:
¿Cómo puedo hacer para que, al solicitar que inicie sesión en una sección determinada, sea redirigido a esa misma sección al iniciarla?
Ya tengo todo lo de las cuentas e inicio hecho, solo que cuando se inicia sesión eres redirigido al index y necesito que solo me redirija ahí si es donde estaba.
Desde ya, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Mauro (1036 intervenciones) el 19/07/2019 15:11:48
Lo que puedes hacer es, al momento de mostrar el formulario de login, guardarte el referrer en la sesión y, ante un login exitoso, redireccionarlo hacia allí.

Usa la variable $_SERVER['HTTP_REFERER']
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alex
Val: 105
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Alex (53 intervenciones) el 20/07/2019 06:52:04
Buenas Mauro, lo intente pero al momento de redireccionar la pagina me la redirecciona a la misma direccion, es decir, siempre redirecciona al login.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Mauro (1036 intervenciones) el 20/07/2019 21:23:55
Perdona, creo que me confundí con la variable. La idea estaba bien en mi cabeza :).

Sería algo como:

index.php
1
2
<h1>Welcome to my site</h1>
<p>Click <a href="forbidden.php">here</a> to go to private site</p>

forbidden.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
session_start();
 
if ( !array_key_exists('uid', $_SESSION ) ) {
        $_SESSION['nextPage'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
 
        error_log("NextPage {$_SESSION['nextPage']}");
        header('Location: login.php');
        die;
}
?>
 
<h1>Wellcome to private part!</h1>

login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
session_start();
if ( array_key_exists('u', $_POST) && array_key_exists('p', $_POST ) ) {
        $_SESSION['uid'] = 1;
        if ( array_key_exists( 'nextPage', $_SESSION ) ) {
 
                header( 'Location: '.$_SESSION['nextPage'] );
                die;
        }
 
        header('Location: index.php');
        die;
}
?>
<form method="post">
        <input type="text" name="u"/>
        <input type="password" name="p"/>
        <input type="submit"/>
</form>

Pruébalo y me comentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de alex
Val: 105
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por alex (53 intervenciones) el 21/07/2019 22:38:01
Disculpe pero no he logrado comprenderlo y al intentar aplicarlo no logre que funcione. ¿Me lo podria volver a explicar? si no es mucha molestia.
Cabe destacar que el login funciona perfecto y lo unico que tendria que cambiar seria la redirrección.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php session_start();
 
$errores = '';
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $usuario = filter_var(strtolower($_POST['nombre']), FILTER_SANITIZE_STRING);
    $pass = $_POST['password'];
 
    $pass = hash('sha512', $pass);
    try{
        $conexion = new PDO('mysql:host=localhost;dbname=database', 'root','');
 
    }catch(PDOException $e){
        echo 'Error: ' . $e->getMessage();
    }
 
    $statement = $conexion->prepare('SELECT * FROM Usuarios WHERE nombre = :nombre
    AND  password = :pass');
 
    $statement->execute(array(
        ':nombre' => $usuario,
        ':pass'=>$pass
    ));
    $resultado = $statement->fetch();
    if($resultado != false){
        $_SESSION['nombre'] = $usuario;
        header('Location: index.php');
        //en el codigo de arriba ya intente reemplazarlo por el de usted pero no funciona.(enlazado con el forbidden).
    }else{
        $errores .= 'Usuario o contraseña incorrectos.';
    }
}
 
require 'views/iniciarsesion.view.php';
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Mauro (1036 intervenciones) el 22/07/2019 01:47:32
Cuando dices que no funciona... ¿qué es exactamente lo que sucede?

Intentaré explicarme un poco:

El archivo forbidden.php primero verifica si hay un usuario logeado y, en caso de no ser así redirecciona al formulario de login pero previamente almacena la URL actual (la ruta completa por la que el usuario ingreso a forbidden.php) en una variable de sesión.

Esa variable de sesión es la que se consulta al término de un login exitoso y, si está presente se la usa para definir al redirección, con lo cual, si un usuario desea acceder en forma directa a una sección privada primero deberá realizar un login válido y recién entonces el sistema lo habilitará.

Un comentario sobre tu código, te recomiendo no usar las funciones de hashing de passwords en forma directa si no usar los mecanismos propios de php. Consulta más información al respecto aquí.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alex
Val: 105
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Alex (53 intervenciones) el 23/07/2019 01:33:47
Mira, cuando digo que no funciona me redirecciona devuelta al login. Supongo que es que cuando inicias sesion, apretando el boton ese boton manda los datos al login y ahi como que se sobreescribe la variable.
Porque cuando pongo
1
echo $_SESSION['nextPage'];
primero me muestra la direccion de la cual proviene y luego cuando se envian los datos aparece login.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Obtener link y redireccionar a la pagina

Publicado por Mauro (1036 intervenciones) el 23/07/2019 14:27:42
Debes revisar que no estés sobre-escribiendo $_SESSION['nextPage'] en la página de login...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar