2017-03-27 14 views
0

問題が発生しています。セッションをクリックするたびに異なるIDを保存しようとしていますが、セッションからこれをフェッチしている間は常に1つのID(i.e-the first saved one.)が表示されています。私は以下のコードを説明しています。PHPを使用して正しくセッション中のIDを保存できません

アンカータグをクリックしている間、それぞれのIDは下記のajaxコールによってセッションに保存されます。

function keepSection(id){ 
     var url="common.php?action=savecid"; 
     $.post(url,{"cat_data":id},function(data){ 
      var obj=JSON.parse(data); 
      console.log('data',obj); 
      if(obj.isData==1){ 
       var v = jQuery("#fyndspaceownsec").validate({ 
       }); 
       if (v.form()) { 
        $(".frm").hide("fast"); 
        $("#sf2").show("slow"); 
       } 
      } 
     }) 

     } 

common.phpの:

$action = $_REQUEST['action']; 
$result=array(); 
if($action=='savecid'){ 
    $id=$_POST['cat_data']; 
    session_start(); 
    if(isset($_SESSION['cid']) && !empty($_SESSION['cid'])){ 
     unset($_SESSION['cid']); 
     $_SESSION['cid']=$id; 
     $flag="true"; 

    }else{ 
     $_SESSION['cid']=$id; 
     $flag="false"; 
    } 
    $result=array("isData"=>1,"cid"=>$_SESSION['cid'],"flag"=>$flag); 
    echo json_encode($result); 
} 

ここに私がsession.AtにするたびにIDを格納しています私はセッションをクリアして、私がしようとしている新しいid.Whenを格納していますクリックしてくださいクリックするたびに最初に保存されたidを1つだけ表示します。

<div class="fyndspacecategory fyndsheightsubc nano"> 
<div class="nano-content"> 
    <?php 
    echo $_SESSION['cid']; 

?> 

私の完全なコードは以下のとおりです。ユーザが第2の部分のdivセクションが表示され、セッションからIDを取得しますnextボタンをクリックします。ここ

<div class="fynd-space-itms"> 
<?php 
$classarr = array("item-exhibitation maploc", "item-parking maploc", "item-offices maploc", "item-storage maploc"); 
$sql="select * from category order by id desc"; 
                 $catdata=$dbobj->db_get_data($sql); 
$counter=0; 
foreach ($catdata as $v) { 
?> 
<div class="col-sm-3"> 
<a href="javascript:void(0)" class="<?php echo $classarr[$counter];?>" onClick="keepSection('<?php echo $v['id']; ?>');"><?php echo $v['name'] ?></a><!-- activemap1 --> 
</div> 
<?php 
    $counter++; 
if($counter==4){ 
    $counter=0; 
} 
} 
<button class="btn nextbtnbgdiv open2" type="button">Next <span class="fa fa-arrow-right"></span></button> 
<div class="fyndspacecategory fyndsheightsubc nano"> 
    <div class="nano-content"> 
     <?php 
     echo $_SESSION['cid']; 

    ?> 
</div> 
</div> 

と仮定初めてセッションに保存されたid=16をクリックしてechoは値16を印刷し、二度目にid=17がセッションに保存されますが、この時間もecho値は私の問題である16を来てクリックします。私は毎回古いIDをクリックして新しいIDを保存する必要がありますし、echoは毎回新しい値を印刷する必要がありますクリックする必要があります。私を助けてください。

session_start(); 
if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) { 
    echo 'Set and not empty, and no undefined index error!'); 
} 
else 
{ 
echo "session is not set"; 
} 

あなたがにsession_startを呼び出していることを確認してください:

session_start(); 
if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) { 
    echo 'Set and not empty, and no undefined index error!'); 
} 

array_key_existsキーをチェックするためにISSETを使用しての素敵な代替手段です:

+0

http://stackoverflow.com/questions/11768816/php-session-variables-not-preserved-with-ajax – yogesh84

答えて

0

あなたはISSETと空を使用しますセッション配列を読み書きする前に

+0

確認してお知らせください。 – subhra

+0

同じ問題です。以前のIDをクリアしません( 'unset($ _ SESSION ['cid']);')。 – subhra

+0

あなたは、その条件が満たされているかどうかを確認する必要があります –

関連する問題