【问题标题】:php errors when logged out because of session user_id由于会话 user_id 而注销时的 php 错误
【发布时间】:2017-11-17 08:58:46
【问题描述】:

我正在制作一个产品详细信息页面,并且在产品详细信息页面上我有 if 函数来查看 $_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 时发生同样的事情,这与此相呼应:&lt;?php echo $userarray['email'];?&gt;

这是我的整个详细信息页面:

<?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'); ?>

【问题讨论】:

  • if ( isset($_SESSION['user_id']) &amp;&amp; $_SESSION['user_id'] != $product["user_id"])

标签: php codeigniter session codeigniter-3


【解决方案1】:

使用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'); ?>

【讨论】:

  • @Learningprogrammingphp44 检查我编辑的解决方案
  • @Learningprogrammingphp44 很高兴为您提供帮助:):)
【解决方案2】:

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

作为一种快速解决方法(如果您有很多对 $_SESSION['user_id'] 的引用),您可以放在第二行:

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

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 2013-02-09
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2017-05-18
    • 2014-05-03
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多