header of php not working btw html? [duplicate] - php

This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 9 years ago.
<body>
<p>We hope to see you again..</p>
<?php header('Location: http://something/com'); ?>
</body>
how come? I copy the syntax from w3school

header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

You can do something like this:
<?php
$message = "We hope to see you again..";
header('Location: http://something/com?msg='.$message);
exit;
?>
And show your message in redirected page echo $_GET['msg'];

No whitespace before and heder() function. Header is before any output.
you need to put your code stat of that page
Like
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>

Related

PHP header fucntion not working on web server [duplicate]

This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 7 years ago.
I tried a code on my LocalHost server and it worked perfectly , but when i uploaded the page on web server this redirection function not working :
header('location:ControlPanel/Add_course.php');
Any hint how to fix it ?
header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP
Combine all your PHP codes and make sure you don't have any spaces at the beginning of the file.
It should be Location not location.
also after header('Location:ControlPanel/Add_course.php'); add exit(); if you have any other scripts below.
If still problem exist, use ob_start() and try below code:-
ob_start();
header('Location:ControlPanel/Add_course.php');
exit();
If none of them working then only use Js syntax to redirect by below way:-
echo "<script type='text/javascript'> document.location = 'ControlPanel/Add_course.php'; </script>";
Hope it will help you :)
remove all the print statements and echo statements in that page I mean if you are redirecting in main page remove unwanted print and echo as well as ?> .
I also had this issue

Redirecting using header after updating database [duplicate]

This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 8 years ago.
I need help with redirecting using header.
My code:
<?php
if($fname != "") {
$query = mysql_query("UPDATE customer_address SET first_name='$fname',last_name='$lname',company='$company',company_id='$company_id',
address_1='$address_1',address_2='$address_2',city='$city',county='$county', post_code='$postcode',country='$country'
WHERE address_id='$editThisId';");
if($query==true) {
header('Location: address.php');
} else {
echo "Update Error!";
}
}
And I get the following error:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\eula\edit-address.php:72) in C:\xampp\htdocs\eula\edit-address.php on line 129
Pastebin for whole file: http://pastebin.com/vj2Mp7u0
Thanks in advance!
You are getting this error because your server already sent information to the client's browser - Headers need to be sent first before any HTML is transferred.
Simply put the code which is supposed to redirect the user at the very top of your file before any HTML or echo-calls.
Alternatively, you can call ob_start() at the top of your file to disable output buffering and send the page as a whole after every bit of your PHP code has executed.
You can not have any html content being displayed before the header, example:
<html>
...
<?php
// your code
header('Location: address.php');
?>
Try putting the php code, before any html content.
"Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file."
from
http://www.php.net/manual/en/function.header.php
You could also try moving your php to the top of the page (before any of the HTML) instead of the bottom. That way the php would look for if(isset($_POST['submit'])) before anything on the page is rendered.
Your redirects should work then I think.

PHP: Header wont redirect [duplicate]

This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 9 years ago.
When i put my website online, all of the headers will not work. But when i built it, just on a local database etc. it worked "Works" fine.
I get this ERROR on the website currently:
Warning: Cannot modify header information - headers already sent by (output started at /customers/5/8/4/infuze.dk/httpd.www/index.php:22) in /customers/5/8/4/infuze.dk/httpd.www/includes/functions.php on line 16
I used my google foo a little and as far as i can understand is that i cant output any data before i use headers. But i dont thing that is the case here.
Here is the code i used in on the site.
if(empty($_GET['page'])){
header('location: index.php?page=homepage');
}
or at least one example
I usually get the error "Cannot modify header information - headers already sent by" when the page you're trying to redirect from contains information. Check to see if the script uses echo, include, require, etc., or contains HTML markup before the line at which you try to redirect.
<p>Hello!</p>
<?php
header('location: index.php?page=homepage');
?>
Will NOT work, because it sends the browser information before trying to redirect.
<?php
echo "Hi!";
header('location: index.php?page=homepage');
?>
Also won't work, because it also sends the browser information before trying to redirect.
<?php
header('location: index.php?page=homepage');
include('setup.txt');
?>
<h1>Amazing page!</h1>
WILL work, because it tries to send the browser information AFTER the redirect, but not before.
Headers won't redirect in the following conditions:
Any blank space is remaining in the file after ?> tag.
To avoid this, please avoid ending ?> tag (file end).
Please check whether, any echo or print statement is written accidentally.
Also, please check whether any HTML tag is remaining there.
If you follow, all this, your script will work.
Finally, in the starting of the file, put
ob_start()
This function will store all your page's output in a buffer and thus your redirection will work.
Try this;
<?php
ob_start();
// code
ob_end_flush();
?>
>> Call ob_start() at start of the script.
>> call ob_end_flush() at the end of script.
Thanks!

Header location issue, how to solve it? [duplicate]

This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 9 years ago.
I created a web site, with php and SQL using WampServer.
And after a condition or in boucle I use Header location to transfer the user to another page. But I got an error from the server, I think is because I use the header after a code and not in . I deleted all blank spaces.
if($passfinal['contrasena']==$_POST['password'])
{
$_SESSION['logedin']=TRUE;
$_SESSION['userid']=$passfinal['id'];
header('Location: ../index.php');
}
Do you have something to help me?
Thnak you.
I think, here is problem $_POST['password'], because before you make compare, first you must check if(isset($_POST['password'])), blank spaces isn't important in this case and last one: I advise you, that you must write full url in header function, like this: header('location: http://example.com/index.php'), because this is more nice and true way.
Warning: Cannot modify header information - headers already sent by (output started at /home/sirobdco/public_html/login/login.php:11) in /home/sirobdco/public_html/login/includes/loginform/loginform.php on line 37
You already sent headers so PHP cannot send them again!
That is, before your code
header('Location: ../index.php');
You already send headers - blank space in html, an echo in PHP, etc.
Have a read through this:
http://php.net/manual/en/function.header.php
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

Why is php returning header issues when calling includes from different directories? [duplicate]

This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 9 years ago.
To get things in the open, there is nothing being output to the screen. There are no additional or conflicting header calls. I have in some cases the example scenario:
page.php
<?php
include('../../folder/session.php');
header("Location: http://www.ebay.com");
exit;
?>
session.php
<?php
session_start();
?>
When you run page.php, it will throw the awful, ugly, makes-me-cuss-so-much-im-blue:
Warning: Cannot modify header
information - headers already sent by
error
HOWEVER,
if I modify page.php to show:
<?php
session_start();
header("Location: http://www.ebay.com");
exit;
?>
I wish I could say I was over simplifying the issue but that is exactly what is occuring. The same happens when i include several other 'includes' as well and literally is driving me bonkers.
Your session.php file probably has some sort of trailing white space that is being sent to the browser. Make sure there is no empty space or blank lines beneath or above .
As a hack you can use ob_start() to delay output but that will introduce the need to flush the output buffer. Better to just take care of extraneous white space.
you probably have a blank space at the end of session.php
You can leave off the ?> at the end of your PHP files as well to eliminate this very problem. It has saved me many a headache.

Categories