Intentando redirigir al usuario a un enlace después de iniciar sesión

Todo lo que quiero hacer es redirigir a un usuario a mi página de inicio un par de segundos después de que inicie sesión. Aquí está mi código

<?php 
    include_once("config.php");
?>

<?php if( !(isset( $_POST['login'] ) ) ) { ?>



<!DOCTYPE html>
<html>
    <head>
        <title>Codecall Tutorials - Secured Login with php5</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>

    <body>

        <header id="head" >
                <p>Codecall tutorials User Login</p>
            <p><a href="register.php"><span id="register">Register</span></a></p>
        </header>

        <div id="main-wrapper">
            <div id="login-wrapper">
                <form method="post" action="">
                    <ul>
                        <li>
                            <label for="usn">Username : </label>
                            <input type="text" maxlength="30" required autofocus name="username" />
                        </li>

                        <li>
                            <label for="passwd">Password : </label>
                            <input type="password" maxlength="30" required name="password" />
                        </li>
                        <li class="buttons">
                            <input type="submit" name="login" value="Log me in" />
                            <input type="button" name="register" value="Register" onclick="location.href='register.php'" />
                        </li>

                    </ul>
                </form>

            </div>
        </div>

    </body>
</html>

<?php 
} else {
    $usr = new Users;
    $usr->storeFormValues( $_POST );

    if( $usr->userLogin() ) {

        echo "Welcome"; 


    } else {
        echo "Incorrect Username/Password"; 

    }
}
?>

Además, sería muy bueno tener una página de usuario creada después de que un usuario se registre. Tengo el código de registro configurado, pero esto es algo que me gustaría implementar. ¿Algunas ideas?

preguntado el 11 de abril de 13 a las 04:04

5 Respuestas

Este fragmento de código:

header( 'Location: http://www.yoursite.com/new_page.html' );

Aquí hay un enlace de referencia si lo necesita: http://php.net/manual/en/function.header.php

Respondido 11 Abr '13, 04:04

Intenta agregar

header(); php para redirigir su página a la ubicación que desee.

if( $usr->userLogin() ) {
        ob_start(); // use output buffering to avoid "header already sent error"
        echo "Welcome"; //should try to remove this if you want because its unecessary now since your redirecting your page
        header('Location: pagetoredirect');
        ob_end_flush(); //now the headers are sent

    } else {
        echo "Incorrect Username/Password"; 

    }

Fuente(PHP.NET)

Respondido 11 Abr '13, 04:04

esto fallará. no puedes configurar header después de cualquier salida (incluyendo echo) - Ariefbayu

Probé el enfoque del encabezado, y tendría sentido ponerlo en la declaración if, pero esto todavía no hace nada: Bancos de arcilla

@ariefbayu parece funcionar bien, incluso hay una declaración de eco y también en php.net hay muchas muestras que tienen una declaración de eco antes de usar el encabezado para redirigir ... - Jhonathan H.

@ClayBanks, creo que tiene problemas para pasar los valores de su publicación. - Jhonathan H.

@Kaii: si recordé correctamente, funcionará si usa el almacenamiento en búfer de salida. - Ariefbayu

Así es como se hacen las redirecciones de PHP:

 header('location:index.php');

Respondido 11 Abr '13, 05:04

Primero deberá borrar su html:

  1. Convierta sus códigos de parte superior en:

    <?php 
        include_once("config.php");
    
        if( !(isset( $_POST['login'] ) ) ) { ?>
    
  2. Añada header a donde quieres redirigir:

        if( $usr->userLogin() ) {
            header('Location: /path/to/new/page.php');
        } else {
            echo "Incorrect Username/Password"; 
        }
    
  3. Otra forma es usar javascript:

        if( $usr->userLogin() ) { ?>
    
            <div class="message">
                Thank you for logging in. You will be redirected in few seconds.
                Click <a href="/es/path/to/new/page.php">here</a> if not redirected.
            </div>
            <script type="text/javascript">
                window.location = "/path/to/new/page.php";
            </script>
        <?php
        } else {
            echo "Incorrect Username/Password"; 
        }
    

Respondido 11 Abr '13, 04:04

puede redirigir su página a través del encabezado () como este

header("location:yoursite.com?$msg=welcome user");

y es importante notar que se debe llamar a header() antes de que se vea cualquier salida real...

Respondido 11 Abr '13, 06:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.