无法使用PHP将会话变量传递给另一个页面

时间:2015-05-23 18:10:40

标签: php session

是PHP会话的新手,在传递会话变量时面临问题。请不要弄清楚此代码中的问题。 第1页

<html>
<head><title>My First PHP</title></head>
<body>
<FORM NAME ="form1" METHOD ="POST" ACTION = "main1.php">
<table >
<tr><td>First Name: <INPUT TYPE = "TEXT" VALUE ="" NAME = "first"></td></tr>
<tr><td>Last Name: <INPUT TYPE = "TEXT" VALUE ="" NAME = "last"></td></tr>


<tr><td><INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Click Here"></td></tr></table>
</FORM>
<?php
 session_start();


if(isset($_POST['Submit1']) ){

$firstname = $_POST['first'];
$lastname = $_POST['last'];
$firstname=ucwords($firstname);

 $_SESSION["firstname"] = $_POST['first'];
$_SESSION["lastname"] = $_POST['last'];

echo $_SESSION["firstname"] ."-" . $_SESSION["lastname"] ;

echo "Hello, ".$firstname. " " .$lastname ."!" . "<br>";
}
?>


</body>
</html>

第2页

<html>
<head><title>My second PHP</title></head>
<body>

<?php 
session_start();
 $first = $_POST["first"];
 $last = $_POST["last"];
 $first = ucwords($first);
 $last = ucwords($last);
$firstname = $_SESSION["firstname"];
echo $firstname;
 ?>



<FORM NAME ="form1" METHOD ="POST" ACTION = "main1.php">
<table align="center" >
<tr><td>First Name: <INPUT TYPE = "TEXT"  NAME = "first" VALUE="<?php echo htmlentities($first); ?>"/></td></tr>
<tr><td>Last Name: <INPUT TYPE = "TEXT" VALUE ="<?php echo htmlentities($last); ?>" NAME = "last"></td></tr>    
</table>

</FORM>


</body>
</html>

此处无法使用SESSION访问$ firstname。有人可以帮助解决问题吗?

未定义的索引:firstname是th错误。已经检查过很多关于此的帖子,但错误仍然存​​在。

2 个答案:

答案 0 :(得分:1)

从代码中看,您的会话变量在发送数据后正在初始化,我的意思是在点击第一页的提交按钮后。但是当你发送它时,它将转到下一页而不初始化会话变量。这意味着会话变量未被初始化。因此,您可以创建另一个在这两个页面之间链接的页面。创建另一个名为linkingPage.php的页面。将第一页操作更改为linkingPage.php并删除这些行php代码并将其粘贴到新创建的页面

<?php
session_start();
if(isset($_POST['Submit1']) ){

    $firstname = $_POST['first'];
    $lastname = $_POST['last'];
    $firstname=ucwords($firstname);

    $_SESSION["firstname"] = $_POST['first'];
    $_SESSION["lastname"] = $_POST['last'];

    //echo $_SESSION["firstname"] ."-" . $_SESSION["lastname"] ;

    //echo "Hello, ".$firstname. " " .$lastname ."!" . "<br>";

    header('Location:main1.php');
}
?>

最后两行被注释掉了,因为现在它是unnesseceray。现在运行代码,我希望它能工作。享受。

答案 1 :(得分:0)

会话变量可以在整个网站上的任何页面上使用

但是,这可能是你的POST错误吗?尝试简单地将会话变量设置为字符串,并查看是否在其他网页上检索它们