By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,617 Members | 1,792 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,617 IT Pros & Developers. It's quick & easy.

header/session start question

P: n/a
Hi.

I am having a few header problems at the moment with a login page. I
don't have my headers at the top of the page where I've learned I need
to have them. However, I also know I'm supposed to have the
session_start(); at the top of the page as well. So when you have two
things that need to be the first which do you put first? And if I put
one before the other will that cause problems?

Below is a copy of the php from my page. It is the header("Location:
". parts at the bottom in the registering session variables section
that causes the error. Would I just lift out the header locations
parts and put them to the top?

Thanks for any help

John


<?php
session_start();
// *** Validate request to login to this site.
//session_start();
// Report all PHP errors (bitwise 63 may be used in PHP 3)
error_reporting(E_ALL);
?>

<?php require_once('Connections/conn_newland.php'); ?>

<?php

// *** Validate request to login to this site.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}

if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['pwd'];
$MM_fldUserAuthorization = "userGroup";
$MM_redirectLoginSuccess = "index.php";
$MM_redirectLoginFailed = "login_failed.php";
$MM_redirecttoReferrer = true;
mysql_select_db($database_conn_newland, $conn_newland);

$LoginRS__query=sprintf("SELECT username, pwd, userGroup FROM
tbl_users WHERE username='%s' AND pwd='%s'",
get_magic_quotes_gpc() ? $loginUsername :
addslashes($loginUsername), get_magic_quotes_gpc() ? $password :
addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conn_newland) or
die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {

$loginStrGroup = mysql_result($LoginRS,0,'userGroup');

//declare two session variables and assign them
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;

//register the session variables
session_register("MM_Username");
session_register("MM_UserGroup");

if (isset($_SESSION['PrevUrl']) && true) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

Jul 17 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
John wrote:
I am having a few header problems at the moment with a login page. I
don't have my headers at the top of the page where I've learned I need
to have them. However, I also know I'm supposed to have the
session_start(); at the top of the page as well. So when you have two
things that need to be the first which do you put first? And if I put
one before the other will that cause problems?


What header problems do you have? Starting with a call to session_start(),
followed by a header() call shouldn't cause any problems.

Even several header() calls do not cause errors, because headers are send
only when content is displayed or at the end of the script (whatever comes
first):

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");

// headers are send
print "Hello";

// Error because the headers are already sent
header("Location: http://example.com/");
?>

Or:

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");
header("Location: http://example.com/");

// No more lines of code, headers will be send
?>

Even the above examples would work when you instruct PHP to wait sending the
output through output buffering (see http://www.php.net/ob_start).
JW

Jul 17 '05 #2

P: n/a
On Sun, 24 Oct 2004 09:22:26 +0200, A strange species called
"Janwillem Borleffs" <jw@jwscripts.com> wrote:
What header problems do you have? Starting with a call to session_start(),
followed by a header() call shouldn't cause any problems.

Even several header() calls do not cause errors, because headers are send
only when content is displayed or at the end of the script (whatever comes
first):

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");

// headers are send
print "Hello";

// Error because the headers are already sent
header("Location: http://example.com/");
?>

Or:

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");
header("Location: http://example.com/");

// No more lines of code, headers will be send
?>

Even the above examples would work when you instruct PHP to wait sending the
output through output buffering (see http://www.php.net/ob_start).
JW


Hi.

I receive the following error:

Warning: Cannot modify header information - headers already sent by
(output started at /home/xxxxx/public_html/newland/login.php:11) in
/home/xxxxx/public_html/newland/login.php on line 55

This is line 55 to 61 below:

header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

Do I just move that to the top then after the session start?

John

<?php
session_start();
// *** Validate request to login to this site.
//session_start();
// Report all PHP errors (bitwise 63 may be used in PHP 3)
error_reporting(E_ALL);
?>

<?php require_once('Connections/conn_newland.php'); ?>

<?php

// *** Validate request to login to this site.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}

if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['pwd'];
$MM_fldUserAuthorization = "userGroup";
$MM_redirectLoginSuccess = "index.php";
$MM_redirectLoginFailed = "login_failed.php";
$MM_redirecttoReferrer = true;
mysql_select_db($database_conn_newland, $conn_newland);

$LoginRS__query=sprintf("SELECT username, pwd, userGroup FROM
tbl_users WHERE username='%s' AND pwd='%s'",
get_magic_quotes_gpc() ? $loginUsername :
addslashes($loginUsername), get_magic_quotes_gpc() ? $password :
addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conn_newland) or
die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {

$loginStrGroup = mysql_result($LoginRS,0,'userGroup');

//declare two session variables and assign them
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;

//register the session variables
session_register("MM_Username");
session_register("MM_UserGroup");

if (isset($_SESSION['PrevUrl']) && true) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
Jul 17 '05 #3

P: n/a
John <do*@tanion.com> wrote in
news:ho********************************@4ax.com:
On Sun, 24 Oct 2004 09:22:26 +0200, A strange species called
"Janwillem Borleffs" <jw@jwscripts.com> wrote:
What header problems do you have? Starting with a call to
session_start(), followed by a header() call shouldn't cause any
problems.

Even several header() calls do not cause errors, because headers are
send only when content is displayed or at the end of the script
(whatever comes first):

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");

// headers are send
print "Hello";

// Error because the headers are already sent
header("Location: http://example.com/");
?>

Or:

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");
header("Location: http://example.com/");

// No more lines of code, headers will be send
?>

Even the above examples would work when you instruct PHP to wait
sending the output through output buffering (see
http://www.php.net/ob_start).
JW


Hi.

I receive the following error:

Warning: Cannot modify header information - headers already sent by
(output started at /home/xxxxx/public_html/newland/login.php:11) in
/home/xxxxx/public_html/newland/login.php on line 55

This is line 55 to 61 below:

header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

Do I just move that to the top then after the session start?

John

<?php
session_start();
// *** Validate request to login to this site.
//session_start();
// Report all PHP errors (bitwise 63 may be used in PHP 3)
error_reporting(E_ALL);
?>

<?php require_once('Connections/conn_newland.php'); ?>

<?php

// *** Validate request to login to this site.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}

if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['pwd'];
$MM_fldUserAuthorization = "userGroup";
$MM_redirectLoginSuccess = "index.php";
$MM_redirectLoginFailed = "login_failed.php";
$MM_redirecttoReferrer = true;
mysql_select_db($database_conn_newland, $conn_newland);

$LoginRS__query=sprintf("SELECT username, pwd, userGroup FROM
tbl_users WHERE username='%s' AND pwd='%s'",
get_magic_quotes_gpc() ? $loginUsername :
addslashes($loginUsername), get_magic_quotes_gpc() ? $password :
addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conn_newland) or
die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {

$loginStrGroup = mysql_result($LoginRS,0,'userGroup');

//declare two session variables and assign them
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;

//register the session variables
session_register("MM_Username");
session_register("MM_UserGroup");

if (isset($_SESSION['PrevUrl']) && true) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>


whats in your require_once file?
Jul 17 '05 #4

P: n/a
On Sun, 24 Oct 2004 20:39:13 -0000, A strange species called Theo
<in*****@noemail.com> wrote:
John <do*@tanion.com> wrote in
news:ho********************************@4ax.com :
On Sun, 24 Oct 2004 09:22:26 +0200, A strange species called
"Janwillem Borleffs" <jw@jwscripts.com> wrote:
What header problems do you have? Starting with a call to
session_start(), followed by a header() call shouldn't cause any
problems.

Even several header() calls do not cause errors, because headers are
send only when content is displayed or at the end of the script
(whatever comes first):

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");

// headers are send
print "Hello";

// Error because the headers are already sent
header("Location: http://example.com/");
?>

Or:

<?php

// header not send
header("X-Header: Foo");
header("X-Header-Description: Bar");
header("Location: http://example.com/");

// No more lines of code, headers will be send
?>

Even the above examples would work when you instruct PHP to wait
sending the output through output buffering (see
http://www.php.net/ob_start).
JW


Hi.

I receive the following error:

Warning: Cannot modify header information - headers already sent by
(output started at /home/xxxxx/public_html/newland/login.php:11) in
/home/xxxxx/public_html/newland/login.php on line 55

This is line 55 to 61 below:

header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

Do I just move that to the top then after the session start?

John

<?php
session_start();
// *** Validate request to login to this site.
//session_start();
// Report all PHP errors (bitwise 63 may be used in PHP 3)
error_reporting(E_ALL);
?>

<?php require_once('Connections/conn_newland.php'); ?>

<?php

// *** Validate request to login to this site.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}

if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['pwd'];
$MM_fldUserAuthorization = "userGroup";
$MM_redirectLoginSuccess = "index.php";
$MM_redirectLoginFailed = "login_failed.php";
$MM_redirecttoReferrer = true;
mysql_select_db($database_conn_newland, $conn_newland);

$LoginRS__query=sprintf("SELECT username, pwd, userGroup FROM
tbl_users WHERE username='%s' AND pwd='%s'",
get_magic_quotes_gpc() ? $loginUsername :
addslashes($loginUsername), get_magic_quotes_gpc() ? $password :
addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conn_newland) or
die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {

$loginStrGroup = mysql_result($LoginRS,0,'userGroup');

//declare two session variables and assign them
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;

//register the session variables
session_register("MM_Username");
session_register("MM_UserGroup");

if (isset($_SESSION['PrevUrl']) && true) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>


whats in your require_once file?


That contains a database with a few different tables. One of the
tables has all the usernames and passwords for people who register.
This current page that I'm having these problems with is the login
page.

Cheers

John
Jul 17 '05 #5

P: n/a
John <qu**@duck.com> wrote in news:r83pn091afpila6kb4kg8uj6k4bcajijcl@
4ax.com:
That contains a database with a few different tables. One of the
tables has all the usernames and passwords for people who register.
This current page that I'm having these problems with is the login
page.

Cheers

John


unless Im mistaken the line requiring that file is the one it doesnt
like. So maybe something in it is causing the problem.

I use something similar... a correct login redirects to the next page,
and its in a function call. But for it to work the call must be made
before there are any print statements or html code of any kind (not
incluind sprintf, which doesnt output anything). Also, try putting an
exit() after each header, just in case.
Jul 17 '05 #6

P: n/a
I would say the errors are the spaces you introduced and these were output
(Marked with "HERE >" in your code). Once a character is send, which is
HTML, no header can be sent anymore, hence the error when you send the
Location header. You should remove any text outside the PHP tags also in the
required file.
--
René
comunica2.com
Web Hosting, design and translations

<?php
session_start();
// *** Validate request to login to this site.
//session_start();
// Report all PHP errors (bitwise 63 may be used in PHP 3)
error_reporting(E_ALL);
?> HERE > <?php require_once('Connections/conn_newland.php'); ?> HERE >
HERE >
HERE > <?php

// *** Validate request to login to this site.
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}

if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['pwd'];
$MM_fldUserAuthorization = "userGroup";
$MM_redirectLoginSuccess = "index.php";
$MM_redirectLoginFailed = "login_failed.php";
$MM_redirecttoReferrer = true;
mysql_select_db($database_conn_newland, $conn_newland);

$LoginRS__query=sprintf("SELECT username, pwd, userGroup FROM
tbl_users WHERE username='%s' AND pwd='%s'",
get_magic_quotes_gpc() ? $loginUsername :
addslashes($loginUsername), get_magic_quotes_gpc() ? $password :
addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conn_newland) or
die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {

$loginStrGroup = mysql_result($LoginRS,0,'userGroup');

//declare two session variables and assign them
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;

//register the session variables
session_register("MM_Username");
session_register("MM_UserGroup");

if (isset($_SESSION['PrevUrl']) && true) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: ". $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

Jul 17 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.