Я делаю простой динамический веб-сайт с использованием PHP, где я позволяю пользователю войти в систему, а затем получить доступ к определенным страницам. Итак, вот что я сделал до сих пор.
Зарегистрированные значения принимаются через переменные $ _POST в сценарии php, где он выбирает значения из базы данных для зарегистрированных пользователей. Если пользователь найден, я делаю следующее:
session_register('userid');
$_SESSION['userid'] = $username;//this is taken from $_POST
$_SESSION['accesslevel'] = $access;
в начале скрипта php я поставил session_start();
Теперь вот моя проблема.
Теперь на каждой странице я должен проверять, разрешено ли пользователю просматривать эту страницу или нет, если его нет, он должен быть перенаправлен на login.php, если он есть, то загрузка страницы должна продолжаться.
Теперь я узнал, что единственный способ поддерживать значения на страницах php - это использовать $_SESSION
переменные, и на какой бы странице я ни использовал переменные сеанса, я должен написать session_start()
на каждой странице в качестве первой строки , иначе я получу сообщение "Заголовки уже отправлены".
Странно, я точно это сделал, но все еще получаю ошибки с "заголовками уже отправлено".
ТАК, что я хочу найти лучший способ спроектировать веб-сайт, где я должен использовать переменные сеанса на большинстве страниц и хранить эти общие проверки в общем месте.
- Могу ли я использовать функцию include () как?
- Являются ли сеансы единственным способом передачи данных через php-страницы.
- Что лучше?
У меня есть следующий код:
<?php
session_start();
if(!isset($_SESSION['user']))
{
$_SESSION['loc'] = "adminhome.php";
header("location:ettschoollogin.php");
exit();
}
?>
Находится сверху каждой страницы, которая хочет проверить, вошел ли пользователь в систему.
И это скрипт для проверки входа в систему
<?php
session_start();
include("connection.php");
$userid =$_POST['userid'];
$userpwd =$_POST['userpwd'];
$query="Select UNAME,UPASSWORD,SCHOOL,uaccess from schooluser where uname = '$userid'";
$result=mysql_query($query) or die("couldn't execute the query");
$row=mysql_fetch_array($result);
$useraccess = $row["uaccess"];
$school =$row[2];
if(($row[0]==$userid)&&($row[1]==$userpwd))
{
session_register('userid');
$_SESSION['userid']=$userid;
$_SESSION['school']=$school;
if($useraccess =="admin")
{
header("Location:adminhome.php");
}
if($useraccess !="admin")
{
header("Location:school_main.php");
}
}
else
{
header("Location:ettschoollogin.php?err=1");
}
?>
я знал об общей ошибке наличия лишних пробелов после "?>", НО Я ЕЩЕ ПОЛУЧИЛ ЭТО.
Спасибо, ребята, я пропустил, и в файле "connection.php" на самом деле были лишние пробелы после "?>", Я удалил его раньше, но кое-как, как файл снова был переписан. Спасибо большое.