PHP и функция header (location:)

У меня есть hosting Hostgator, в котором всегда у меня есть та же проблема, использовав функцию header php для re-direccionar, из-за ej: header ("Location:index.php"); Если я это делаю в xampp, нет проблем и все функционирует хорошо, но если я это пересылаю в hosting, всегда я получаю warning, который говорит "headers already sent... bla bla bla". Всегда происходи, я едва использую функцию header ("Location:archivo.php") получаю warning и не меня re-direcciona. Как я могу решать это?

Сюда идет мой код





    Lista de Precios
    
  
  
  




 

ACTUALIZAR

prepare($sql); $resultado->execute(array(":miid"=>$id, ":minom"=>$nombre, ":mipre"=>$precio, ":mifab"=>$fabricante)); header("Location:index.php"); } ?>

 

Nombre
Apellido
Dirección

 

В github: https://github.com / ashcrimson / halohawaii / blob / степень магистра / editar.php

23
задан 08.08.2016, 19:28
6 ответов

В отличие от которого они говорят какие-то ответы, ты не был бы должен скрывать предупреждение. Будь там в пользу мотива и он предлагает тебе ясное описание, почему оно не функционирует. Предупреждение, которое ты получаешь, проистекает того, что посланы заголовки, после послав тело HTML раньше..., уже поздно.


Redireccionar с header ('Location:...')

header() пошли заголовки HTTP и должен будь быть первым, что посылает server, перед любым другим заявлением, без даже линий, в мишени раньше. Кроме того, для каких-то браузеров, унифицированный указатель ресурса в ту, кто желается redireccionar, не может быть относительным маршрутом, должен быть абсолютный маршрут.

header('Location: http://tuweb.com/pagina.html');
die();

И с die() мы заканчиваем немедленно выполнение рукописного шрифта, избегая того, чтобы был послан более вышедшая клиент. Однако, - лучший envíar сообщение сообщая, что есться redireccionado со ссылкой, чтобы оставаться, в случае, если не будет функционировать автоматическая переадресация. Например

header('Location: http://tuweb.com/pagina.html');
echo "El recurso se ha movido hacia <a href=\"http://tuweb.com/pagina.html\">aquí</a>."
die();

Например, если мы хотели redireccionar в страницу внутри настоящего маршрута, независимо, каковым был маршрут:

$host = $_SERVER['HTTP_HOST'];
$ruta = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$html = 'pagina.html';
$url = "http://$host$ruta/$html";
header("Location: $url");
echo "El recurso se ha movido hacia <a href=\"$url\">aquí</a>."
die();

В твоем случае, код PHP должен бы быть в начале файла.



Заметь: Какие-то услуги hosting посылают headers самостоятельно, способствуя тому, чтобы было невозможно redireccionar посредством заголовков. Альтернативы:

С этикеткой ПОМЕСТИТЕ в HTML

<meta http-equiv="Location" content="http://tuweb.com/pagina.html"/>

или посредством языка сценариев JavaScript

window.location.replace("http://tuweb.com/pagina.html");

Самая надежная рекомендация состоит в том, чтобы ты использовал все варианты, если какой-то недостаток. Например

$host = $_SERVER['HTTP_HOST'];
$ruta = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$html = 'pagina.html';
$url = "http://$host$ruta/$html";

header("Location: $url");
include redirect.php;
die();

И код redirect.php он был бы:

<html>
  <head>
    <meta http-equiv="Location" content="<?= $url ?>"/>
    <script type="text/javascript">
      window.location.replace("<?= $url ?>");
    </script>
  </head>

  <body>
    El recurso se ha movido hacia <a href="<?= $url ?>">aquí</a>.
  </body>
<html>
22
ответ дан 24.11.2019, 13:42

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

<?php
include("conexion.php");
if(!isset(

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

POST["bot_actualizar"])) { $id =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

GET["id"]; $nombre =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

GET["nombre"]; $precio =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

GET["precio"]; $fabricante =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

GET["fabricante"]; } else { $id =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

POST["id"]; $nombre =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

POST["nombre"]; $precio =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

POST["precio"]; $fabricante =

Как venГ - в комментируя в комментариях и ответах.

Состоит cuestiГіn в том, чтобы помещать cГіdigo php перед html.

[110]

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

POST["fabricante"]; $sql = "UPDATE precios SET nombre=:minom, precio=:mipre, fabricante=:mifab WHERE id=:miid"; $resultado = $base->prepare($sql); $resultado->execute(array(":miid" => $id, ":minom" => $nombre, ":mipre" => $precio, ":mifab" => $fabricante )); header("Location:index.php"); } ?> <!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- //... resto del código -->

Это deberГ, - чтобы это решать.

И проверяя оставшуюся часть файлов, deberГ-эксперта меняния этого на все, чтобы предотвращать другие ошибки. cГіdigo, который ты выполняешь, не нуждается в том, чтобы быть перемешанным html.

8
ответ дан 24.11.2019, 13:42
  • 1
    #161; Большое спасибо! он такой как t и # 250; dec и # 237; схвати. Я поместил все c и # 243; я говорю php в начале файла и решение и # 243;. Он читал PHP & Мискл Фор Dummies и ах и # 237; tambi и # 233; n выйди и # 237; в это ошибки " headers already sent" и я участвую в рыцарском турнире dec и # 237; an это, чего не deb и # 237; an, не ни места ни ничего раньше. В и # 250; n схвати и # 237; я не произошел с собой и # 243; что вещь была такой простой, как помещать весь php сначала, как который asum и # 237; что браузер должен читать все наверху во внизу, и оно не собиралось функционировать. Решенный. –  Felipe Pino 17.08.2016, 17:53
  • 2
    @FelipePino ты Был бы должен выбирать вопрос, который решил или помог твоей проблеме, и в demá s quizá s má s 1 из-за dedicació n в проблему. Привет :) –  Otto 14.02.2017, 20:08
  • 3
    @OscarR В какой-то ocasió n мне осложнилась много тема того, чтобы быть должным помещать header (" location...") внутри condició n и одновременно быть должным пересылать наверху совсем файл и кроме того использовать это абсолютных маршрутов, - немного folló n. Какой-то способ, легкий есть с PHP для того, чтобы это быть сделанным? Librerí схвати, или делать один я начинаю Javascript с location или чем-то сходным, что делало бы перенаправление má s простые? Дай sensació n, PHP - язык, который повесит в enguarrecer có я говорю. –  Lorthas 14.07.2017, 15:05
  • 4
    @Lorthas всегда он требуется немного planificació n, чтобы реализовывать изменения, сходные с теми, что ты комментируешь. После того, как - язык сервера, любой условный может идти всегда прежде чем любая часть html. На абсолютных маршрутах, quizá s это может служить помощью . –  OscarR 16.07.2017, 15:23

Хотя она funciГіn header () - это, чтобы показывать тяжелую ошибку если только не не будет написано добро или не способа correta - что-то сходное с require, когда файл не существует, этот показывает тяжелую ошибку и не выполняет ее aplicaciГіn.

PodrГ-Схвати показывать cГіdigo, где находят ее funciГіn header () , чтобы анализировать mГЎs основательно ошибку?

Помнит, что header () должен быть названным не показывать перед тем, как ничего из-за экрана, ты приклеиваешь этикетку на HTML, lГ-neas в мишени с файла или с PHP. Это ошибка очень comГєn читать cГіdigo с функциями как include или require, или другой тип функций доступа файлов, которые включают место или lГ-neas в мишени, которая они появляются перед тем, как называть в нее funciГіn header (). Последует за той же проблемой, когда используется единственный файл PHP/HTML.

<html>
<?php
/* Esto producirá un error. Fíjese en el html
 * que se muestra antes que la llamada a header() */
 header('Location: http://www.example.com/');
?>
7
ответ дан 24.11.2019, 13:42
  • 1
    @FelipePino, как показала проблема эту, что funci и # 243; n header() находится внутри этикетки html это покажет ошибку, ты должен размещать c и # 243; я говорю PHP перед html –  Otto 09.08.2016, 04:32

Завись от уровня visualizaciГіn WARNING в ней configuraciГіn твоего файла php.ini.

В твоем случае, tendrГЎs одна configuraciГіn различный в Xampp и твой Hosting. Скопируй ее configuraciГіn твоего файла php.ini и он вступает в контакт с твоим поставщиком Hosting для того, чтобы он выровнял ее тебе configuraciГіn.

0
ответ дан 24.11.2019, 13:42
  • 1
    Если говорится о том, чтобы скрывать ошибки, он медлит с тем, чтобы становиться менее немного экспертом и # 237;: @header("Location:index.php");, но это не решает проблему. С точки зрения хорошие pr и # 225; cticas ocultaci и # 243; n ошибок это не одна из них. –  OscarR 06.08.2016, 15:26
  • 2
    Также не говорится об ошибке, это предупреждение и возможно конфигурировать уровень этих объявлений на вкус администратора (и под Вашей ответственностью, просветом est и # 225;). Хороший вклад это @header. –  Pedro 06.08.2016, 15:30
  • 3
    Seg и # 250; n entend и # 237; проблема не c и # 243; mo прятать предупреждение, а c и # 243; mo redireccionar правильно –  Mariano 09.08.2016, 06:13

Вместо того, чтобы помещать header("Location:index.php"); в эту линию ты можешь помещать:

echo'<script type="text/javascript"> alert("Conexion exitosa");
window.location.href="index.php";</script>';
1
ответ дан 24.11.2019, 13:42

Он рекомендовал бы тебе использовать одну acciГіn Аякс для для события издавать таким образом у тебя не будет ложи в виде, если твой action успешный, смоги redireccionar с javascript например:

//JavaScript
$(document).ready(function() {
   $(".btn_actualizar").click(function() {
   var parameter = {
    id : $(".txtId").val()
    nombre: $(".txtNombre").val()
    precio:$(".txtPrecio").val()
    fabricante:$("txtFabricante").val()
    }
    $.ajax({
    data: parameter,
    url: '../controller/update.php',
    type: 'POST',
    dataType: 'json',
    success: function(response) {
        window.location.href = "http://stackoverflow.com";
    },
    error: function(response) {
     alert(response)
    }
    })
   })
})
<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <input value="Nombre" type="text" class="txtNombre">
<!-- //... resto del código -->
    <button value="Editar" class="btn_actualizar"/>
<!-- //... resto del código -->
// Codigo PHP
// update.php
<?php
include("conexion.php");

    $id         = 

Он рекомендовал бы тебе использовать одну acciГіn Аякс для для события издавать таким образом у тебя не будет ложи в виде, если твой action успешный, смоги redireccionar с javascript например:

[110]POST["id"]; $nombre =

Он рекомендовал бы тебе использовать одну acciГіn Аякс для для события издавать таким образом у тебя не будет ложи в виде, если твой action успешный, смоги redireccionar с javascript например:

[110]POST["nombre"]; $precio =

Он рекомендовал бы тебе использовать одну acciГіn Аякс для для события издавать таким образом у тебя не будет ложи в виде, если твой action успешный, смоги redireccionar с javascript например:

[110]POST["precio"]; $fabricante =

Он рекомендовал бы тебе использовать одну acciГіn Аякс для для события издавать таким образом у тебя не будет ложи в виде, если твой action успешный, смоги redireccionar с javascript например:

[110]POST["fabricante"]; $sql = "UPDATE precios SET nombre=:minom, precio=:mipre, fabricante=:mifab WHERE id=:miid"; $resultado = $base->prepare($sql); $resultado->execute(array(":miid" => $id, ":minom" => $nombre, ":mipre" => $precio, ":mifab" => $fabricante )); #resto del código ?>
0
ответ дан 24.11.2019, 13:42