Передача информации между страницами PHP - PullRequest
5 голосов
/ 07 марта 2009

Как передать информацию между страницами PHP?

Например, у меня есть PHP-скрипт для обработки ввода имени пользователя из формы, а затем отдельный PHP-скрипт для обработки дальнейшего ввода для пользователя. Однако я хочу, чтобы второй PHP-файл получал входные данные из формы входа. По сути, я не хочу, чтобы один и тот же скрипт запускался дважды для входа в систему.

Ответы [ 5 ]

7 голосов
/ 07 марта 2009

Вы ищете переменные POST и GET, это делается в параметре метода вашей HTML-формы:

login.php

<form name="myform" action="secondpage.php" method="post">
    <div>Username: <input type="text" name="username" value="" /></div>
    <div>Password: <input type="password" name="password" value="" /></div>
</form>

Тогда на этой другой странице:

secondpage.php

$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
if ($username != '') {       
    // do your validations here
}

Объяснение

Когда вы используете метод GET, параметры видны в URL, поэтому, скажем, мы изменили метод = "GET" в login.php, в результате вы получите что-то вроде secondpage.php? Username = jsmith & password = 1234. И тогда вы можете получить значения, используя $_GET['username'].

Использование POST позволяет отправлять большее количество данных (существует неопределенное ограничение на размер URL), и оно не отображается в URL. Однако следует помнить, что все еще отправляется в виде простого текста , поэтому это не означает, что он безопасен.

POST и GET были сделаны для разных целей. GET следует использовать для извлечения информации, которую вы, возможно, захотите извлечь в будущем, информацию, которая не является особенной для этого момента. Полезно иметь mypage.php? Product = 123, потому что вы, возможно, захотите отправить этот URL другу. POST следует использовать, когда вы будете изменять состояние данных: обновлять продукт, создавать нового пользователя, удалять статью и так далее. Это то, что вы хотите, чтобы произошло однажды.

Структура

В заключение я просто хочу добавить, что обычно вам не обязательно использовать другой скрипт PHP, чтобы избежать запуска какого-либо кода или нет. Поэтому, не зная специфики вашего проекта, я тем не менее могу сказать, что вы, вероятно, захотите сделать что-то подобное, чтобы извлечь выгоду из того же кода (например, HTML-код формы).

Обратите внимание, это упрощенный код.

login.php

<?php

    $error = false;
    $username = isset($_POST['username']) ? $_POST['username'] : '';
    $password = isset($_POST['password']) ? $_POST['password'] : '';
    // if, and only if something was posted... so not on first display
    if ($username != '') {       
        // do your validations here
        if ($properlyLogged) {
            session_start();
            $_SESSION['loggedAt'] = time();
            header('Location: http://localhost/secondpage.php');
            exit();
        } else {
            $error = true;
        }
    }

?>

<?php if($error): ?>Login failed. Please try again.<?php endif; ?>
<form name="myform" action="login.php" method="post">
    <div>Username: <input type="text" name="username" value="<?php echo($username) ?>" /></div>
    <div>Password: <input type="password" name="password" value="" /></div>
</form>

secondpage.php

<?php
    session_start();
    if (!isset($_SESSION['loggedAt'])) {
        // if not properly logged in, return user to login
        header('Location: http://localhost/login.php');
        exit();
    }
?>
You are now logged in!

Надеюсь, это то, что вы искали!

4 голосов
/ 07 марта 2009

Вы можете передавать информацию между страницами, используя методы GET или POST. GET добавит информацию, которую вы хотите передать, в виде строки запроса на URL, например:

loginprocess.php? Id = JSmith & pword = HelloThere (это не совсем рекомендуется для личной информации)

Другой способ - отправить информацию через POST, чтобы она была скрыта от строки запроса.

Больше примеров можно увидеть здесь: http://www.tizag.com/phpT/postget.php

1 голос
/ 08 марта 2009

Просто небольшое дополнение к тому, что было написано ранее: ограничение на GET (параметризованный URL) - это полный URL, который означает 1024 символа. Если вам нужно больше, вы должны использовать post.

1 голос
/ 07 марта 2009

Если данные не настолько велики, вы можете перенаправить пользователя на 2-ю страницу с данными, переданными через URL (переменные GET). В противном случае, просто запустите метод секунд на той же странице и используйте функцию для окончательного анализа данных, которые могут быть включены, как предлагает вышеупомянутый пользователь.

0 голосов
/ 08 марта 2009

Вы можете использовать сеансы PHP для обмена данными между вашими PHP-скриптами. Ниже приведен основной пример, подробнее здесь .

login.php:

<?php

// initializes the session //
session_start();

// save user name and password to session //
$_SESSION["username"] = 'someuser';
$_SESSION["password"] = 'somepassword';
$_sESSION["valid"] = true;

?>

secondpage.php:

<?php

// start session handler //
session_start();

// check for a valid session //
if (!isset($_SESSION["valid"])) header("Location: login.php\n\n");

// continue page code here //

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