台灣最大程式設計社群網站
線上人數
879
 
會員總數:245116
討論主題:189028
歡迎您免費加入會員
討論區列表 >> PHP >> 請教session
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請教session
價值 : 0 QP  點閱數:3465 回應數:4

樓主

阿福
初學者
799 904
8017 563
發送站內信

請教一下 如果我想要用session控制 讓他在login.php輸入帳號密碼
然後在進入report.php 點選要看的網頁 目前只有91年度的 那就進入
91.php 就可以看到pdf檔案  可是目前的問題在
當我在91.php按下"往前一頁" 他不是到report.php 而是返回login.php
請教一下 我的語法哪裡寫錯了呢
如果覺得下面的問題太長了 那這裡有網址
http://home.kimo.com.tw/jiannrongkimo/temp/phpforhelp.htm
麻煩你了

login.php的語法如下

<?php
require("lock_ip.php");           
getenv($REMOTE_ADDR);
$addr=$REMOTE_ADDR;
$flag=allow_ip($addr);
if(!$flag)
{
 header("Location:errorIP.htm");
}
?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>年度報告--登入</title>
<link rel="stylesheet" href="sample.css" type="text/css">
</head>
<body text="#004D00" link="#3333CC" vlink="#990099" alink="#CC0000">
<form name='login' method="post" action="login_action.php">
<table width=640>
<tr>
<td width="640" colspan="3" valign="top" height="170">
<p align="center"><img src="banner1.jpg" width="640" height="167">
</td></tr><tr>
<td class="block-head1">請先登入帳號
</tr></table><BR>
<table border=0 cellspacing=0>
<tr><td> 姓名:<input name="_name" type=text maxlength=10>
<td> 閱覽證號碼:<input name="_id_no"  type=text maxlength=14>
<td> <input name="enter" type=submit value="確定">
</tr></table></form></body></html>


login_action.php語法如下
<?php
  if(!isset($HTTP_REFERER))
  {
    header("Location:login.php");
  }   
  $hostName="localhost";
  $userName="wangyl2";
  $password ="db98763";  
  $databaseName="services23";
  $tableName="reader12";
  $sql_select="SELECT name,id_no FROM reader WHERE id_no ='$_id_no'";
  require("linkDB.php");                  //與資料庫連結
  $result=mysql_query($sql_select,$link);
  $row=mysql_fetch_array($result);
  if($row[0]== null)                      
  {
?>
   <CENTER>
     <img src=web3.gif width=640 height=162>
     <TABLE>
       <TR>
        <TD width=60%>很抱歉,你沒有瀏覽此網頁的權限</td>
       </TR>
     </TABLE>
   </CENTER>
<?php
  }
  else
  {
    if($_name==$row[0] && $_id_no==$row[1])     
    {
      session_start();
      session_register("user_name");
      session_register("user_id");
      session_register("start_time");
      $user_name = $_name;
      $user_id = $_id_no;
      $start_time = time();
?>
    <CENTER>
      <img src=web3.gif width=640 height=162><BR><BR>      
      進入<a href="report.php">「年度報告紀錄」</A>線上閱覽
    </CENTER>
<?php
    }
    else                                          //輸入的資料有誤
    {
?>
   <CENTER>
     <img src=web3.gif width=640 height=162>
     <TABLE>
       <TR>
        <TD width=70%>資料有錯,請重新輸入
        <TD><A href="login.php">回上一頁</a>
       </TR>
     </TABLE>
   </CENTER>
<?php
    }
  }
?>
<HTML>
<BODY bgcolor="#CCCC99" text="#004D00" >

</BODY>
</HTML>


report.php語法如下
<?php
  session_start(); 
  require("lock_ip.php");            
  getenv($REMOTE_ADDR);
  $addr=$REMOTE_ADDR;
  $flag=allow_ip($addr);
  if(!$flag)
  {
    header("Location:errorIP.htm");
  }

  if(isset($user_id))
  {
  $hostName="localhost";
  $userName="wangyl2";
  $password ="db98763";  
  $databaseName="services23";
  $tableName="reader12";
  $sql_select="SELECT name FROM reader WHERE id_no ='$user_id'";
  require("../linkDB.php");                  //與資料庫連結
  $result=mysql_query($sql_select,$link);
  $row=mysql_fetch_array($result);
  mysql_close($link);
  if((isset($user_name) && $user_name == $row[0]))  
    {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>年度報告</title>
<link rel="stylesheet" href="sample.css" type="text/css">
</head>
<body text="#004D00" link="#3333CC" vlink="#990099" alink="#CC0000">
<div align="center"><center>
    <table border="0" width="640" cellspacing="0" cellpadding="0">
      <tr>
        <td width="640" colspan="3" valign="top" height="170">
          <p align="center"><img src="banner1.jpg" width="640" height="167">
        </td>
      </tr>
      <tr>
        <td width="640" height="200" valign="top" bgcolor="#DDD788"> 
          <p class="head-red">91年年度報告(請用Acrobat Reader閱讀)</p>
          <ul>
            <li class="normalbady-1">
              <a href="91.php" class="normalbady-1">
              <span class="normalbady-1">91年工作報告</span></a></li>
          </ul>
        </td>
      </tr>
    </table>
</center></div>
</body>
</html>
<?php
    }
    else
    {
       session_destroy();
       header("Locaion:login.php");
    }
  }
  else
  {
    session_destroy();
    header("Location:login.php");
  } 
?>

91.php語法如下
<?php
  $hostName="localhost";
  $userName="wangyl2";
  $password ="db98763";  
  $databaseName="services23";
  $tableName="reader12";
  if(!$flag)
  {
    header("Location:errorIP.htm");
  }
  session_start(); 
  if(isset($user_id))
  {
  $hostName="localhost";
  $userName="wangyl2";
  $password ="db98763";  
  $databaseName="services23";
  $tableName="reader12";
    $sql_select="SELECT name FROM reader WHERE id_no ='$user_id'";
    require("../linkDB.php");                  //與資料庫連結
    $result=mysql_query($sql_select,$link);
    $row=mysql_fetch_array($result);
    mysql_close($link);
    if((isset($user_name) && $user_name == $row[0]))  
    {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>91年度報告</title>
<link rel="stylesheet" href="sample.css" type="text/css">
<script language="Javascript">
function loaded(){
if (onload)
self.moveTo(0,0);                        
self.resizeTo(800,600);                        
}
function unloaded(){
<?php
  session_destroy();                   
?>
}
</script>
</head>
<body text="#004D00" link="#3333CC" onload="loaded()" >
<center>
<img src=banner1.jpg width=640 height=167><BR>
<IFRAME src="91.pdf" name=up HEIGHT="480" WIDTH="600" ></IFRAME>
</center>
</body>
</html>
<?php
    }
    else
    {
       //session_destroy();
       header("Locaion:login.php");
    }
  }
  else
  {
    //session_destroy();
    header("Location:login.php");
  } 
?>

感謝您的幫忙

本篇文章發表於2002-12-09 17:12
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

june3838
檢舉此回應
問題似乎是出在這裡,因為你先register變數,但在這之前都沒有你註冊的三個變數名稱,所以那三個session應該不是你要的值。

可是…如果照你的說法,你又可以進入report.php,91.php,表示此三變數是有的…奇怪?

不過,你先試試把順序改一下,如下:  

  if($_name==$row[0] && $_id_no==$row[1])     
    {
      session_start();
      $user_name = $_name;
      $user_id = $_id_no;
      $start_time = time();
      session_register("user_name");
      session_register("user_id");
      session_register("start_time");

本篇文章回覆於2002-12-10 10:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿福
檢舉此回應
請教一下 我修改之後 仍然是同樣的情況
是不是session的保存時間太短了呢
我的系統是freebsd4.6+apache2+php4 
請教一下 我要如何修改php的session保存期限呢
謝謝
本篇文章回覆於2002-12-17 16:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

阿福
檢舉此回應
可是我參考
http://sy3es.tnc.edu.tw/teaching/php_mysql/e16-3-1.php
這裡的register是在給值之前............
本篇文章回覆於2002-12-17 16:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

阿福
檢舉此回應
原來是session_start()要在最前面
問題解決了
謝謝
本篇文章回覆於2002-12-18 15:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.