php - 在 PHP 页面之间传递信息

标签 php forms

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

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

最佳答案

您正在寻找 POST 和 GET 变量,这是在您的 HTML 表单的方法参数中完成的:

登录.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 中可见,假设我们更改 login.php 中的 method="GET",您最终会得到类似 secondpage.php?username=jsmith&password= 的内容1234.然后您可以使用 $_GET['username'] 获取值。

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

POST 和 GET 是出于不同的目的而创建的。 GET 应该用于提取您将来可能想要再次提取的信息,这些信息对当前并不特殊。 mypage.php?product=123 很有用,因为您可能希望将此 URL 发送给 friend 。修改数据状态时应使用 POST:更新产品、创建新用户、删除文章等。这是您希望发生一次的事情。

结构

最后,我只想补充一点,通常您不一定要使用另一个 PHP 脚本来避免某些代码运行或不运行。因此,在不知道您项目的具体细节的情况下,我可以说您可能想要做类似的事情以从相同的代码(例如表单的 HTML)中获益。

请注意这是简化的代码。

登录.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!

希望这就是您要找的!

关于php - 在 PHP 页面之间传递信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622297/

相关文章:

javascript - 通过 jQuery 仅选择一个对象并使用表单提交

用于窗口/ Pane 翻转效果的Javascript组件?

html - 为什么 <form> 是 block 元素?

forms - 如何从查询字符串中的表单中删除空字段?

Php:如何在where子句下使用$_POST

php - 通过 AJAX 返回的 Gettext 未翻译

PHP日期格式问题

forms - 天空形式/Bootstrap 3 : How to render multiple inputs that make it looks like 1 large input?

php - 如何在mysql php中存储日期和时间

php - 从模型实例 YII 获取模型名称