2013-11-03 4 views
0

Я просмотрел это примерно сто раз и не могу найти причину, по которой страница не будет перенаправлена. Я не могу найти никаких пробелов или каких-либо результатов, которые могут отсутствовать. Может ли кто-нибудь обнаружить проблему?Почему моя страница не перенаправляется после входа?

Вот мой код:

<?php 
include_once('includes/sessions.php'); 
include_once('connections/localhost.php'); 
include_once('includes/functions.php'); 
include_once('includes/validations.php'); 
?> 
<?php 
$username = ""; 
if (isset($_POST['submit'])) { 
    $required_fields = array("username", "password"); 
    validate_there($required_fields); 
    if (empty($errors)) { 
     $username = $_POST["username"]; 
     $password = $_POST["password"]; 
     $found_user = attempt_login($username, $password); 
    if ($found_user) { 
    $_SESSION["user_id"] = $found_user["user_id"]; 
    $_SESSION["username"] = $found_user["username"]; 
    redirect_to("index.php");  
    } else { 
     $_SESSION["message"] = "Username/password not found."; 
    } 
    } 
} else { 
} 
?> 

Вот функция перенаправления:

function redirect_to($new_location) { 
     header("Location: " . $new_location); 
     exit; 
    } 

Вот функции проверки:

$errors = array(); 

function fieldname_is_text($fieldname) { 
    $fieldname = str_replace("_", " ", $fieldname); 
    $fieldname = ucfirst($fieldname); 
    return $fieldname; 
} 


function has_presence($value) { 
    return isset($value) && $value !== ""; 
} 

function validate_there($required_fields) { 
    global $errors; 
    foreach($required_fields as $field) { 
    $value = trim($_POST[$field]); 
    if (!has_presence($value)) { 
     $errors[$field] = fieldname_is_text($field) . " can't be blank"; 
    } 
    } 
} 
+0

какая ошибка вы получаете? –

+0

Не то, чтобы это имело значение, но почему вы закрываете, а затем снова открываете свои приложения для PHP? (то есть '?> hargobind

+0

напишите свой код для '$ found_user' и' validate_there' –

ответ

1

Скорее всего у вас есть какой-либо выход (HTML или сообщения об ошибках) перед вызовом функции header. Все заголовки должны быть отправлены перед отправкой вывода.

Некоторое количество вы не можете видеть, но есть. Такие как пробелы и т. Д. Попробуйте удалить

?> 
<?php 
+0

Да, но где? Я не вижу никаких сообщений о выходе или ошибках, когда я их включаю. – SherwoodPro

+0

@SherwoodPro '?>

+0

Также проверьте прилагаемые файлы. Если они предназначены только для PHP, безопасно удалить?> В конце файла. Это предотвращает последующие отправки пробелов в браузер. Есть несколько дискуссий о том, является ли хорошей практикой кодирования пропускать ваш закрывающий тег, но верно. PHP –

0

Попробуйте эту функцию для перенаправления.

<?php 
function redirect_to($new_location) 
{ 
    ?> 
<script type="text/javascript"> 
    window.location = '<?php echo $new_location;?>'; 
</script> 
<?php 
} 

?> 
+0

Я не мог заставить это работать. Он просто продолжал давать мне пустую страницу. Спасибо хоть. :) – SherwoodPro

+0

Сделать, что вы передаете значение в функции, а переменная имеет значение (путь к странице), $ new_location ... – Zeeshan

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