我的会话表单有问题。这可能是一个简单的答案,但我似乎无法弄明白。
我的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"/> <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页面输入的数据。
答案 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