会话在Localhost中正常工作,但不能联机(Cpanel)


Session is working in Localhost Properly but not Online (Cpanel)

大家好,很抱歉我昨天的问题没有解决

然而,即使是你给出的建议,仍然没有奏效。我已经删除了除之外的所有空格

仍然向我展示了这个问题。它在localhost中运行得很好,但在CPANEL中不太好。

以下是给出的错误:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/scalepro/public_html/Admin Panel/Remote Employee/main.php:1) in /home/scalepro/public_html/Admin Panel/Remote Employee/main.php on line 1
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/scalepro/public_html/Admin Panel/Remote Employee/main.php:1) in /home/scalepro/public_html/Admin Panel/Remote Employee/main.php on line 1
    Warning: Cannot modify header information - headers already sent by (output started at /home/scalepro/public_html/Admin Panel/Remote Employee/main.php:1) in /home/scalepro/public_html/Admin Panel/Remote Employee/main.php on line 13
    Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
ANY ONE PLEASE ???
Here is my code:
    <?php session_start(); 
    require_once('../../Admin Panel/db.php');
    if(isset($_POST['email']) && !empty($_POST['email']) && isset($_POST['password']) && !empty($_POST['password']))
    {
     $email = $_POST['email'];
     $password = $_POST['password'];
     $query="SELECT RemoteEmployeeFullName, RemoteEmployeeEmail, RemoteEmployeePassword FROM remoteemployees WHERE RemoteEmployeeEmail='".$email."' AND RemoteEmployeePassword='".$password."'";
     $queryrun=$connection->query($query);
     if($queryrun->num_rows > 0)
     {
         $_SESSION['email']=$RemoteEmployeeFullName;     
         header("Location: /home/scalepro/public_html/Admin Panel/Remote Employee/REPLists.php");
     }
     else
     {
        echo 'Email: <b>'.$email. '</b> or Password <b>'. $password.'</b> Is Not Typed Correctly Try Again Please!.';
        header( "refresh:5;url= /home/scalepro/public_html/spd/myaccount.php" );
     }
    }
    else
    {
        header( "refresh:5;url= /home/scalepro/public_html/spd/myaccount.php" );
    }
    ?>

如果条件为true,它将被重定向到一个名为REPLists.php 的页面

这是页面。

<?php session_start();
require_once('../../Admin Panel/db.php');
?>
<html>
<head>
<style>
.wrapper
{
  width:1250px;
  height:auto;
  border:solid 1px #000;
  margin:0 auto;
  padding:5px;
  border-radius:5px;
  -webkit-border-radius:5px;
  -moz-border-radius:5px;
  -ms-border-radius:5px;
}
.wrapper .header
{
  width:1250px;
  height:20px;
  border-bottom:solid 1px #f0eeee;
  margin:auto 0;
  margin-bottom:12px;
}
.wrapper .header div
{
text-decoration:none;
color:#F60;
}
.wrapper .header div a
{
text-decoration:none;
color:#F60;
}
.wrapper .Labelcon
{
  width:1250px;
  height:29px;
  border-bottom:solid 1px #ccc;
}
.wrapper .Labelcon .Label
{
  width:125px;
  height:20px;
  float:left;
  text-align:center;
  border-left:1px solid #f0eeee;
  font:Verdana, Geneva, sans-serif;
  font-size:14.3px;
  font-weight:bold;
}
.wrapper .Valuecon
{
  width:1250px;
  height:29px;
  border-bottom:solid 1px #ccc;
  color:#F60;
  text-decoration:none;
}
.wrapper .Valuecon .Value
{
  width:125px;
  height:20px;
  float:left;
  text-align:center;
  border-left:1px solid #f0eeee;
  font-size:14px;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="header">
<div style="float:left;"><font color="#000000">Email: 
</font>
<?php 
if(isset($_SESSION['email']))
{
echo $_SESSION['email'];
}
?>
</div>
<div style="float:right;">  <a href="#">My Profile</a> | <a href="logout.php">Logout</a></div>
</div>

<div class="Labelcon">
  <div class="Label">Property ID</div>
  <div class="Label">Property Type</div>
  <div class="Label">Property Deal Type</div>
  <div class="Label">Property Owner</div>
  <div class="Label">Proposted Price</div>
</div>
<?php
if(!isset($_SESSION['email']))
{
  header('Location:../../spd/myaccount.php');
}
else
{
  $query = "SELECT 
   properties.PropertyID,
   properties.PropertyType,
   properties.PropertyDealType,
   properties.Status,
   properties.PropostedPrice,
   remoteemployees.RemoteEmployeeFullName,
   propertyowners.PropertyOwnerName,
   propertydealers.PropertyDealerName
   FROM remoteemployees,
        propertyowners,
        propertydealers,
        properties
   WHERE 
   properties.PropertyOwnerID=propertyowners.PropertyOwnerID
   AND properties.PropertyDealerID=propertydealers.PropertyDealerID
   AND remoteemployees.RemoteEmployeeID=properties.RemoteEmployeeID

   ORDER BY properties.PropertyID
   ";
  $query_run = $connection->query($query);
  if( $connection->error ) exit( $connection->error );
  while($row=$query_run->fetch_assoc()) 
  {
?>
<div class="Valuecon">
  <div class="Value"><?php echo $row['PropertyID'] ?></div>
  <div class="Value"><?php echo $row['PropertyType'] ?></div>
  <div class="Value"><?php echo $row['PropertyDealType']?></div>
  <div class="Value"><?php echo $row['PropertyOwnerName'] ?></div>
  <div class="Value"><?php echo $row['PropostedPrice'];?></div>
</div>
<?php } }?>
</div>
</body>
</html>

您需要将ob_start()放在脚本的开头,将ob_flush()放在末尾。它这样做是因为您的标头已经发送,并且session_start将抛出错误,因为它试图发送另一个标头参数。

<?php 
  // ob_start holds data in the script, 
  // instead of sending data in pieces
  ob_start();
  // your php code
  // ob_flush sends all the data to the browser
  ob_flush();
?>

编辑:还有任何空白,<?php之前或?>之后的html代码,php标记都可能导致此错误。关于这个问题,这里有一个很好的答案,在SO已经由PHP

发送的头中

确保session_start()之前没有空白或文本输出。

对我来说,解决方案是删除<?php session_start()之前已经删除的任何代码。至少你是这么想的。在编写了一些代码之后,我的index.php中包含了我的头。我从header中删除了session_start,并将其作为index.php或任何其他main.php文件中的第一个代码。

<?php ob_start();if(!isset(session)){session_start();}
else echo "Session Started already, bro!?>