Обучение/Помощь новичкам | Header
Извиняюсь, подобная тема была, но там много неясностей, не могу разобраться вообще что происходит... Не знаю где искать ответ, буквально часа 4 ищу информацию.
Проблема в следующем, как правило header не срабатывает если стоит в коде после любого вывода информации пользователю, то есть echo в том числе конечно.
Но вот в чем собственно вопрос:
Вот этот код РАБОТАЕТ и перенаправление аналогично работает:
То есть тут присутствует echo со словом тренировка, изображение и ссылка, после чего в условии header.
А вот в этом скрипте
имеется 1 echo с выводом текста, но перенаправлять пользователя при условии true отказывается и пишет что "невозможно изменить заголовки так как они уже отправлены и вывод запущен".
В чем разница?
Проблема в следующем, как правило header не срабатывает если стоит в коде после любого вывода информации пользователю, то есть echo в том числе конечно.
Но вот в чем собственно вопрос:
Вот этот код РАБОТАЕТ и перенаправление аналогично работает:
<?php
echo '<div class="block">Тренировка</div>';
echo '<img src="images/shop.png" width="100%" height="200px" />';
echo '<div class="block"><a href="?sila=plus1">Повысить силу на 1 | '.$user['sila'].';
if ($_GET['sila'] == "plus1") {
header('Location: trening.php');
exit;
}
?>
То есть тут присутствует echo со словом тренировка, изображение и ссылка, после чего в условии header.
А вот в этом скрипте
имеется 1 echo с выводом текста, но перенаправлять пользователя при условии true отказывается и пишет что "невозможно изменить заголовки так как они уже отправлены и вывод запущен".
<?php
session_start();
echo "Текст";
if(isset($_GET['zahvat'])){
$_SESSION['emenyhp'] = 20;
$_SESSION['url'] = "?zahvat=two";
$adress = $_SESSION['url'];
}
if ($_GET['zahvat'] == "two") {
$_SESSION['emenyhp'] = 30;
$_SESSION['url'] = "?zahvat=three";
$adress = $_SESSION['url'];
}
if ($_GET['zahvat'] == "three") {
$_SESSION['emenyhp'] = 40;
$_SESSION['url'] = "?zahvat=four";
$adress = $_SESSION['url'];
}
$emenyhp = $_SESSION['emenyhp'];
if(isset($_GET['attack'])){
$emenyhp-=10;
$_SESSION['emenyhp'] = $emenyhp;
$emenyhp = $_SESSION['emenyhp'];
}
if($emenyhp<=0) {
unset($_SESSION['emenyhp']);
$adress = $_SESSION['url'];
if($emenyhp<=0) {
header('location:'.$address.'');
exit();
}
}
$a = $_SESSION['emenyhp'];
echo $a;
echo '<a href="?attack">Атаковать</a>';
echo '<a href="?zahvat
">Начать захват</a>';
?>
В чем разница?
DELETED
24 февраля 2018, в 21:04
Delete
ob_start();
PhpStorm , это я понял. Но чем отличается по смыслу первый и второй вариант кода? Ведь один работает, а другой нет.
$emenyhp-=10;
________
посл. ред. 24.02.2018 в 23:15; всего 1 раз(а); by OZZY
OZZY , это ответ на мой вопрос?
Holter (24.02.2018 в 23:16)
OZZY , это ответ на мой вопрос?
OZZY , это ответ на мой вопрос?
Не знаю, не кодер
Но что это? Мне кажется, там лишний знак .45.
OZZY (24.02.2018 в 23:17)
Holter (24.02.2018 в 23:16)
OZZY , это ответ на мой вопрос?
Не знаю, не кодер
Но что это? Мне кажется, там лишний знак .45.
Holter (24.02.2018 в 23:16)
OZZY , это ответ на мой вопрос?
Не знаю, не кодер
Но что это? Мне кажется, там лишний знак .45.
Если не знаешь, не писал бы
Это эквивалент:
$hp = $hp - 10;