Страница перенаправления в соответствии с пользователем и администратором PHP

0

Я создал таблицу пользователей с именем пользователя, паролем, типом пользователя, электронной почтой и т.д. Тип пользователя различает пользователя как администратора или других пользователей. Теперь, после входа в систему, страница getuser.php используется для перенаправления в соответствии с типом user.pelease Помоги мне. Спасибо.

Вот моя страница getuser.php:

<?php include 'connect.php'; ?>

<? 
$user = $_GET['user']; 
session_start(); 
$_SESSION['user'] = $username; 
if(isset($_SESSION['user'])){     

 $sql = "SELECT usertype FROM users WHERE userName='".$username."'";
$result = $db->query($sql);

//the function num_rows() checks if there are more than zero rows returned
if ($result->num_rows > 0) {
   //echo "<table><tr><th>SELECT</th><th>ADID</th><th>ADName</th><th>ADCATEGORY</th><th>CONTACTNUMBER</th><th>EXPIRATIONDATE</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $level= $row['usertype'];

    }
}
    if ($level=='1')
    {
      header("Location: adlist.php?user=$username");
    }
    else
    {
     header("Location: post_ad.php?user=$username");
    }
}


 else { 
echo " Sorry, but you must login to view the members area" 
 } 
?>
  • 2
    Пробелы / строки между строкой 1 и строкой 3 лишают вас возможности использовать перенаправление заголовка. Перед вызовом header() нельзя отправить вывод в браузер
Теги:
mysqli

1 ответ

0

комментарий scrowler полностью верен

Когда PHP выполняет файл, все пробелы между ?> <?php считаются выходными.

В примере в вашем вопросе:

<?php include 'connect.php'; ?>
<!-- this gap produces output -->
<?php /* ... */ ?>

Почему это так важно?

Чтобы передать заголовки перенаправления клиенту, эти заголовки должны быть отправлены перед телом HTTP-ответа. Это означает, что когда вы переходите к выпуску переадресации последней в программе, это уже к концу, когда тело уже начинает записываться в HTTP-ответ. Если вы используете избыточную буферизацию, клиент, возможно, уже получил часть ответа.

Заголовок ответа выглядит примерно так:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
Date: Thu, 20 Nov 2014 00:55:09 GMT
Content-Length: 10614

Ответ будет более вам знаком:

<!DOCTYPE html>
<html>
<head>
    <title>Edit - Stack Overflow</title>
    <!-- ... -->
</head>
<body>
    <!-- ... -->
</body>
</html>

Чтобы устранить проблему, измените первые несколько строк файла следующим образом

<?php 
include 'connect.php';
$username = $_GET['user']; // not $user = $_GET['user'];
// ...

Ещё вопросы

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