【问题标题】:logical error in last visited page(COOKIE) and current search page in php上次访问页面(COOKIE)和 php 中的当前搜索页面中的逻辑错误
【发布时间】:2011-01-04 07:47:11
【问题描述】:


我有一个页面 (index.php),我在其中显示从 db 获取的最新事件和页面顶部的搜索框,如果有人搜索任何事件,那么所有与搜索有关的事件都会在页面上显示名称和链接。现在我需要什么

  1. 如果我们搜索某个事件并转到该事件页面并返回 (index.php) 则应显示最后一个搜索结果...现在如果我返回则显示最新事件。
  2. 如果我们当时去特定事件并关闭浏览器(或返回并关闭),如果再次打开该站点,我需要在 index.php 上显示上次访问的事件页面链接
  3. 如果我们第一次访问页面(或在 cookie 过期后),那么所有最新事件(现在只有 4 个最新事件)都应该显示。
  4. 如果我们搜索但未找到,则显示“未找到事件”并请求再次搜索。

    目前第2点和第4点已经覆盖成功,但是第3点还没有完成,请以适当的方式提出我的逻辑条件,并建议我为第1点做什么

下面是我页面的主要代码

索引.php

<form action="<?=$_SERVER['PHP_SELF'];?>" method="get" accept-charset="utf-8">              
    <input type="text"  name="keyword" id="keyword"  placeholder="Search for Event" value="">           
    <input type="submit" name="submit" id="submit" value="Search" >     
</form>

if(empty($_GET['keyword']) && !isset($_SERVER['HTTP_REFERER'])) {
   if(!empty($_COOKIE['LAST_EVENT_ID'])) { ?>
       <div class="module list">
        <ul id="people">
            <li>
            <a href="eventinfo.php?evt_id=<?=$_COOKIE['LAST_EVENT_ID'];?>&evt_name=<?=$_COOKIE['LAST_VISITED_EVENT'];?>">           
            <h2><?=$_COOKIE['LAST_VISITED_EVENT']?></h2>                    
                </a>
            </li>
         </ul>
       </div>
<?php } } 
// Note count($eventItems)==4 ( by default latest events)       
    else if(count($eventItems) == 0) { ?>       
       <h2>No Events found, please Search again</h2>
<?php } 
      else { 
 ?> 
     <div class="module list">
     <ul id="people">
<?php    foreach($eventItems as $value) { ?>
         <li>
            <a href="eventinfo.php?evt_id=<?=$value->event_id?>&evt_name=<?=$value->name?>">            
            <h2><?=$value->name?></h2>                  
            </a>
         </li>          
 <?php      } ?> 
   </ul>
  </div>

eventinfo.php

<?php ob_start();
$evt_id=$_GET['evt_id'];
$evt_name=$_GET['evt_name'];
define('SITE_PATH','http://localhost/hello_world/');    
define('EVENT_ID',$evt_id);
/* first remove old cookie value */
//setcookie("LAST_EVENT_ID",EVENT_ID, time()-3600*24*7);
//setcookie("LAST_VISITED_EVENT", $evt_name, time()-3600*24*7);

setcookie("LAST_EVENT_ID", EVENT_ID, time()+3600*24*7);
setcookie("LAST_VISITED_EVENT", $evt_name, time()+3600*24*7);

if (is_dir($evt_name)){
    header("location:".EVENT_PATH);
}
else{
    header("location:event_detail.php");
}


?>

请告诉我如何修改我的 if else 条件以满足上述所有要点

谢谢

更新

我还为所有情况创建了真值表,请帮助我开发逻辑.. 这是truth table的链接

【问题讨论】:

    标签: php search cookies


    【解决方案1】:

    改变

    <li>
        <a href="eventinfo.php?evt_id=<?=$_COOKIE['LAST_EVENT_ID'];?>&evt_name=<?=$lastEventDetail['name'];?>">         
            <h2><?=$lastEventDetail['name']?></h2>                  
        </a>
    </li>
    

    <li>
        <a href="eventinfo.php?evt_id=<?=$_COOKIE['LAST_EVENT_ID'];?>&evt_name=<?=$_COOKIE['LAST_VISITED_EVENT'];?>">         
            <h2><?=$_COOKIE['LAST_VISITED_EVENT']; ?></h2>                  
        </a>
    </li>
    

    它们对于 $lastEventDetail['name'] 没有任何价值 .. 最后一个事件名称在 cookie 中

    【讨论】:

    • 但这不是问题...我对 if else 条件感到困惑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2013-03-05
    • 2017-02-01
    • 2011-08-07
    相关资源
    最近更新 更多