无法在我的php会话中显示数据

时间:2014-05-14 08:21:41

标签: php html session-variables

我的会话表单有问题。这可能是一个简单的答案,但我似乎无法弄明白。

我的HTML:

<body>
<h1>Hobby Selection Page<br /></h1>
<form method="post" action="page1.php" id="hobbies" >
<p>
   <label for="Name">Name: </label>
   <input type="text" id="name" name="name"/>
</p>
<p>What is your favorite thing to do?<br/>
<select name="hobby">
   <option value="movies">Movies</option>
   <option value="read">Reading</option>
   <option value="music">Music</option>
   <option value="other">My hobby is not listed here</option>
 </select>
 <br/><br/>
<input type="submit" value="Submit Form"/>&nbsp;<input type="reset" value="Clear Form"
/>
  </p>
  </form>
</body>

第一个php页面(page1.php):

<?php
session_start();
echo 'Click the link below';

$_SESSION['name'] = " . name . ";
$_SESSION['hobby'] = " . hobby . ";

// Second page
echo '<br /><a href="page2.php">page 2</a>';
?>

第二个php页面(page2.php):

<?php
// page2.php
session_start();
echo 'Your favorite activity:<br />';

echo $_SESSION['name'];
echo $_SESSION['hobby'];

echo '<br /><a href="page1.php">page 1</a>';
?>

我的目标是从第一个html页面输入数据然后将其发送到第一个php页面(以接收会话变量)然后被定向到第二个php页面,它应该检索会话变量并显示我输入/选择的输入数据。我能够显示html和php页面并从一个页面链接到下一个页面但我无法显示(在第一个php页面中)我从html页面输入的数据。

3 个答案:

答案 0 :(得分:3)

你的第一页1.php应该是这样的。

<?php
session_start();
echo 'Click the link below';

$_SESSION['name'] = $_POST['name'];
$_SESSION['hobby'] = $_POST['hobby'];;

// Second page
echo '<br /><a href="page2.php">page 2</a>';
?>

您没有收到数据,因为您在$_SESSION中存储的字符串不是您在字段中输入的文字。

答案 1 :(得分:2)

在page1.php

替换

$_SESSION['name'] = " . name . ";
$_SESSION['hobby'] = " . hobby . ";

通过

$_SESSION['name'] = $_POST['name'];
$_SESSION['hobby'] = $_POST['hobby'];

答案 2 :(得分:2)

你错过了一些东西。首先给你的提交按钮一个名字,如:

<input type="submit" value="Submit Form" name="my_submit" />

然后,在page1.php上,更改此内容:

$_SESSION['name'] = " . name . ";
$_SESSION['hobby'] = " . hobby . ";

对于这样的事情:

// Check if form was submitted. If so, get inputs.
if (isset($_POST['my_submit'])) {
   $_SESSION['name'] = $_POST['name'];
   $_SESSION['hobby'] = $_POST['hobby']; 
}

这应该让你开始朝着正确的方向前进。稍后,您可以添加一些验证,以确保在将$_POST['name']$_POST['hobby']分配给$_SESSION

之前正确填写{{1}}和{{1}}