首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于确定$_SESSION数据的if语句

用于确定$_SESSION数据的if语句
EN

Stack Overflow用户
提问于 2019-03-07 06:19:01
回答 2查看 45关注 0票数 0

我已经创建了一个客户数据库,其中4-5名工作人员将有权登录查看,编辑和删除记录。

我需要的html表,其中列出了客户记录,以显示一个‘编辑’和‘删除’链接,只有在登录的userID ($_SESSIONuserID)匹配谁创建了记录的userID。因此,如果一名工作人员创建了5条记录中的3条,他们应该只能在这三条记录上看到“编辑”和“删除”超链接,而在其他两条记录上什么也看不到。

我已经设法达到了会话工作的目的--然而,作为PHP的新手,我不确定应该把IF语句放在哪里来回应'Edit‘和'Delete’链接--并且完全不知道如何准确地编写它。我已经试过很多次了,但我现在累死了!任何帮助都将不胜感激。

这是我的会话启动文件(authenticate.php):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
session_start();
$_SESSION["staffID"] = "staffID";
?>

人员登录文件(staff_login.php):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Staff login</title>
</head>
<body>
<?php
require("db.php");

session_start();
// If form submitted, insert values into the database.
if (isset($_POST['username'])){
        // removes backslashes
    $username = stripslashes($_REQUEST['username']);
        //escapes special characters in a string
    $username = mysqli_real_escape_string($con,$username);
    $password = stripslashes($_REQUEST['password']);
    $password = mysqli_real_escape_string($con,$password);
    //Checking if user existing in the database or not
        $query = "SELECT * FROM `staff login` WHERE username='$username'
and password='$password'";
    $result = mysqli_query($con,$query) or die(mysql_error());
    $rows = mysqli_num_rows($result);
        if($rows==1){
        $_SESSION['username'] = $username;
        $_SESSION[staffID] = $rows["$staffID"];
            // Redirect user to edit_contact.php - was index.php -
        header("Location: edit_contact.php");
         }
    else
    {
    echo "<div class='form'>
<h3>Username/password is incorrect.</h3>
<br/>Click here to <a href='staff_login.php'>Login</a></div>";
    }
    }else{
?>
<div class="form">
<h1>Staff login</h1>
<form action="" method="post" name="login">
<input type="text" name="username" placeholder="Username" required />
<input type="password" name="password" placeholder="Password" required />
<input name="submit" type="submit" value="Login" />
</form>
</div>
<?php } ?>
</body>
</html>

和php文件,在带有“Edit”和“Delete”超链接的表中显示记录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Edit contact</title>
</head>
<body>
<h2>Tate Finance Customer contact details</h2>

<?php

//***edit_contact.php***///
// Developed by: []
// Contact: []
// Created: [November 2018]
// Last Modified: [26 November 2018]
/* Purpose: This file lists all contacts from the mycontacts database in a table for logged in users to add, edit or delete their contacts.*/

//include authenticate.php file on all secure pages
require('db.php');
include("authenticate.php");

    ?>
    <!--Add welcome note to staff user-->
    <p>Welcome <?php echo $_SESSION['username']; ?>!</p>
    <p><a href="logout.php">Logout</a></p>
    <h3><a href="insert.php">Add new customer</a></h3>
    <?php


$con = mysqli_connect("localhost","root","xxxxxx","mycontacts");

// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
else
{
    // Show all contacts from database in a table list
$query = "SELECT * FROM contact ORDER BY conName ASC";
$rst = mysqli_query($con,$query);

if($rst)
{
if(mysqli_num_rows($rst)>0)
{
    // Table design for contacts list
echo "<table border='1'><tr><td>Edit contact</td><td>Name</td><td>Address</td><td>Phone</td><td>Mobile</td><td>Email</td></tr>";
while ($row = mysqli_fetch_assoc($rst))
{
    /* Present contacts details in table list according to id selected, with links to edit or delete according to contactID selected */

/* This is where I think my IF statement needs to go, but can't figure out how/what to write to make it work */

echo "<tr><td><a href=editContact.php?id=".$row['contactID'].">Edit</a><a href=delete_record.php?id=".$row['contactID'].">&nbsp;&nbsp;Delete</a></td><td>".$row['conName']."</td><td>".$row['conAddress']."</td><td>".$row['conPhone']."</td><td>".$row['conMobile']."</td><td>".$row['conEmail']."</td></tr>";
}
echo "</table>";
}
}
else
{
echo "No results found";
}
}

    ?>

</body>
</html>
EN

回答 2

Stack Overflow用户

发布于 2019-03-07 09:10:48

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while ($row = mysqli_fetch_assoc($rst))
{
echo "<tr>";

if($_SESSION["staffID"] == $id_of_creator){
     echo "<td>".
     "<a href=editContact.php?id=".$row['contactID'].">Edit</a>".
     "<a href=delete_record.php? 
      id=".$row['contactID'].">&nbsp;&nbsp;Delete</a> ".
     "</td>";
}else echo "<td></td>";

echo "<td>".$row['conName']."</td><td>".$row['conAddress']."</td><td>".$row['conPhone']."</td><td>".$row['conMobile']."</td><td>".$row['conEmail']."</td></tr>";

}
票数 0
EN

Stack Overflow用户

发布于 2019-03-07 09:46:46

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
while($row = mysqli_fetch_assoc($selectAllCustomer)){
      $id = $row['customer_id'];
      $name= $row['customer_id'];
      $email= $row['customer_email'];

      echo "<tr>";

      if($_SESSION['staffID'] == $Admin_Id){
         echo "<td>".$name."</td>";
         echo "<td>".$email."</td>";
         echo "<td>";
         echo "<a href='editPage.php?edit='".$id."'>Edit</a>";
         echo "</td><td>";
         echo "<a href='deletePage.php?delete='".$id."'>Delete</a>";
         echo "</td>";

      }else{
          echo "<td>".$name."</td>";
          echo "<td>".$email."</td>";
         }

        echo "</tr>";
}

NB: the valiable $admin_Id, is a id of the creator
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55037233

复制
相关文章
使用事件总线(eventbus)或自定义事件的问题
事件总线、自定义事件关键点 先监听事件再触发事件 考虑组件生命周期顺序 组件通信 <!-- 组件A --> <template> <div> <button @click="jump">跳转B</button> {{msg}} </div> </template> <!-- 组件B --> <template> <div> <button @click="back">返回</button> </div> </template> // A jump () { t
peng_tianyu
2022/12/15
6190
使用事件总线(eventbus)或自定义事件的问题
SpringBoot系列之使用自定义注解校验用户是否登录
记得今年年初刚开始面试的时候,被问的最多的就是你知道Spring的两大核心嘛?那你说说什么是AOP,什么是IOC?我相信你可能也被问了很多次了。
一个程序员的成长
2020/11/25
1.1K0
SpringBoot系列之使用自定义注解校验用户是否登录
EventBus使用详解(一)——初步使用EventBus[通俗易懂]
前言:EventBus是上周项目中用到的,网上的文章大都一样,或者过时,有用的没几篇,经过琢磨,请教他人,也终于弄清楚点眉目,记录下来分享给大家。
全栈程序员站长
2022/09/05
1.4K0
EventBus使用详解(一)——初步使用EventBus[通俗易懂]
自定义HikariCP连接池
官方解释: 快速、简单、可靠。HikariCP 是一个“零开销”的生产就绪 JDBC 连接池。大约 130Kb,库非常轻。
ha_lydms
2023/08/10
2K0
自定义HikariCP连接池
连接格式优化,支持自定义
12月, eKuiper 团队继续专注于 1.8.0 版本新功能的开发。我们重构了外部连接(source/sink) 的格式机制,更加清晰地分离了连接、格式和 Schema,同时支持了格式的自定义;受益于新的格式机制,我们大幅完善了文件源(file source)的能力,支持定时监控文件系统及各种格式的文件,并且采用流的方式消费文件系统数据;最后,我们增加了完整数据包括规则和配置的导入导出功能,支持节点的迁移。另外,我们也修复了一些问题,并发布到 1.7.x 版本中。
EMQ映云科技
2023/01/05
6270
自定义MySQL连接池
最近在学习了通用池化框架commons-pool2实践之后,再HTTP性能测试中进行了实践,结果出乎意料,对于性能提升没啥卵用。经过我自己的本地测试,性能也是足够好的。
FunTester
2022/07/08
7210
【EventBus】EventBus 使用示例 ( 最简单的 EventBus 示例 )
在 Module 下的 build.gradle 中导入 EventBus 依赖 ;
韩曙亮
2023/03/29
7070
【EventBus】EventBus 使用示例 ( 最简单的 EventBus 示例 )
【EventBus】EventBus 事件总线框架简介 ( EventBus 使用流程 )
EventBus 常用于 组件 间的事件传递 , 实现了各个组件间的通信 , 如 Activity 与 Fragment 之间的通信 , Activity 与 Service 之间的通信 ;
韩曙亮
2023/03/29
7130
1. 自定义连接池
Connection对象在JDBC使用的时候就会去创建一个对象,使用结束以后就会将这个对象给销毁了(close).每次创建和销毁对象都是耗时操作.
Devops海洋的渔夫
2021/10/12
4140
EventBus使用详解
最近在公司做一个类似于手机工厂模式的一个项目,用来检测其他各个App是否正常工作,所以要求是尽可能的轻量级,因为是检测其他App的工作,所以整个项目都是信息之间的频繁交互。在项目中存在很多Fragment和Fragment之间的信息交互,之前一直在用广播来实现但是广播使用起来较为麻烦且效率不高。在同事的建议下学习了EventBus,在此做一下学习记录,侵权请告知一定及时删除。
xiangzhihong
2022/11/30
2.2K0
EventBus 使用总结
EventBus是一个事件总线框架,观察者模式的变形,利用这个框架,我们可以方便高效地在Android组件间传递和处理数据,切换线程,降低代码耦合度。 本文基于 EventBus 3.0。
杜金房
2020/12/21
9660
EventBus 使用总结
eventbus短暂使用
2017 10 27 EventBus 是个什么鬼? 首先有两个概念发布者/订阅者
tea9
2022/07/16
2730
EventBus轻松使用
  由greenrobot组织贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架,功能:通过解耦发布者和订阅者简化Android事件传递,EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。特点:代码简洁,是一种发布订阅设计模式(观察者设计模式)。
用户2038589
2018/09/06
6180
EventBus简单使用
github:https://github.com/greenrobot/EventBus/
yechaoa
2022/06/10
2060
开发自定义Mysql连接池
     tar -zxvf *.tar.gz * python3 setup.py build && python3 setup.py install
py3study
2020/01/10
5370
自定义数据库连接池
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个,应用程序和数据库创建连接需要消耗很大的资源。 package com.lbx.myDataSource; import javax.sql.DataSource; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.l
秋白
2018/05/24
7680
自定义数据库连接池
时间很快就到周末了,学习计划也已经进行了五天了,既然是周末的话,那当然要多学习一点知识,毕竟拥有这么充裕的时间。
wangweijun
2020/02/14
6210
vb连接Access数据库自定义
Public cn As New ADODB.Connection Public rs As New ADODB.Recordset
全栈程序员站长
2022/07/23
3.3K0
使用ListView自定义布局
ListView这个控件实际上是很难用的,就是因为它很多细节可以优化,效率就是比较重要的一点.下面我们来优化下它的效率:
Dream城堡
2018/12/14
8730
使用ListView自定义布局
点击加载更多

相似问题

自定义视图中的EventBus

17

是否可以从eventBus侦听器发送自定义事件?

19

将自定义事件发布到亚马逊CloudTrail

111

默认情况下匹配的EventRule EventBridge EventBus被自定义EventBus忽略

17

EventBus Xamaring使用反射找不到活动的自定义方法

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文