@sunnyrio

Почему при регистрации и выходе из нее происходит ошибка?

Почему при нажатии на к

Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\localhost\dy_header.php:3) in C:\OpenServer\domains\localhost\dy_functions.php on line 26

Вот код регистрации:
<?php
	session_start();
	echo "<!DOCTYPE html>\n<html><head>";
	require_once 'dy_functions.php';

	$userstr = ' (Незарегестрированный пользователь)';
	
	if (isset($_SESSION['login']))
	{
		$login = $_SESSION['login'];
		$loggedin = TRUE;
		$userstr = " ($login)";
	}
	else $loggedin = FALSE;
	
	echo	"<title>$appname$userstr</title><link rel='stylesheet'" . 
		"href='dy_styles.css' type='text/css'>" . 
		"</head><body><center><canvas id='logo' width='624' " . 
		"height='96'>$appname</canvas></center>" . 
		"<div class='appname'>$appname$userstr</div>" . 
		"<script src='dy_javascript.js'></script>";
		
	if ($loggedin)
	{
		echo "<br><ul class='menu'>" . 
			"<li><a href='index.php'>Главная</a></li>" . 
			"<li><a href='dy_task.php'>Обьявления</a></li>" . 			
			"<li><a href='dy_logout.php'>Завершить сеанс</a></li></ul><br>";
	}
	else
	{
		echo ("<br><ul class='menu'>" . 
			"<li><a href='index.php'>Главная</a></li>" . 
			"<li><a href='dy_signup.php'>Зарегестрироваться</a></li>" . 
			"<li><a href='dy_login.php'>Авторизоваться</a></li></ul><br>" . 
			"<span class='info'>&#8658; Вы вошли на сайт как гость.</span><br><br>");
	}
?>


Вот код выхода из сессии:
<?php
	require_once 'dy_header.php';
	
	if (isset($_SESSION['login']))
	{
		destroySession();
		echo "<div class='main'>Вы уже покинули сайт. Пожайлуста " . 
		"<a href='index.php'>щелкните здесь</a> чтобы обновить экран.";
		// Вы уже покинули сайт. Пожайлуста...
		// ... щелкните здесь, чтобы обновить экран
	}
	else echo "<div class='main'><br>" . "Вы не можете завершить сеанс работы, потому что не входили на сайт!";
	// Вы не можете завершить сеанс работы,
	// потому что не входили на сайт
?>
<br><br></div>
</body>
</html>


Вот код с 8 по 29 строчку файла dy_functions.php:
$connection = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
	
	if ($connection->connect_error) die($connection->connect_error);
	
	
	function queryMysql($query)
	{
		global $connection;
		$result = $connection->query($query);
		if (!$result) die($connection->error);
		return $result;
	}
	
	function destroySession()
	{
		$_SESSION=array();
	
		if (session_id() != "" || isset($_COOKE[session_name()]))
			setcookie(session_name(), '', time()-2592000, '/');
	
			session_destroy();
	}
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Мои глаза... Где вы этот кошмар пишете? В застенках гестапо? Кто вас так мучает? И зачем вы мучаете нас?

написано черным по английскому: не отправляются заголовки патамучта уже начат вывод данных, который начат в dy_header.php, соответственно никакие куки
setcookie(session_name(), '', time()-2592000, '/');
тут уже не запишутся. Учите ну хоть какие-то основы прежде чем писать фикалокод.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Сделайте так
session_start();
  require_once 'dy_functions.php';
  echo "<!DOCTYPE html>\n<html><head>";

а лучше напишите код с 0 без костылей, как сейчас. Он выглядит ужасно...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы