2014-05-19 35 views
0

我有兩個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) "" } 

回答

1

問題是這段代碼在你的第一個文件

<? 
$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']); 
    } 
} 
1

嘗試生態以下,以查看是否他們得到變量

$city= $_POST['city']; 
$movie= $_POST['movie']; 
$date = $_POST['date']; 

,或使用$_REQUEST代替$_POST

+0

我從第一個文件收到這些數據,但問題是我需要初始化我的會話變量以便將來使用它們。 – Bernard

+0

如果你在第二個文件(你想要檢索會話的地方)中回顯變量,並且你得到了數據,那麼就可以了。否則你還沒有註冊會話變量 –