2015-12-11 3 views
1

Это моя стартовая страницаПочему перенаправление не работает в slim?

<?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

$ приложение = Слим \ Слим :: деЫпзЬапсе(); должен исправить это. Вы не можете создать новый экземпляр, так как вы уже выполняете его, а перенаправление выдает внутренний HALT, и он не будет выполнен в старом стеке после создания нового. – geggleto

ответ

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'; 
}); 

Интересные связанные вещи:

Смежные вопросы