Reputation: 1
I am a newbie to PHP and have tried everything and also tried the forum threads to try and fix this but after a week - I feel I am no nearer.
The localhost version works fine - no problem. However, when I upload it, it presents me with the following messsage:
session_start(): Cannot send session cache limiter - headers already sent (output started at /home/idigital123/public_html/index.php:2) in /home/idigital123/public_html/index.php on line 41
Here is the code:
<?php require_once('Connections/idigitalconn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_idigitalconn, $idigitalconn);
$query_Recordset1 = "SELECT login.username, login.password FROM login";
$Recordset1 = mysql_query($query_Recordset1, $idigitalconn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "header/KS3Yr7.html";
$MM_redirectLoginFailed = "index.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_idigitalconn, $idigitalconn);
$LoginRS__query=sprintf("SELECT username, password FROM login WHERE username=%s AND password=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $idigitalconn) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
Upvotes: 0
Views: 864
Reputation: 3298
Linux uses \n
as line endings. However your file is using \r\n
(windows line endings). When sending data from server to your browser, some data is sended because of bad line endings. You can see it in editor with white characters display:
Change it to unix style and everything should work fine.
Upvotes: 0
Reputation: 633
What you need to check is:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
Instead of:
if (!isset($_SESSION)) {
session_start();
}
Also put it on top of your code as @Jay explained.
EDIT: In this part you need an absolute URL (as explained in documentaton: http://php.net/manual/es/function.header.php)
header("Location: " . $file);
So change it to (or the way you want the absolute path):
header("Location: http://" . $_SERVER["HTTP_HOST"] . "/" . $file);
Upvotes: 2
Reputation: 304
By the way make sure You don't have BOM (Byte Order Mark) attached to source files. It causes unwanted character appearing at the begining of the output.
Upvotes: 0
Reputation: 34426
session_start()
must go at the top of all of your PHP pages and not tested. Checking to see if a session variable is set before starting the session is "backwards".
Please, don't use mysql_*
functions, They are no longer maintained and are officially deprecated. Learn about prepared statements instead, and use PDO or MySQLi. This article will help you decide.
Upvotes: 0