PHP - показать идентификатор пользователя в URL-адресе

Я хочу иметь возможность показывать идентификатор пользователя в URL-адресе, например: profile.php?user=1, 2 и т. д.

Я искал везде, но я не могу заставить его работать.

код профиля.php:

<?php
ob_start();
session_start();
require_once 'dbconnect.php';


 // if session is not set this will redirect to login page
 if( !isset($_SESSION['user']) ) {
 header("Location: index.php");
 exit;
 }
 // select loggedin users detail
 $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
 $userRow=mysql_fetch_array($res);
 $id = $_GET['userId'];

?>

PHP-код:

<?php
ob_start();
session_start();
 require_once 'dbconnect.php';

 $id = (isset($_GET['id'])) ? $_GET['id'] : $_SESSION['id'];
 $query = "SELECT * FROM users WHERE userId = $id";
 // if session is not set this will redirect to login page
 if( !isset($_SESSION['user']) ) {
 header("Location:profile.php?id=" . $_SESSION['user']);
 exit;
 }
// select loggedin users detail
 $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
 $userRow=mysql_fetch_array($res);
 $id = $_GET['userId'];
?>


<?php echo $userRow['userId'];?>

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


person CAMELYON    schedule 02.12.2016    source источник
comment
$_GET прочитает параметр, а не поместит его туда. Вы должны поместить его туда вручную, это означает, что когда вы делаете href в своем html-коде, вы должны сделать что-то вроде href="domain.com/profile.php?user=$variable". Для $variable вы должны прочитать значение из SQL.   -  person Twinfriends    schedule 02.12.2016
comment
$id = $_GET['userId']; для получения параметра GET, а не для его установки   -  person Luka Svalina    schedule 02.12.2016
comment
Вы хотите добавить $id в Location: index.php, например Location: index.php?uid=$id;   -  person Mayank Pandeyz    schedule 02.12.2016
comment
У меня есть один вопрос, в целях безопасности лучше всего показывать URL?   -  person Brijesh Mavani    schedule 25.01.2018


Ответы (4)


Я полагаю, что вы устанавливаете $_SESSION['user'] при успешном входе в систему, затем вы направляете пользователя на страницу profile.php, используя заголовок, что вам нужно сделать, теперь вам нужно изменить свой заголовок, чтобы он выглядел так:

<?php


header("Location:profile.php?id=" . $_SESSION['user']);

?>

Это направит пользователя на profile.php?use=1, если id равен единице, тогда, когда вы когда-либо ссылаетесь на profile.php со своей панели инструментов с помощью привязки, это должно выглядеть так:

<a href="profile.php?id=<?php echo $_SESSION['user'];?>">profile</a>

NB: в ваших интересах не используйте mysql_, функция устарела и удалена из php 7. вместо этого используйте mysqli,

Затем для собственной безопасности данных используйте подготовленные операторы с помощью mysqli или pdo.

person Masivuye Cokile    schedule 02.12.2016
comment
это сработало, чтобы получить идентификатор пользователя в URL-адресе, но есть ли способ просмотреть другие профили, изменив номер в URL-адресе? от id=2 до id=1 f.eks - person CAMELYON; 02.12.2016
comment
это работает для текущего вошедшего в систему пользователя, если вы просматриваете профиль другого пользователя как другой пользователь, скажем, администратор, вы бы тогда <a href="profile.php?id=<?php echo $row['userid'];?>">profile</a> я отредактирую свой ответ для получения дополнительной информации. - person Masivuye Cokile; 02.12.2016

Итак, в основном вы хотите показать идентификатор в URL-адресе или хотите передать идентификатор из URL-адреса

если вы хотите передать идентификатор, используя URL-адрес, чем:

использовать

<a href="profile.php?user=<?php echo $id; ?>">

И вы не можете получить эти данные, используя $_GET[user];

ТАК, пожалуйста, уточните, что вы хотите.?

person Devsi Odedra    schedule 02.12.2016

я бы сделал так:

 if( !isset($_SESSION['user']) ) {
   header("Location: index.php");
   exit;
 }
 elseif ( isset($_SESSION['user'] && !$_GET['user']){
   header("Location: profile.php?user=" . $_SESSION['user']);
 }
 else{
   // select loggedin users detail
   $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
   $userRow=mysql_fetch_array($res);
   $id = $_GET['userId'];
 }
person Luka Svalina    schedule 02.12.2016

Этот код покажет идентификатор пользователя для URL-адреса, если вы используете форму:

<form="profile.php?=user<?php echo $id; ?>"> 

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

if (isset($_POST['nameofsubmitbutton']))
{

$Sample = $_POST['nameoffield'];
header("Location: nextpage.php?id=$Sample");
}
person Newbie    schedule 02.12.2016