Connecting Tech Pros Worldwide Forums | Help | Site Map

header/session start question

John
Guest
 
Posts: n/a
#1: Jul 17 '05
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 );
}
}
?>




Janwillem Borleffs
Guest
 
Posts: n/a
#2: Jul 17 '05

re: header/session start question


John wrote:[color=blue]
> 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?
>[/color]

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



John
Guest
 
Posts: n/a
#3: Jul 17 '05

re: header/session start question


On Sun, 24 Oct 2004 09:22:26 +0200, A strange species called
"Janwillem Borleffs" <jw@jwscripts.com> wrote:
[color=blue]
>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[/color]

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 );
}
}
?>


Theo
Guest
 
Posts: n/a
#4: Jul 17 '05

re: header/session start question


John <dog@tanion.com> wrote in
news:ho2on0hnemgml4nfuppfst1ct8fu53hk8c@4ax.com:
[color=blue]
> On Sun, 24 Oct 2004 09:22:26 +0200, A strange species called
> "Janwillem Borleffs" <jw@jwscripts.com> wrote:
>[color=green]
>>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[/color]
>
> 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 );
> }
> }
> ?>
>
>[/color]

whats in your require_once file?
John
Guest
 
Posts: n/a
#5: Jul 17 '05

re: header/session start question


On Sun, 24 Oct 2004 20:39:13 -0000, A strange species called Theo
<invalid@noemail.com> wrote:
[color=blue]
>John <dog@tanion.com> wrote in
>news:ho2on0hnemgml4nfuppfst1ct8fu53hk8c@4ax.com :
>[color=green]
>> On Sun, 24 Oct 2004 09:22:26 +0200, A strange species called
>> "Janwillem Borleffs" <jw@jwscripts.com> wrote:
>>[color=darkred]
>>>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[/color]
>>
>> 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 );
>> }
>> }
>> ?>
>>
>>[/color]
>
>whats in your require_once file?[/color]

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


Theo
Guest
 
Posts: n/a
#6: Jul 17 '05

re: header/session start question


John <quak@duck.com> wrote in news:r83pn091afpila6kb4kg8uj6k4bcajijcl@
4ax.com:
[color=blue]
> 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[/color]

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.
René
Guest
 
Posts: n/a
#7: Jul 17 '05

re: header/session start question


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

[color=blue]
> <?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);
> ?>[/color]
HERE >[color=blue]
> <?php require_once('Connections/conn_newland.php'); ?>[/color]
HERE >
HERE >
HERE >[color=blue]
> <?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 );
> }
> }
> ?>
>
>[/color]


Closed Thread