php session vars

时间:2011-12-01 04:29:59

标签: php session

我正在为我的网站处理新闻档案页面,搜索档案是以开始日期,结束日期和新闻类别作为搜索参数完成的。表单值存储在$ _SESSION var中,然后它们作为数组传递以用于分页和其他目的。 我的问题是如果用户由于某种原因再次进行新的搜索,如何防止在主存档搜索页面上显示搜索结果。

这是代码

<?php 
session_start();
if (isset($_POST['submit'])) {
    //get data from the form
    $archFld_1 = $_POST['archiveFld1'];
    $archFld_2 = $_POST['archiveFld2'];
    $archFld_3 = $_POST['archiveFld3'];
   //just some check on fields
   if (strlen($archFld_1) > 10) { $archFld_1 = ""; }
   if (strlen($archFld_2) > 10) { $archFld_2 = ""; }
   //save them as a array and store to session var
   $_archValues = array($archFld_3, $archFld_1, $archFld_2);
   $_SESSION['storeValues'] = $_archValues;
}
if (isset($_SESSION['storeValues'])) {
    //check params for search
    //set cat for query
    if ($_SESSION['storeValues'][0] > 0) { $valCat = "AND newsCat=".     $_SESSION['storeValues'][0] ." "; } else { $valCat = ""; }
    //set date for query
    if(($_SESSION['storeValues'][1] != "" ) && ($_SESSION['storeValues'][2] == "")) {
        $DateStart = $_SESSION['storeValues'][1];
        $valDate = " AND STR_TO_DATE(newsDate, '%d-%m-%Y') >= STR_TO_DATE('$DateStart', '%d-%m-%Y') ";
    }
    if(($_SESSION['storeValues'][2] != "") && ($_SESSION['storeValues'][1]=="")) {
        $DateEnd = $_SESSION['storeValues'][2];
        $valDate = " AND STR_TO_DATE(newsDate, '%d-%m-%Y') <= STR_TO_DATE('$DateEnd', '%d-%m-%Y') ";
    }
    if(($_SESSION['storeValues'][1]!="") && ($_SESSION['storeValues'][2] != "")) {
        $DateStart = $_SESSION['storeValues'][1];
        $DateEnd = $_SESSION['storeValues'][2];
        $valDate = " AND STR_TO_DATE(newsDate, '%d-%m-%Y') BETWEEN STR_TO_DATE('$DateStart', '%d-%m-%Y') AND STR_TO_DATE('$DateEnd', '%d-%m-%Y') ";
    }
    //query string and stire it to session
    $archQuery_string = $valCat.$valDate;
    $_SESSION['storeQuery'] = $archQuery_string;
}
//pagination start
$page = $_GET['id'];
$perPage = 10;
$result = wbQuery("SELECT * FROM wb_news WHERE newsLang=1 ". $_SESSION["storeQuery"] ."ORDER BY newsId DESC"); 
$totalPages = mysql_num_rows($result);
if(!$page)
$page = 1;
$start = ($page - 1)*$perPage;
?>
    <div id="sps_middle">
        <div class="sps_cnt">
            <div id="sps_middle_ly1">
                <div class="sps_cnt_small">
                    <div class="sps_page_title"><h3><?php echo $wb_lng['txtArchiveTitle']; ?></h3></div>
                        <div class="sps_pages_cnt" style="padding-top: 10px; float: left; margin-bottom: 15px;">
                            <div class="sps_middle_col01">
                                <div style="float: left;">
                                <p>
                                    <?php echo $wb_lng['txtArchiveInfo']; ?>
                                </p>
                                    <form action="<?php $PHP_SELF; ?>" method="post" name="archiveForm" class="archiveForm">
                                        <ul>
                                            <li>
                                                <input name="archiveFld1" type="text" id="archiveFld1" value="<?php echo $wb_lng['txtArhivaFld_01']; ?>" />
                                                <input name="archiveFld2" type="text" id="archiveFld2" value="<?php echo $wb_lng['txtArhivaFld_02']; ?>" />
                                                <select name="archiveFld3">
                                                    <option value="0"><?php echo $wb_lng['txtArhivaFld_07']; ?></option>
                                                    <option value="0" ><?php echo $wb_lng['txtArhivaFld_06']; ?></option>
                                                    <option value="1"><?php echo $wb_lng['txtArhivaFld_03']; ?></option>
                                                    <option value="2"><?php echo $wb_lng['txtArhivaFld_04']; ?></option>
                                                    <option value="3"><?php echo $wb_lng['txtArhivaFld_05']; ?></option>
                                                </select>
                                            </li>
                                            <li style="float: right;">
                                                <input name="reset" type="reset" class="sps_archiveform_btn" value="<?php echo $wb_lng['txtArchiveFormReset']; ?>"/>
                                                <input name="submit" type="submit" class="sps_archiveform_btn" value="<?php echo $wb_lng['txtArchiveFormSend']; ?>"/>
                                            </li>
                                        </ul>
                                    </form>
                                </div>
                                <hr />
<?php
if (#HERE GOES SOME CODE TO PERFORM THE CHECK!!!#) {
    //perform db query
    $result = wbQuery("SELECT * FROM wb_news WHERE newsLang=1 ". $_SESSION['storeQuery'] ."ORDER BY newsId DESC LIMIT $start, $perPage"); 
    //count rows
    $totalnews = mysql_num_rows($result);
    $count = 1;
    if($totalnews == 0) {
        //no results, say to the user
        echo "\t\t\t<div class=\"cil_news_text_big\">\n\t\t\t\t".$wb_lng['txtArchiveNoEntries']."\n\t\t\t</div>\n";
    } else {
        //we have results, yeeeeeeeeey
        while($ROWnews = mysql_fetch_object($result)){
            //set link extensions by the news cat
            switch ($ROWnews->newsCat) {
                case 1:
                    $newsCat_link = "news";
                    break;
                case 2:
                    $newsCat_link = "statements";
                    break;
                case 3:
                    $newsCat_link = "events";
                    break;
            }
            //text summary
            if (strlen($ROWnews->newsShort) > 0 ) {$newsShortTxt = strip_tags($ROWnews->newsShort);
                if ($lang_id==2) { $newsShortTxt =  wbTranslit($newsShortTxt); }
            } else {
                $newsShortTxt = strip_tags($ROWnews->newsFull);
                if ($lang_id==2) { $newsShortTxt = wbTranslit($newsShortTxt); }
            }
            $newsShortTxt = wbShorTxt($newsShortTxt, 210, "... <a title=\"".$wb_lng['txtShowMore']."\" href=\"http://".$_SERVER['HTTP_HOST']."/".$lang_link."/".$newsCat_link."/".$ROWnews->newsId."/full/\">".$wb_lng['txtShowMore']."...</a>");
            //show news
            echo "\t\t<div class=\"sps_news_list\">\n";
            echo "\t\t<div class=\"sps_news_l\">\n";
            echo "\t\t\t<img alt=\"\" src=\"http://".$_SERVER['HTTP_HOST']."/content/images/news/_thumb/".$ROWnews->newsImageThumb."\" />\n";
            echo "\t\t</div>";
            echo "\t\t<div class=\"sps_news_r\">\n";
            //transliterate title
            if ($lang_id==2) { $newsTitle =  wbTranslit($ROWnews->newsTitle); } else { $newsTitle =  $ROWnews->newsTitle; } 
            echo "\t\t\t<div class=\"sps_news_title\">\n\t\t\t\t<a title=\"".$newsTitle."\" href=\"http://".$_SERVER['HTTP_HOST']."/".$lang_link."/".$newsCat_link."/".$ROWnews->newsId."/full/\">".$newsTitle."</a>\n\t\t\t</div>\n";
            echo "\t\t\t<div class=\"sps_news_date\">\n\t\t\t\t".$ROWnews->newsDate."\n\t\t\t</div>\n";
            echo "\t\t\t<div class=\"sps_news_text_sh\">\n\t\t\t\t".$newsShortTxt."\n\t\t\t</div>\n";
            echo "\t\t</div>";
            echo "\t\t</div>";
            //show <hr /> based on $count
            if($totalnews != $count) { echo "\t\t\t<hr />\n"; }
            $count++;
        }
    }
//pagination check
if($totalPages>$perPage) {
?>
                                <hr />
                                <div class="sps_pagginate">
                                   <?PHP wbPageTurnFront($PHP_SELF."/".$lang_link."/archive/", $totalPages, $page, $perPage); ?>
                                </div>
<?php 
    }
}
?>

有什么想法吗? Tnx:)

1 个答案:

答案 0 :(得分:0)

如果用户要进行新的搜索,那么您可以在那时清除会话。

unset($_SESSION['storeValues']);