我希望有所帮助。我需要一个使用会话 id 的 php 脚本将特定的用户名和密码登录重定向到特定的 html 表单,因为没有人可以在不通过此用户名和密码登录的情况下访问链接(即登录后没有人可以复制链接在另一个浏览器上并继续)。诸如管理区域之类的东西。(注意:我将自己指定名称和密码,而不是通过从数据库中检索它,因此不需要 SQL 脚本)我在其中搜索了太多,找不到有用的东西。提前感谢您的努力。
问问题
4052 次
2 回答
1
在special_form.php
和/或其他类似页面上放置如下内容:
check_login();
check_login()
像这样的东西在哪里:
function check_login() {
if ($_SESSION['login'] == true AND !empty($_SESSION['user_id')) {
if ($_SESSION['username'] != 'MyUser' OR $_SESSION['password'] != 'MyPass') {
header('Location: http://www.domain.com/login.php');
}
} else {
header('Location: http://www.domain.com/login.php');
}
}
现在,login-process.php
写这样的东西:
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
if ($_SESSION['username'] == 'MyUser' AND $_SESSION['password'] == 'MyPass') {
header('Location: http://www.domain.com/special_form.php');
}
// normal login process code
我只是希望我已经正确理解了你的问题。如果我在某个地方错了,请给我一些提示。:)
于 2012-09-18T10:40:08.063 回答
0
将其放在所有页面的顶部以检查是否已登录:
if(!isset($_SESSION['loggedin'] ||
!$_SESSION['loggedin']==1) header('Location: http://website.com/login.php');
login.php 上的 HTML 表单
<?php
//And just check post variables from form:
if(isset($_POST['submit'])) {
if(strcmp($_POST['username'], 'Your username') == 0 &&
(strcmp($_POST['password'], 'Your password') == 0) {
$_SESSION['loggedin'] = 1;
header('Location: http://website.com/youareloggedin.php');
}
}
?>
<form action="" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" name="submit" />
</form>
一些技巧:
在调用 header 函数之前不要向页面写入任何内容,它会破坏它。
表单上的空白操作将向自身发送数据,确保 php 在顶部(通常更容易将所有 php 保持在顶部并在需要时使用内联 php,例如
<?=functionorvariable()?>
strcmp 比较两个字符串,如果它们相等,它会给你零作为返回值。
始终使用 isset 检查表单是否实际在页面上提交,而不是检查值。
您应该添加错误检查以检查帖子值,以查看它们是否为空或其他,这是一种好习惯。
边做边学,请研究一下这个程序的结构,看看写得清楚,用意很清楚。编码时始终遵循清晰的路线。
祝你好运
于 2012-09-18T10:06:35.610 回答