会话在两个PHP文件之间不起作用

伯纳德

我有两个php文件。第一个是:

<?php session_start(); ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?
$city= $_POST['city'];
$movie= $_POST['movie'];
$date = $_POST['date'];
$city = stripslashes($city);
$movie = stripslashes($movie);
$date = stripslashes($date);
$_SESSION['city'] = $city;
$_SESSION['movie'] = $movie;
$_SESSION['date'] = $date;
?>
<?php
//$q=$_GET["q"];

$con = mysql_connect('localhost', 'root', '');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("movie_booking", $con);
?>
<title>Book Ur Show</title>
<style type="text/css">
a:link {
    color:#ffffff;
    text-decoration: underline;
}
a:visited {
    color: #ffffff;
    text-decoration: underline;
}
html, body {height:100%; margin:0; padding:0;}

#page-background {position:fixed; top:0; left:0; width:100%; height:100%;}
#content {position:relative; z-index:1; padding:10px;}
</style>

</head>

<body>

<div id="page-background"><img src="images/main%20baclground.jpg" width="100%" height="100%" alt="Smile"></div>
<center>
<div class="container" style="width:800px" id="content">
  <div class="header"><img src="images/logo.png" width="177" height="61" longdesc="main.php" />                                 <!-- end .header --></div>
<center>
  <div class="content" style="background-image:url(); height:427px; color: #FFF;">
    <p align="right"><?php  $username = $_SESSION['myusername'];
  $sql= "select * from users_tbl where username='$username' and userlevel='9'"; 
  $result = mysql_query($sql);
  if($row = mysql_fetch_array($result))
  {
      echo "[<a href=\"admin.php\">Admin Center</a>]";
  }
  ?> [<a href="first.php">Main Page</a>] [<a href="logout.php">Logout</a>]</p><p align="left"><?php
$username = $_SESSION['myusername'];
echo "Welcome $username";
?></p>
  <form name="form1" action="book.php" method="post">
  <table width="200" border="0">
  <tr>
    <td>City</td>
    <td><input name="city" type="text" id="city" readonly="true" style="background-color:#000; color:#FFF" value="<? $sql="Select * from city where city_id='$city'";$sqlresult=mysql_query($sql);$row = mysql_fetch_array($sqlresult);$cityname=$row['city_name'];echo $cityname;?>" /></td>
  </tr>
  <tr>
    <td>Movie</td>
    <td><input name="movie" type="text" id="movie" readonly="true" style="background-color:#000; color:#FFF" value="<? $sql="Select * from movie where movie_id='$movie'" ;$sqlresult=mysql_query($sql);$row = mysql_fetch_array($sqlresult);$moviename=$row['movie_name'];echo $moviename;?>" />   </td>
  </tr>
  <tr>
    <td>Date</td>
    <?php echo var_dump($_SESSION['city']); ?>
    <td><input name="date" type="text" id="date" readonly="true" style="background-color:#000; color:#FFF" value="<? $sql="Select * from movie where date='$date' and movie_id='$movie' and city_id='$city'";$sqlresult=mysql_query($sql);$row = mysql_fetch_array($sqlresult);$date2=$row['date'];echo $date2;?>" /></td>
  </tr>
</table>
  <?php
    echo "<br><br>";

    //Art of MySQL
    $sql = "Select movie_name,theatre_id, date, showtiming from movie where 1";
    //Check if movie is not null
      if( strlen($movie)>0 )
      {
          $sql.= " and movie_id = $movie ";
      }
      if( strlen($city)>0 )
      {
          $sql.= " and city_id = '$city' ";
      }
      if( strlen($date)>0 )
      {
          $sql.= " and  date='$date' ";
      }
    $result = mysql_query($sql);
    echo "<table>";
    echo "<tr>
        <td width=\"100px\">Movie</td>
        <td width=\"100px\"> Theatre</td>
        <td width=\"100px\"> Date </td>
        <td width=\"100px\">Show Timing</td>
        <td width=\"100px\">Book Ticket</td></b>
        </tr>";
      if($result === FALSE) {
          die(mysql_error()); // TODO: better error handling
      }
    while($row = mysql_fetch_array($result))
    {
          echo "<form name=\"form1\" action=\"book.php\" method=\"post\">";
            $sql2 = "Select theatre_name from theatre where theatre_id=".$row['theatre_id']."";
            $result2 = mysql_query($sql2);
            $row2 = mysql_fetch_array($result2);
            $mname = $row['movie_name'];
            $tname = $row2['theatre_name'];
            $stime = $row['showtiming'];
            $date = $row['date'];
            echo "<tr>
            <td><input name=\"mname\" type=\"text\" id=\"mname\" readonly=\"true\" style=\"background-color:#000; color:#FFF\" value='$mname'/></td>
            <td><input name=\"tname\" type=\"text\" id=\"tname\" readonly=\"true\" style=\"background-color:#000; color:#FFF\" value='$tname'/></td>

            <td><input name=\"date\" type=\"text\" id=\"date\" readonly=\"true\" style=\"background-color:#000; color:#FFF\" value='$date'/></td>

            <td><input name=\"stime\" type=\"text\" id=\"stime\" readonly=\"true\" style=\"background-color:#000; color:#FFF\" value='$stime'/></td>
            <td align=\"center\"><input name=\"book\" type=\"submit\" value=\"Book\" /></td>
            </tr>";
            echo "</form>";
    }
    echo "</table>";
  ?>


  </form>
  </div>
    </center>

</body>
</html>

并且我检查$_SESSION['city']了设置是否正确,当用户稍后提交表单时,它将调用另一个php文件,该文件是:

<?php
session_start();
$city = $_SESSION['city'];
echo "hey".$_SESSION['city'];
if(isset($_SESSION['city'])){
    echo "is set";
}
?>

和输出是

heyis set

知道为什么我可以访问$ _session中的数据。赞赏任何想法。

编辑

正如亚历克斯所要求的

我添加到两个文件。在第一个文件末尾的最后一行中,我添加了

<?php echo var_dump($_SESSION); ?>

我得到

 array(8) { ["myusername"]=> string(6) "bkg988" ["password"]=> string(32) "827ccb0eea8a706c4c34a16891f84e7b" ["city"]=> string(1) "1" ["movie"]=> string(0) "" ["date"]=> string(0) "" ["data"]=> string(27) "you have an active session!" ["stime"]=> string(0) "" ["tname"]=> string(0) "" }

但是在第二个文件中我得到了

array(8) { ["myusername"]=> string(6) "bkg988" ["password"]=> string(32) "827ccb0eea8a706c4c34a16891f84e7b" ["city"]=> string(0) "" ["movie"]=> string(0) "" ["date"]=> string(0) "" ["data"]=> string(27) "you have an active session!" ["stime"]=> string(0) "" ["tname"]=> string(0) "" }
亚历克斯·里特纳

问题是(在您进一步的调试中已证明)在您的第一个文件顶部的这段代码

<?
$city= $_POST['city'];
$movie= $_POST['movie'];
$date = $_POST['date'];
$city = stripslashes($city);
$movie = stripslashes($movie);
$date = stripslashes($date);
$_SESSION['city'] = $city;
$_SESSION['movie'] = $movie;
$_SESSION['date'] = $date;
?>

发生了什么事,当您将表单过帐到该页面时,所有工作均按预期进行。分配了值,并且当您$_SESSION在底部检查变量时可以使用。

如果您随后再次浏览带有$_POST数据的页面,因为数据$_POST为空,则您正在分配$_SESSION变量,即不存在变量的值。

因此,解决方案分为两部分。

首先,错误报告-打开错误报告。在开发时,应该始终报告错误(在尝试使用不存在的$ _POST变量的情况下,这将引发警告)

ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);

其次,在使用变量之前先检查它们是否存在-在使用变量之前检查$_POST变量(包括$ _POST本身)是否已设置。

if(isset($_POST))
{
  if(isset($_POST['city']))
  {
    $_SESSION['city'] = stripslashes($_POST['city']);
  }

  if(isset($_POST['movie']))
  {
    $_SESSION['movie'] = stripslashes($_POST['movie']);
  }

  if(isset($_POST['date']))
  {
    $_SESSION['date'] = stripslashes($_POST['date']);
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两个实体之间共享的主键不起作用

为什么两个DateTime对象之间的区别不起作用?

两个表之间的dlookup(嵌套dlookup不起作用)

为什么在pygame上两个运动对象之间的碰撞不起作用?

XML合并两个文件不起作用

两个窗口之间的电子ipcRenderer消息不起作用

主题在两个不相关的组件之间不起作用

为什么我的两个Integer-Values之间的比较不起作用?

rect.collisionrect在两个rect之间不起作用

Flutter异步/等待在两个Firebase功能之间不起作用

两个列表之间的IN运算符在oracle中不起作用

在两个单词之间使用最长的空格不起作用

在两个textview之间定位Seek栏不起作用

两个表之间的简单外部联接不起作用

EF6中的两个列表之间的区别,使用except不起作用

Z索引在两个菜单之间不起作用

两个模型之间的关联不起作用

查找类型为时间戳记的两个日期之间不起作用的记录

在两个图像之间切换对我不起作用?

发现两个日期代码之间的差异在Firefox(版本40.0.3)中不起作用

SQL在两个日期之间选择不起作用

两个日期在Excel中不起作用之间的小时数

PHP中两个地方之间的行驶距离不起作用

wordpress 中两个日期之间的 meta_query 不起作用

通知中心在两个视图之间不起作用

为什么两个 LocalDate 变量之间的比较不起作用?

解决方案对两个日期之间的天数不起作用

两个条件之间的 SetTimeInterval 不起作用

如何在两个活动之间传递对象(Seriazale 不起作用)