Пишу функцию, которая должна проверять, есть ли cookies у клиента и есть ли сессия в базе данных. Если нет, должна отправлять на страницу авторизации. При использовании на страницах в любом случае отправляет на страницу авторизации. Помогите, пожалуйста?! PHP: function auth() { if(!isset($_COOKIE['s'])){goto_page("authorization.php");} //функция goto_page написана, работает нормально else { $cook=$_COOKIE['s']; $q=mysqli_query($link, "SELECT COUNT(*) FROM sess WHERE key='".$cook."'"); $res=mysqli_fetch_assoc($q); $ac=$res['COUNT(*)']; if($ac==0){goto_page("authorization.php");} else { $date=date("Y-m-d H:i:s"); mysqli_query($link, "UPDATE sess SET date ='".$date."' WHERE key='".$cook."'); } } }
Включи вывод сообщений на экран или изучи журнал ошибок веб-сервера. Вангую, что дело в том, что переменная $link, в которой типа экземпляр класса mysqli хранится, недоступна в функции auth(). То есть её нужно забрать из глобального окружения, если она там есть, или объявить локально.
https://php.ru/manual/errorfunc.configuration.html https://php.ru/manual/security.errors.html А это уже зависит от твоего окружения. Мне отсюда не видно, какие программы у тебя установлены и как настроены.
Вот ещё хорошие статьи про откладку/debug, быстро можно найти ошибки и понять где не стыковки http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html
Я может глупость скажу потому что сам новичок, но вы же сначала проверяете !isset, то есть если она существует и отправляете на авторизацию, а если нет то присваиваете. Если нужно проверить на отсутствие, нужно писать просто isset, без ! . UPD. Глупость, да)