Сохраняйте указанный идентификатор в URL при успешном входе - PullRequest
0 голосов
/ 09 сентября 2011
    if(!$_POST['username'] || !$_POST['password'])
        $err[] = 'All the fields must be filled in!';

    if(!count($err))
    {
        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        $_POST['password'] = mysql_real_escape_string($_POST['password']);
        $_POST['rememberMe'] = (int)$_POST['rememberMe'];

        // Escaping all input data

        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM tz_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));

        if($row['usr'])
        {
            // If everything is OK login

            $_SESSION['usr']=$row['usr'];
            $_SESSION['id'] = $row['id'];
            $id = $row['id'];
            $_SESSION['rememberMe'] = $_POST['rememberMe'];

            // Store some data in the session
            setcookie('tzRemember',$_POST['rememberMe']);
        }
        else $err[]='Wrong username and/or password!';
    }

    if($err)
    $_SESSION['msg']['login-err'] = implode('<br />',$err);
    // Save the error messages in the session
    $goHere = 'Location: /index2.php?id=' . $id;
    header($goHere);
    exit;
}

У меня есть следующий код, который после входа в систему, это $_GET идентификатор и добавляется к URL, как index2.php?id=5. Как мне сохранить этот id=5 в URL независимо от того, по какой ссылке они нажимают ??

Этот идентификатор взят из этого:

        $_SESSION['usr']=$row['usr'];
        $_SESSION['id'] = $row['id'];
        $id = $row['id'];

Что я хочу сделать Хорошо, если у меня все настроено, вы входите в систему, а затем отправляет вас на домашнюю страницу, такую ​​как index2.php? Id = [someint] , если вы нажмете другую ссылку, скажем, prof.php, она удалит id=[someint] часть, я хочу сохранить его там в URL, так что, пока пользователь вошел в систему - используя мой код выше, URL мог бы прочитать: index.php? Id = 5, а затем перейти на другую страницу может читать prof.php? id = 5 и т. д., и т. д. Это целое число , очевидно, будет динамическим в зависимости от того, какая ВОЗ вошла в систему

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Вместо того, чтобы передавать идентификатор в URL, рассмотрите возможность обращения к значению идентификатора в переменной $ _SESSION.Таким образом, пользователь не сможет изменить URL и увидеть данные, которые он не должен видеть (или намного хуже), и вам не нужно беспокоиться о добавлении его в каждый URL и чтении его в значение каждый раз, когда вы идетеобработать скрипт.Когда пользователь входит в систему, вы определяете его ID - считываете его из базы данных, определяете в реальном времени, что угодно.Затем сохраните его в $ _SESSION и обращайтесь к нему по мере необходимости.Вы даже можете использовать это как часть проверки, чтобы увидеть, вошел ли пользователь в систему - если у него нет значения $ _SESSION ['id'], что-то не так, и вы заставляете его войти.

0 голосов
/ 09 сентября 2011

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

Вместо этого просто продолжайте использовать сеанс, так как он является правильнымway.

Если вы ДЕЙСТВИТЕЛЬНО хотите это сделать, вы, вероятно, захотите написать пользовательскую функцию для генерации ссылок

function makeLink ($link, $queryString = '')
{
    return $link . '?id=' . (int) $_SESSION['id'] . ((strpos($queryString, '?') === 0) ? substr($queryString, 1) : $queryString);
}

, называемую как

<a href="<?php echo makeLink('index2.php', 'query=string&foo=bar'); ?>">Click me</a>

Asбазовый пример аутентификации с использованием идентификатора ...

<?php
// Session start and so on here
if (!isset($_SESSION['id']))
{
    // Not logged in
    header('Location: /login.php');
    exit;
}

http://www.knowledgesutra.com/forums/topic/7887-php-simple-login-tutorial/ - довольно простой и полный пример этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...