2012-01-20 5 views
0

Я пытаюсь заставить перенаправление PHP работать, в форме входа, однако, он не работает. Вот код, если аутентификация прошла успешно.PHP Перенаправление не работает, сеанс запущен

$success = (isset($_POST['uri'])) ? '' : '/index.php'; 

if ($rs->num_rows) { 

    $qn = $db->query("SELECT userid FROM sessions"); 
    $svt = array(); 
    $vbs = $rs->fetch_assoc(); 

    while ($row = $qn->fetch_assoc()) { 
     $svt [] = $row ['userid']; 
    } 

    if (in_array($vbs ['userid'], $svt)) { 
    } else { 
     set_session(array_merge($vbs, array('expires' => time() + (30 * 60)))); 
     $_SESSION['secure3d']['expires'] = time() + (5 * 60); 
     header("Location: $success"); // this isn't working but the session is set. 
    } 
} 

Любые идеи о том, что я здесь делаю неправильно?

+1

Вы проверили, что инструкция else достигнута? Или если какая-то строка выводилась перед заголовком? (предупреждение, например, сообщение об ошибке) – Ismael

+0

У вас была фигурная скобка (по крайней мере, в вашем вставленном коде) – konsolenfreddy

+0

У вас есть ошибки? Включить 'ini_set ('display_errors', 1); error_reporting (E_ALL); 'в верхней части вашего скрипта и сообщить нам, что он говорит. – kba

ответ

0

Попробуйте $ success как абсолютный URI, что-то вроде http://mydomain.com/index.php, например. в http/1.1 это должен быть абсолютный URI

Другая популярная ошибка заключается в том, что перед функцией заголовка отправляется пробел. Это может произойти, если у вас есть включение, которое заканчивается "?> "

+0

Он зависит от http-версии, которую вы используете ... например если вы используете http/1.1, он должен быть абсолютным – rauschen

+0

[docs] (http://www.php.net/manual/en/function.header.php) – rauschen

+0

Больше нет. HTTPbis говорит, что он может быть относительным. http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-18#page-45 - Примечательно, что это должен быть относительный URL, а не URI. ('Расположение: urn: x: 12: AB: FF: 00' является беспредметным.) – mario