[英]how do i get another variable from different php file into another file?
[英]how do I get a variable from one file to another in php
我有3個文件。 我會給你一個確切的例子:
a.php只會
<form action="b.php" method="POST">
Enter age:
<input type="text" name="age"><br>
<input type="submit" value="Save">
</form>
b.php
<?php
$age=$_POST["age"];
if (is_numeric($age))
{
header("Location: c.php");
exit();
}
else
{
echo "Age invalid!";
}
?>
c.php
<?php
//i want to use the $age variable here
echo $age;
?>
如何在c.php
使用b.php
中的$age
變量?
我也嘗試過session_start(); 在文件b.php
並使用$_SESSION["age"]=$_POST["age"];
在b.php
然后在c.php
中的$_SESSION["age"]
而不是$age
,它仍然無效。
我也試過包括但是沒有把我帶到任何地方......也許我沒有正確使用它。
問題是在文件b.php中,您沒有將年齡值發送到c.php。
如果,在b.php中,你這樣做了:
session_start();
$_SESSION["age"] = $_POST["age"];
然后,在c.php中,你這樣做了:
session_start();
$age = $_SESSION["age"];
echo $age;
它會正常工作。
當用戶在a.php上提交表單時,瀏覽器向b.php WITH數據發出HTTP POST請求。
所以你的年齡在$_POST
,但b.php中的 header()
通過HTTP GET請求將用戶發送到c.php , 這就是你無法在c.php中訪問$_POST
的原因 。 但是,這是防止刷新頁面導致數據重新提交的好方法。
您還需要使用session_start()
在c.php中啟動會話以訪問會話數據。
如果您要使用該會話,則必須在要使用$ _SESSION變量的每個頁面上調用session_start(),並且必須在任何輸出之前調用session_start()。 如果你在兩個頁面上都使用session_start,那么就沒有理由不起作用。
請試試這個:
b.php:
<?php
$age=$_POST["age"];
if (is_numeric($age))
{
header("Location: c.php?age=".$age);
exit();
}
else
{
echo "Age invalid!";
}
?>
c.php:
<?php
//i want to use the $age variable here
$age = $_REQUEST["age"];
echo $age;
?>
您是否也在c.php中使用了session_start()
? 您必須在要訪問會話的每個腳本中使用session_start()
。 在c.php中使用session_start()
后,您應該可以訪問$_SESSION['age']
。
為什么不將b.php修改成......
<?php
$age=$_POST["age"];
if (is_numeric($age))
{
header("Location: c.php?age=$age"); ### so it will be send as get var
exit();
}
else
{
echo "Age invalid!";
}
?>
並在c.php
$age = $_GET['age'];
或使用cale_b描述的會話
如果您不想創建會話啟動和銷毀,則必須將b.php文件添加到c.php中。
比你的c.php文件必須這樣
c.php
<?php
include_once 'b.php';
echo $age;
?>
用戶header('location: c.php');
並不是真的需要header('location: c.php');
它也不是用戶$_SESSION
變量的正確位置。
我想你可以很容易地include 'c.php'
而不是使用header('location: c.php');
。
b.php
<?php
$age=$_POST["age"];
if (is_numeric($age))
{
include "c.php"; //THIS LINE HAS BEEN CHANGED
exit();
}
else
{
echo "Age invalid!";
}
?>
c.php
<?php
echo $age; //NO CHANGE AT ALL IN THE FILE 'c.php'
?>
所以現在瀏覽器仍將保留在localhost/project/b.php
並且在c.php
中執行的內部操作將保持安全。
header('location: c.php');
用於將用戶從一個頁面帶到另一個頁面。 例如,在用戶登錄或其會話過期后,他應該再次進行身份驗證。 在這種情況下,用戶看到他正在將REDIRECT
ED轉移到未授權的頁面。
在這種情況下使用header()
並不是一個錯誤 ,並且代碼仍然可以正常工作,但它不應該用於那種操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.