簡體   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