Отображение информации профиля пользователя

#php

#php

Вопрос:

У меня возникают проблемы с отображением информации профиля пользователя при нажатии на их профиль. отображаемые данные являются моими собственными при входе в систему, поэтому они не переключаются. Я не могу найти проблему и задаюсь вопросом, где я, возможно, ошибаюсь?

Таким образом, информация должна отображаться на profile.php

 if (isset($_GET['username']) === true amp;amp; empty ($_GET['username']) === false) {
    $username = $_GET['username'];

    if (user_exists($username) === true) {
        $user_id  = user_id_from_username($username);   
        $profile_data = user_data($user_id, 'first_name', 'last_name', 'email');        
    ?>  
    <h1><?php echo $profile_data['first_name']; ?> profile</h1>
    <p><?php echo $profile_data['email'] ?></p> 
    <?php

    } else {
        echo 'Sorry, that user does not exist';
    }
    } else {
        header('Location: index.php');
    exit();
}
  

Он показывает мою информацию, а не пользователя, которого я пытаюсь просмотреть. Если я ввожу фиктивное имя пользователя в URL, оно выдает ошибку и говорит, что они не существуют.

Вот мой скрипт для извлечения данных из базы данных:

 if (logged_in() === true) {
    $session_user_id = $_SESSION ['user_id'];
    $user_data = user_data($session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'type', 'profile');
    if(user_active($user_data['username']) === false) {
        session_destroy();
        header('Location: index.php');
        exit();

    }
}

$errors = array();
  

Я использую файл .htaccess для инициализации URL-адреса тщеславия

 RewriteEngine On
RewriteCon %{REQUEST_FILENAME} !-f
RewriteCon %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?username=$1
  

итак, мой URL-адрес будет выглядеть следующим образом…

http://mywebsite.com/myname

вот функция для user_data

 function user_data($user_id) {
    $data = array();
    $user_id = (int)$unser_id;

    $func_num_args = func_num_args();
    $func_get_args = func_get_args();

    if ($func_num_args > 1){
        unset($func_get_args[0]);

        $fields = '`' . implode('`, `', $func_get_args) . '`';
        $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE 'user_id' = $user_id"));


        return $data;
    }

}
  

И это работает, изменяя мое имя, но не переключая данные пользователя на странице профиля на данные других пользователей.

По запросу: функция user_exists()

 function user_exists($username) {
    $username = sanitize($username);
    $query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
    return (mysql_result($query, 0) == 1) ? true : false;
}
  

Комментарии:

1. Похоже, проблема в user_id_from_username() том или user_data() ином. Поскольку вы не опубликовали их, мы никак не можем помочь.

2. Я добавил функцию user_data

3. подождите, вы говорите, что показывать вашу информацию при входе в систему неправильно? что-то я не понимаю, я думаю, я думал, что это будет правильное поведение

4. Эхо user_id_from_username($username) .

5. error_reporting Теперь установите уровень, приемлемый для отладки.

Ответ №1:

Попробуйте это

 function user_data($user_id, $fields = '*') {

  // type cast to int
  $user_id = (int) $user_id;

  // if an array is passed, we implode the array to get fields,
  // otherwise we return all rows
  if (is_array($fields))
  {
    $fields = implode('`, `', $fields) . '`';
  }

  //build query, with LIMIT 1 , I assume username is unique
  $qry = "SELECT {$fields} FROM `users` WHERE 'user_id' = {$user_id} LIMIT 1";
  $sql = mysql_query($qry);
  $result = mysql_fetch_assoc($sql);

  // if we have a result, return it, otherwise return false
  return (mysql_num_rows($sql) == 1) ? $result : false ;

}
  

будет использоваться:

 $profile_data = user_data($user_id, array('user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'type', 'profile'));
  

или

 $fields = array(
  'user_id',
  'username',
  'password',
  'first_name',
  'last_name',
  'email',
  'type',
  'profile'
);

$profile_data = user_data($user_id, $fields);
  

Комментарии:

1. Кроме того, для новой разработки, если вы можете, используйте PDO mysqli_* функции или.

2. Используемая часть … это происходит profile.php ? что я заменяю?

3. У вас вообще есть skype?