由于会话user_id而退出时出现php错误

时间:2017-11-17 08:58:47

标签: php codeigniter session codeigniter-3

我正在创建一个产品详细信息页面,并且在产品详细信息页面上我正在查看是否有函数来查看$ _SESSION user_id是否与$ product user_id相同以回显某些内容,例如。当没有用户登录时,我收到很多错误,无法找到$ session user_id。我怎样才能解决这个问题,所以当没有用户登录时,它会像产品user_id的会话user_id错误一样吗?

例如:

<?php if ( $_SESSION['user_id'] != $product["user_id"]): ?>
 <h3>Email van de eigenaar:</h4>
<?php echo $userarray['email'];?>
       <?php endif; ?>
 </div>

因此,如果会话user_id对于产品user_id是错误的,我希望在没有找到$ _SESSION user_id的情况下发生同样的事情,这回应了这个:<?php echo $userarray['email'];?>

这是我的详细信息页面:

<?php include_once ('templates/header.php'); ?>

<div class="all-content">
       <div class="row">
        <div class="col-lg-12 bg-warning" style="font-size:25px">

            <!-- Maak variables voor gele balkje ingelogt of niet --> 
            <?php $overditcadeau = '<center>Over dit cadeau</center>'; ?> 
            <?php $mijncadeau = '<center>Mijn cadeau</center>'; ?> 

         <?php   if ($_SESSION['user_id'] != $product["user_id"]) { 
    echo $overditcadeau;
 } else { 
    echo $mijncadeau;
  } ?>



        </div>
        </div>
<div class="container">
    <br><br>


<?php    $userarray = $this->db->get_Where('users', array('user_id'=>$product["user_id"]))->row_array();  ?>


    <!-- Als het cadeau niet van de ingelogde gebruiker is laat email van de eigenaar van het cadeau zien -->
    <?php if ( $_SESSION['user_id'] != $product["user_id"]): ?>
 <h3>Email van de eigenaar:</h4>
<?php echo $userarray['email'];?>
       <?php endif; ?>
 </div>



<div class="container">
 <div class="row">



     <div class="overditcadeau" >
    <div class="overditcadeau_foto">
    <img src="<?php echo base_url(); ?>upload/<?php echo $product['product_foto']; ?>" id="cadeaufoto_overditcadeau">
</div>

<div class="overditcadeau_tekst1">
  <h1> <div class="product_naam"> <?php echo $product['product_naam']; ?>  </div> </h1>
   <h3>Over dit cadeau</h3>
     <div class="product_beschrijving"><?php echo $product['product_beschrijving']; ?> </div>
   </div>
   <div class="overditcadeau_tekst2">

       <!--Als het cadeau niet van de ingelogde gebruiker is laat een button zien dat heet cadeau aanvragen -->
       <div class="cadeau_aanvragen">
  <?php if ( $_SESSION['user_id'] != $product["user_id"]): ?>
     <a href="<?php echo base_url() ?>/Cadeau_ontvang"> <button type="button" class="btn btn-default">Ik wil dit cadeau!</button></a>

     <button onclick="myFunction()">Ik wil dit cadeau!</button>
<script>
function myFunction() {
    alert("Uw cadeau aanvraag is geaccepteerd, Klik hier om een bericht naar de eigenaar van het cadeau te sturen.");
}
</script>

<?php endif; ?>
</div>

<!--Als het cadeau van de ingelogde gebruiker is laat een button zien dat heet cadeau bewerken-->
<div class="cadeau_bewerken">
        <?php if ( $_SESSION['user_id'] ==  $product["user_id"]): ?>
    <a class="btn btn-primary" href="<?php echo base_url() ?>/KdGwController/details_bewerken/<?php echo $product['product_id']; ?>"> Cadeau bewerken </a>
<?php endif; ?>
    </div>
    <br>
    <div class="cadeau_verwijderen">
        <?php if ( $_SESSION['user_id'] ==  $product["user_id"]): ?>
    <a class="btn btn-primary" href="<?php echo base_url() ?>/Delete_ctrl/delete_product_id/<?php echo $product['product_id']; ?>"> Cadeau verwijderen </a>
<?php endif; ?>
    </div>

    <!--Als het cadeau van de ingelogde gebruiker is laat aantal geïnteresseerden zien-->
    <div class="aantal_geinteresseerden">
         <?php if ( $_SESSION['user_id'] ==  $product["user_id"]): ?>
    <h4>Aantal geïnteresseerden:</h4>
<?php endif; ?>
    </div>

<?php if ( $_SESSION['user_id'] != $product["user_id"]): ?>
     <div class="aangeboden_door">   Aangeboden door:   
<tr>
    <td>
        <a href="<?php echo base_url() . 'User/userdetails/'.$product['user_id']?>">
          <?php echo $userarray['voornaam'];?>
        </a>
    </td>
    </tr>
</div>

<?php endif; ?> 
</div>


     </div>
     </div>   
</div> 





<div class="container">

<footer>
 <p>&copy; kadokado 2017, Inc.</p>
</footer>
<hr>
</div>
</div>
<div class="clearfix"></div>
<?php include_once ('templates/footer.php'); ?>

2 个答案:

答案 0 :(得分:3)

使用isset()检查变量是否已设置。

如下所示: -

if (isset($_SESSION['user_id']) && isset($product["user_id"]) && $_SESSION['user_id'] != $product["user_id"]) {

注意: - 对页面上使用的其他变量执行相同的操作。

所以整个代码需要如下: -

<?php include_once ('templates/header.php'); ?>

<div class="all-content">
       <div class="row">
        <div class="col-lg-12 bg-warning" style="font-size:25px">

            <!-- Maak variables voor gele balkje ingelogt of niet --> 
            <?php $overditcadeau = '<center>Over dit cadeau</center>'; ?> 
            <?php $mijncadeau = '<center>Mijn cadeau</center>'; ?> 

         <?php   if (isset($_SESSION['user_id']) &&  isset($product["user_id"]) && $_SESSION['user_id'] != $product["user_id"]) { 
    echo $overditcadeau;
 } else { 
    echo $mijncadeau;
  } ?>



        </div>
        </div>
<div class="container">
    <br><br>


<?php    $userarray = $this->db->get_Where('users', array('user_id'=>$product["user_id"]))->row_array();  ?>


    <!-- Als het cadeau niet van de ingelogde gebruiker is laat email van de eigenaar van het cadeau zien -->
    <?php if (isset($_SESSION['user_id']) &&  isset($product["user_id"]) &&  $_SESSION['user_id'] != $product["user_id"]): ?>
 <h3>Email van de eigenaar:</h4>
<?php echo $userarray['email'];?>
       <?php endif; ?>
 </div>



<div class="container">
 <div class="row">



     <div class="overditcadeau" >
    <div class="overditcadeau_foto">
    <img src="<?php echo base_url(); ?>upload/<?php echo $product['product_foto']; ?>" id="cadeaufoto_overditcadeau">
</div>

<div class="overditcadeau_tekst1">
  <h1> <div class="product_naam"> <?php echo $product['product_naam']; ?>  </div> </h1>
   <h3>Over dit cadeau</h3>
     <div class="product_beschrijving"><?php echo $product['product_beschrijving']; ?> </div>
   </div>
   <div class="overditcadeau_tekst2">

       <!--Als het cadeau niet van de ingelogde gebruiker is laat een button zien dat heet cadeau aanvragen -->
       <div class="cadeau_aanvragen">
  <?php if (isset($_SESSION['user_id']) &&  isset($product["user_id"]) &&  $_SESSION['user_id'] != $product["user_id"]): ?>
     <a href="<?php echo base_url() ?>/Cadeau_ontvang"> <button type="button" class="btn btn-default">Ik wil dit cadeau!</button></a>

     <button onclick="myFunction()">Ik wil dit cadeau!</button>
<script>
function myFunction() {
    alert("Uw cadeau aanvraag is geaccepteerd, Klik hier om een bericht naar de eigenaar van het cadeau te sturen.");
}
</script>

<?php endif; ?>
</div>

<!--Als het cadeau van de ingelogde gebruiker is laat een button zien dat heet cadeau bewerken-->
<div class="cadeau_bewerken">
        <?php if (isset($_SESSION['user_id']) &&  isset($product["user_id"]) &&  $_SESSION['user_id'] ==  $product["user_id"]): ?>
    <a class="btn btn-primary" href="<?php echo base_url() ?>/KdGwController/details_bewerken/<?php echo $product['product_id']; ?>"> Cadeau bewerken </a>
<?php endif; ?>
    </div>
    <br>
    <div class="cadeau_verwijderen">
        <?php if (isset($_SESSION['user_id']) &&  isset($product["user_id"]) &&  $_SESSION['user_id'] ==  $product["user_id"]): ?>
    <a class="btn btn-primary" href="<?php echo base_url() ?>/Delete_ctrl/delete_product_id/<?php echo $product['product_id']; ?>"> Cadeau verwijderen </a>
<?php endif; ?>
    </div>

    <!--Als het cadeau van de ingelogde gebruiker is laat aantal geïnteresseerden zien-->
    <div class="aantal_geinteresseerden">
         <?php if (isset($_SESSION['user_id']) &&  isset($product["user_id"]) &&  $_SESSION['user_id'] ==  $product["user_id"]): ?>
    <h4>Aantal geïnteresseerden:</h4>
<?php endif; ?>
    </div>

<?php if ( $_SESSION['user_id'] != $product["user_id"]): ?>
     <div class="aangeboden_door">   Aangeboden door:   
<tr>
    <td>
        <a href="<?php echo base_url() . 'User/userdetails/'.$product['user_id']?>">
          <?php echo $userarray['voornaam'];?>
        </a>
    </td>
    </tr>
</div>

<?php endif; ?> 
</div>


     </div>
     </div>   
</div> 





<div class="container">

<footer>
 <p>&copy; kadokado 2017, Inc.</p>
</footer>
<hr>
</div>
</div>
<div class="clearfix"></div>
<?php include_once ('templates/footer.php'); ?>

答案 1 :(得分:0)

唯一的方法是检查$ _SESSION ['user_id']是否设置在你使用它的任何地方。

作为一个快速修复(如果你有很多对$ _SESSION ['user_id']的引用),你可以放到第二行:

if (empty($_SESSION['user_id'])) $_SESSION['user_id'] = -1;