繁体   English   中英

在 PHP 页面之间传递信息

[英]Passing Information Between PHP Pages

如何在 PHP 页面之间传递信息?

例如,我有一个 PHP 脚本来处理来自表单的登录输入,然后有一个单独的 PHP 脚本来处理用户的进一步输入。 但是,我希望第二个 PHP 文件接收来自登录表单的输入。 本质上,我不希望相同的脚本为登录运行两次。

您正在寻找 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>

然后在另一个页面中:

第二页.php

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

解释

When you use the GET method, the parameters are visible in the URL, so let's say we change the method="GET" in login.php, you'll end up with something like secondpage.php?username=jsmith&password=1234. 然后您可以使用$_GET['username']获取值。

使用 POST 可以发送更大量的数据(对 URL 的大小有一个模糊的限制),并且在 URL 中不可见。 您应该注意,它仍然以明文形式发送,因此并不意味着它是安全的。

POST 和 GET 是为了不同的目的而制作的。 应该使用 GET 来提取您将来可能想要再次提取的信息,这些信息对于这一刻并不特殊。 拥有 mypage.php?product=123 很有用,因为您可能希望将此 URL 发送给朋友。 当您要修改数据的 state 时,应使用 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>

第二页.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!

希望这就是你要找的!

您可以使用 GET 或 POST 方法在页面之间传递信息。 GET 将 append 您希望作为查询字符串传递给 url 的信息,例如:

loginprocess.php?id=JSmith&pword=HelloThere (不完全推荐用于私人信息)

另一种方法是通过 POST 发送信息,使其对查询字符串隐藏。

更多示例可以在这里看到: http://www.tizag.com/phpT/postget.php

如果数据不是那么大,您可以使用通过 URL(GET 变量)传递的数据将用户重定向到第二页。 否则,只需在同一页面中运行 seconds 方法,并使用 function 对可以包含的数据进行最终解析,如上述用户建议的那样。

只是对之前编写的内容进行了一点补充:GET(参数化 URL)的限制是完整的 URL,这意味着 1024 个字符。 如果您需要更多,则必须使用 post。

您可以利用 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;

?>

第二页.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 //

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM