Перенос переменных между страницами PHP

Я хочу получить пользовательский ввод на одной странице, сохранить его в переменной php и использовать на другой странице php. Я пробовал использовать «сессии», но, похоже, это не работает. Есть ли другая безопасная альтернатива? Эта информация, вероятно, будет именами пользователей и паролями.


person chustar    schedule 27.10.2008    source источник
comment
Сессии должны работать для этого. Вы начинаете сеанс перед его использованием?   -  person carson    schedule 27.10.2008


Ответы (5)


Попробуйте изменить код сеанса, так как это лучший способ сделать это.

Например:

index.php

<?php
session_start();

if (isset($_POST['username'], $_POST['password']) {
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password'] = $_POST['password'];
    echo '<a href="nextpage.php">Click to continue.</a>';
} else {
    // form
}
?>

следующая страница.php

<?php
session_start();

if (isset($_SESSION['username'])) {
    echo $_SESSION['username'];
} else {
    header('Location: index.php');
}
?>

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

person Ross    schedule 27.10.2008

Я согласен с carson, сеансы должны работать для этого. Убедитесь, что вы вызываете session_start() прежде всего на любой странице, на которой вы хотите использовать переменные сеанса.

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

person ZombieSheep    schedule 27.10.2008
comment
Немного небезопасно хранить необработанные пароли в сеансе в зависимости от резервного хранилища. В большинстве случаев резервное копирование выполняется на диск, и это приводит к тому, что пароль хранится где-то на диске в виде простого текста. - person carson; 27.10.2008
comment
Верно, но моя точка зрения заключалась в том, что переменная сеанса сама по себе не является небезопасным местом для этого. Однако, как вы говорите, возможность сохранения в виде простого текста на диске - это другое дело. - person ZombieSheep; 28.10.2008

Есть несколько способов:

Сессионный способ — это единственный способ, при котором данные не «покидают» сервер, так как они хранятся на самом сервере. Для всех других способов, упомянутых выше, вы должны позаботиться о очистке и проверке данных на принимающей странице.

Самый простой способ был бы

//page1.php
session_start();
$_SESSION['user']='user';
$_SESSION['password']='password';

//page2.php
session_start();
echo $_SESSION['user'] . ' ' . $_SESSION['password'];
person Stefan Gehrig    schedule 27.10.2008

Вы можете попробовать использовать методы POST и GET для передачи пользовательского ввода в сценариях PHP.

PHP GET

PHP POST

person milot    schedule 27.10.2008
comment
Это потенциально очень небезопасно. Передача имени пользователя и пароля туда и обратно в браузер просто напрашивается на неприятности. Переменная сеанса — это место для хранения такого рода данных, хотя я бы по-прежнему рекомендовал токенизировать данные. - person ZombieSheep; 27.10.2008
comment
Ну, это более безопасно, если вы используете одностороннее хеширование. - person milot; 27.10.2008

Я тоже согласен, сеансы - лучшее решение. См. эту главу из раздела Приложения веб-базы данных с PHP и MySQL, где приведены некоторые примеры.

person Treb    schedule 27.10.2008