【问题标题】:php: session not working while running live on serverphp:在服务器上实时运行时会话不工作
【发布时间】:2013-12-15 09:44:50
【问题描述】:

我正在开发一个 PHP 项目。我有一个奇怪的错误。我的 PHP 项目在本地服务器(WAMP 服务器)上运行良好。但是在将其托管在实时服务器上之后,它就无法正常工作了。

问题:Login.php 页面上创建的会话变量未在Report.php 页面上传递值。代码如下:

Login.php

<?php
$con=mysql_connect("mysql51****************","username","password")or die(mysql_error());
$select_db=mysql_select_db("database_name",$con);
$error="";

if(isset($_POST['submit']))
{
    $userid=mysql_real_escape_string($_POST['username']);
    $password=mysql_real_escape_string($_POST['password']);
    $sql="SELECT * FROM user_details WHERE user_name='{$userid}' AND password='{$password}' ";

    $result = mysql_query($sql);
    if(mysql_num_rows($result) <= 0)
    {
        $error="Invalid UserId or Password.";
    }
    else
    {
        //session_set_cookie_params(60*60*60, '/', '.abcxyz.com');
        ini_set('session.cookie_domain','.abcxyz.com');
    session_start();
    //$userid=mysql_real_escape_string($_POST['abc']);
    //echo($userid);
    $_SESSION['user']=$userid;
    $_SESSION['userid']="true";
    //echo $_SESSION['userid'];
    $error="Successfully Login";
    //header("Location: admin.php?page=report");
    /*echo '<script type="text/javascript">alert("header is not working.' . $_SESSION['user'] . '");</script>';
*/  ?>
    <script type="text/javascript">
        /*alert("Please select a Source And Destination Country");  */
        window.location.href='admin.php?page=report';
    </script>       
<?php

    }
}
?>

<br />

  <h1 style="text-align:center">Login</h1>
  <form  class="login"  action="login.php" method="post" name="form1" id="form1">
  <p>Username:</p>
      <input class="login-input" type="text" name="username" value=""/>

    <p> Password : </p>
      <input class="login-input" type="password" name="password" value=""/>

  <p>
    <p style="color:#F00; font-size:12px; font-weight:100"><?php echo htmlentities($error); ?>  </p>
    <input  class="login-submit" type="submit" name="submit" value="Login"/>    
</form>

Report.php

<?php
include("connections/Connections.php");
/*$con=mysql_connect("localhost","admin","")or die(mysql_error());
$select_db=mysql_select_db("test",$con);*/
/*session_start();
if(session_is_registered('test'))
{
    echo"registered";
}
else
{
    header("Location: login.php");
}*/

//$user=$_SESSION['userid'];

$user=$_SESSION['userid'];
echo '<script type="text/javascript">alert("header is not working.' .$user . '");</script>';
if($user=="true")
{
    //echo " Logining Successfully.";
}
else
{
    ?>

    <script type="text/javascript">
        //alert("Please select a Source And Destination Country");  
        window.location.href='login.php';
    </script>
<?php
    //header("Location: login.php");
}
?>
<?php
/*session_start();
$user=$_SESSION['userid'];
echo($user);
if($user=="Admin")
{
    echo " Logining Successfully.";*/

$sql="SELECT * FROM register ";
if(isset($_POST['btnfilter']))
{
    $search_term=mysql_real_escape_string($_POST['search_text']);
    $answer = $_POST['filter'];  
    if ($answer == "ID") {          
        $sql .="WHERE id= '{$search_term}' ";
    }
    elseif ($answer == "Name") {          
        $sql .="WHERE fullname Like '%{$search_term}%'";
    }
    elseif ($answer == "DOB") {          
        $sql .="WHERE dob Like '%{$search_term}%' ";
    }
    elseif ($answer == "Occupation") {          
        $sql .="WHERE occupation Like '%{$search_term}%' ";
    }
    else
    {
        echo("Pealse Enter a valid value"); 
    }
}
elseif(isset($_POST['btnrmfilter']))
{
    $sql="SELECT * FROM register";
}

$query=mysql_query($sql) or die(mysql_errno());
//}
/*else
{
    header('Location: /login.php');
}*/
?>

<style type="text/css">
    table
    {
        font-size:12px;border-bottom:1px solid #ccc;
    border-left:1px solid #ccc}
    td 
    { 
    padding:5px 3px;
    border-top:1px solid #ccc;
    border-right:1px solid #ccc}
</style>

  <div class="content">
  <h1>Data Reading From database.</h1>
  <form id="search_form" method="post" action="">
  <div class="radio">
      <input type="radio" name="filter" value="ID" />ID
      <input type="radio" name="filter" value="Name" />Name
      <input type="radio" name="filter" value="DOB"/>DOB
      <input type="radio" name="filter" value="Occupation"/>Occupation<br />
  </div>
  <div class="input" >
      <input   type="text" name="search_text" value=""/>
      <input  type="submit" value="FilterData" name="btnfilter" />     
      <input  type="submit" value="RemoveFilter" name="btnrmfilter" />
  </div>
  </form>

    <table border="0" cellpadding="0" cellspacing="0">
     <colgroup> 
    <col width="2%" style="color:#f60" valign="middle" align="center" >
    <col width="12%" >
    <col width="8%" >
    <col width="5%" align="center" >
    <col width="10%" >

    </colgroup>
      <tr style="background:#eee; height:30px;">
        <td>ID</td>
        <td>Name</td>
        <td>DOB</td>
        <td>Nationality</td>
        <td>Mobile No</td>
        <td>Phone No</td>
        <td>Email</td>
        <td>Education</td>
        <td>Occupation</td>
        <td>Comment</td>
        <td >Noofexp</td>
      </tr>

        <?php while($row = mysql_fetch_array($query)) { ?>
          <tr>
          <td><?php echo $row['id']; ?></td>
          <td><?php echo $row['fullname']; ?></td>
          <td><?php echo $row['dob']; ?></td>
          <td><?php echo $row['nationality']; ?></td>
          <td><?php echo $row['mobno']; ?></td>
          <td><?php echo $row['phno']; ?></td>
          <td><?php echo $row['email']; ?></td>
          <td><?php echo $row['education']; ?></td>
          <td><?php echo $row['occupation']; ?></td>
          <td><?php echo $row['comment']; ?></td>
          <td><?php echo $row['noofexp']; ?></td>
        </tr>
        <?php } ?>
    </table>
    <h2>&nbsp;</h2>
    <h3>Thanks for view.</h3>

    <!-- end .content --></div>
  <div class="footer">
    <p>Footer</p>

<!-- end .footer --></div>
  <!-- end .container --></div>
</body>
</html>

编辑:

正如答案所建议的,我编辑如下:

Login.php:

<?php
session_start();
$con=mysql_connect("mysql51*************","username","password")or die(mysql_error());...
...

Report.php:

<?php
session_start();
include("connections/Connections.php");...
...

但我仍然没有在Report.php 中获得会话变量值。

【问题讨论】:

  • 你没有在Report.php中调用session_start()
  • 报错?你还需要说明你使用 windows/linux 的主机吗?

标签: php mysql session


【解决方案1】:

session_start(); 应该放在两个页面的顶部。

【讨论】:

  • 你检查过你的 phpinfo() 吗?
  • 是的,我已经检查过了。会话支持 - 已启用
  • @GovindaRajbhar 是 Windows 主机吗?请同时检查php.ini 中的session.save_path 并检查路径是否存在或echo ini_get('session.save_path');
  • 是的,我检查了 session.save_path,但我没有在服务器上获得正确的路径。但我不知道如何在服务器上提供服务器路径和存储会话。所以如果你有存储的想法服务器文件夹上的会话,所以请帮助我。
  • 你从session_path得到什么输出是目录存在吗?
【解决方案2】:

你检查过你的 phpinfo() 吗? 确保你有 会话支持 - 启用

【讨论】:

  • 是的,我已经检查过了。会话支持 - 已启用
【解决方案3】:

你必须在你的report.php页面中添加session_start();

【讨论】:

  • 不,我没有收到任何错误。只是我没有在 report.php 上获得会话变量值。正如您在我的代码中看到的那样,我也在通过警报检查该值。
【解决方案4】:

如果它在您的 WAMP 上成功运行,则问题很可能不是来自您的代码,而是来自您的托管公司。

类似的事情以前发生在我身上。

只需致电您的托管公司并告诉他们在他们的服务器上为您启用会话,他们就会为您启用。

并且总是在任何脚本之前首先启动会话,就像您在上面所做的那样。

  session_start();

享受

【讨论】:

    【解决方案5】:

    去尝试在你的代码中添加这个:

    if(!$con)
        {
            die('Could not connect:'. mysql_error());
        }
    

    看看错误是什么。

    【讨论】:

    • 对不起朋友,但连接没有任何问题。它正在工作。
    • 哦,我明白了...没看到那部分。 O.O
    【解决方案6】:

    很容易解决这个问题复制这段代码

    error_reporting(0);
    session_start();
    

    注意:如果您想了解这款手表,请在session_start(); 左侧留出空格video

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多