【发布时间】:2012-04-15 14:30:13
【问题描述】:
我正在尝试在 3 个 php 页面之间创建一个非常简单的会话:index.php、validate.php 和 target.php index.php
<?php
session_start();
$_SESSION['uid'] = 'test';
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Start A Session</title>
</head>
<body>
<h1>Welcome to Heaven</h1>
<form method="POST" action="validate.php">
Your Name: <input type="text" name="name" value="" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
和 validate.php 为:
<?php
session_start();
$err="Not Allowed";
if(($_POST['name']) == $_SESSION['uid']){
header ("Location: heaven.php");}
else
{echo $err; }
?>
最后是 target.php
<?php
session_start();
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Start Email with PHP</title>
</head>
<body>
<h1>Welcome to Targer <?php echo $_SESSION['uid'] ?></h1>
<img src="session.jpg">
</body>
</html>
现在我的问题是:
- 当我已经在页面之间设置了会话时,为什么用户仍然可以访问目标页面(根据我对会话的理解,除非已提交正确的 seesion 值但我可以访问目标页面,否则不得访问目标页面通过单击 wamp 索引列表中的页面链接进行页面!并回显 $err; !)
- 我尝试使用 isset() 验证 $_SESSION 值,但它没有通过!请告诉我如何使用 isset() 而不是 if(($_POST['name']) == $_SESSION['uid']) comarison 修改 validate.php?
- 您能否告诉我如何将两个(index.php 和 validate.php)合并到一个页面中?我的意思是如何验证 index.php 中的会话并减少两个索引和目标文件?在这种情况下,我需要处理索引页面中的错误登录。
- 最后,您能否告诉我如何从用户输入中将值分配给 $_SESSION?我的意思是不要像 $_SESSION['uid'] = 'test'; 这样的硬编码部分。让会话值从用户输入开始!我知道这在这里看起来毫无意义,但我想了解在同一索引页面中创建验证码
提前感谢您的宝贵时间
【问题讨论】: