Почему перенаправление не работает в Slim?

1

Это моя стартовая страница

<?php
    require 'vendor/slim/slim/Slim/Slim.php';

    \Slim\Slim::registerAutoloader();

    $app = new \Slim\Slim();
    $app->get('/login', function () {
        include 'login.php';
    });
    $app->post('/login/login_authenticate', function () {
        include 'login_authenticate.php';
    });
    $app->post('/login/login_authenticate/dash', function () {
        include 'dashboard.php';
    });
    $app->run();
?>

Это моя страница аутентификации. Условие if работает нормально, но страница не перенаправляется. Я проверил условия.

<?php
    error_reporting(0);

    $app      = new \Slim\Slim();
    $body     = $app->request->getBody();
    $value    = json_encode($_POST);
    $json     = json_decode($value, true);
    $uname    = $json['username'];
    $psswrd   = $json['password']; 
    $host     = "localhost";
    $username = "root"; 
    $password = ""; 
    $db_name  = "resource"; 

    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("resource")or die("cannot select DB");
    $sql = "SELECT * FROM user_master WHERE User_Name='$uname' &&   '             Pass_word='$psswrd'";'
    $result_set = mysql_query($sql);
    while($row = mysql_fetch_array($result_set)) {         
        $db_username= $row['User_Name'] ;
        $db_password= $row['Pass_word'] ;
    }
    if ($db_username==$uname &&$db_password==$psswrd ) {        
        $app->redirect("login/login_authenticate/dash");
    } else {
        die("User name doesnt match");
    }
    $app->run();
?>

Пожалуйста, помогите мне исправить это. Заранее спасибо.

  • 0
    $ app = Slim \ Slim :: getInstance (); должен это исправить. Вы не можете создать новый экземпляр, так как вы уже выполняете его, и редирект выбрасывает внутренний HALT, и он не будет выполняться в старом стеке после создания нового.
Теги:
redirect
slim

1 ответ

0

Позвольте взглянуть на определение маршрута:

$app->post('/login/login_authenticate', function () {
    include 'login_authenticate.php';
});

Это ваше перенаправление:

$app->redirect("login/login_authenticate/dash");

Ваше перенаправление указывает на маршрут, который ожидает метод POST, и попытается найти тот, который ожидает метод GET.

Это должно исправить:

$app->get('/login/login_authenticate', function () {
    include 'login_authenticate.php';
});

Интересные вещи:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню