php - 所有用户中显示用户注销

标签 php mysql oop pdo

我正在尝试创建成员(member)页面,但是当我以用户身份登录时 我需要一个注销按钮,如果我以 (X) 用户身份登录并尝试访问 (Y) 用户的个人资料,我仍然会收到注销按钮。基本上,我仅在以我的用户身份登录时才尝试获取注销按钮,并且如果我想检查另一个个人资料,我想检查它并且不希望在我登录时在另一个个人资料页面上显示注销按钮。

PROFILE.php

<?php 
session_start();
include_once 'php/classes/class.user.php';

//echo 'GET:'; 
//var_dump($_GET); 
//echo '$_SESSION:'; 
//echo var_dump($_SESSION); 

$user = new User();

$uid = $_GET['uid'];

if(isset($_SESSION['uid']) && $_GET['uid'] == $_SESSION['uid']){

    if ($user->check_user($uid)) {

        echo " " . $user->get_fullname($uid) . " ";
        echo "<a href='profile.php?q=logout'>Log Out</a>";

    }

}else if(isset($_SESSION['uid']) && $_GET['uid'] != $_SESSION['uid']){

    echo " " . $user->get_fullname($uid) . " ";

}else if(!isset($_SESSION['uid']) && $_GET['uid'] != $_SESSION['uid']){
    echo " " . $user->get_fullname($uid) . " ";
}else if($user->check_user($count_row1) > $uid){
    echo "User Doesn't exist";
}

if (isset($_GET['q'])) {
    $user->user_logout();
    header("location: index.php");
}
?>

USERS.FUNCTIONS.php

<?php 
include "db_config.php";

class User{

    public $db;

    public function __construct(){
        $this->db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

        if(mysqli_connect_errno()) {
            echo "Error: Could not connect to database.";
                exit;
        }
    }

    /*** for login process ***/
    public function check_login($emailusername, $password){

        $password = md5($password);
        $sql2="SELECT uid from users WHERE uemail='$emailusername' or uname='$emailusername' and upass='$password'";

        //checking if the username is available in the table
        $result = mysqli_query($this->db,$sql2);
        $user_data = mysqli_fetch_array($result);
        $count_row = $result->num_rows;

        if ($count_row == 1) {
            // this login var will use for the session thing    
            session_start();
            $_SESSION['login'] = true;
            $_SESSION['uid'] = $user_data['uid'];
            return true;
        }
        else{
            return false;
        }
    }
    /*** for showing the username or fullname ***/

    public function get_fullname($uid){
    $sql = "SELECT * FROM users WHERE uid = $uid";
    $result = mysqli_query($this->db, $sql);
    $user_data = mysqli_fetch_array($result);

        echo $user_data['fullname'], "<br/>";
        echo $user_data['uemail'], "<br/>";
        echo $user_data['uid'], "<br/>";
    }

    public function check_user($uid){

    $sql5 = "SELECT uid from users WHERE uid='$uid'";
    $result1 = $this->db->query($sql5);
    $count_row1 = $result1->num_rows;

    return ($count_row1 ==1);


    }

    /*** starting the session ***/
    public function get_session(){
        return $_SESSION['login'];
    }

    public function user_logout() {
        $_SESSION['login'] = FALSE;
        session_destroy();
    }

}

最佳答案

根据你的代码

if (isset($_GET['uid'])) {
// Your Code of Check user exist? I don't get it
}
else if (isset($_SESSION['uid'], $_SESSION['login'])) {
// Your Code to print Logout
}
else
echo "Session not set";

这实际上没有意义,您首先检查uid。我猜这是用户的唯一ID。如果设置了uid,它甚至不会转到其他部分。如果我忽略了你的其他部分,你没有检查当前用户是否是登录的同一用户,你应该这样做:

if(isset($_SESSION['user'],$_GET['uid']))
 {
   if($_GET['uid']==$_SESSION['uid'])
    {
     //Your Code to Print Logout
    }
  else if($user->check_user($uid))
   {
    //User Exist and Not Logged in User
   }
  else if(!$user->check_user($uid))
   {
   //User Doesn't Exist
   }
 }

您必须使用 GET 参数来检查登录用户的当前配置文件。我建议您消除第一个 if 条件并使用上述条件。

编辑:当您想打印用户是否存在时,可以有多种方法,我只是编辑以显示一个示例,但它可以根据多种情况而有所不同。 这只是一个想法

关于php - 所有用户中显示用户注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26572444/

相关文章:

MySQL:将数据从表复制到另一个

MySQL MariaDB 服务器树莓派远程访问

php - 如何从变量名动态设置对象的属性?

java - 如何在java中使用反射扩展基类的多个类

php - 在 div 不回显 php 之后

javascript - "Continue"使用 AJAX 的 PHP 重定向?

php - 用文本间隔替换数字间隔

php - 包 ('i' ,1) 总是 4 个字节吗?

php - 从多个表中获取数据

python - 指向另一个对象的属性并添加你自己的