header (location...) nefunctional

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje:285

header (location...) nefunctional

Salutare,

Am urmatorul cod:

Cod: Selectaţi tot

...
$sql = "insert...";

$result = $conn->query($sql);

header ('location: final.php');
//echo "<script>window.location = 'final.php';</script>";
In aceasta varianta de header, nu face trimiterea catre acea pagina, daca recurg la un artificiu js functioneaza.

Cod: Selectaţi tot

Eroare: Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\top.inc.php:2) in C:\xampp\htdocs\ev.php on line 340
Multumesc!

MarPlo Mesaje:4343
Salut
Pentru ca functia header() (ca si session_start() si setcookie()) sa functioneze, inaintea de apelarea ei trebuie sa nu fie nici un cod care trimite date la browser.
Deci, inainte de utilizarea functiilor mentionate sa nu fie vreun "echo", sau cod html; nici macar vreun spatiu inainte de inceputul: "<?php".

sterica Mesaje:285
Pentru a intelege mai bine si a ma verifica in acelasi timp, daca aleg una din variantele de mai jos risc sa am erori?

var.1

Cod: Selectaţi tot

<html>
<body>
<p>text text</p>
<?php header ('location:....'); ?>
<body>
</html>
var.2

Cod: Selectaţi tot

<html>
<body>
<?php 
echo "<p>text text</p>";
header ('location:....'); ?>
<body>
</html>
var.3

Cod: Selectaţi tot

<html>
<body>
<p>text text</p>
<?php include 'file.php'; ?>
<body>
</html>

file.php
<?php
header ('location:....');
Multumesc!

MarPlo Mesaje:4343
In mod general toate acele variante returneaza eroare.
Incearca sa adaugi ob_clean(); inainte de header('Locatio: ');.
Am testat acest exemplu cu PHP 7.1 si a functionat.

Cod: Selectaţi tot

<html>
<body>
<?php
echo '<p>text text</p>';

// clean the output buffer
ob_clean();
header ('Location: /');
exit;
?>
<body>
</html>

sterica Mesaje:285
multumesc frumos pentru raspuns