-1

我希望有所帮助。我需要一个使用会话 id 的 php 脚本将特定的用户名和密码登录重定向到特定的 html 表单,因为没有人可以在不通过此用户名和密码登录的情况下访问链接(即登录后没有人可以复制链接在另一个浏览器上并继续)。诸如管理区域之类的东西。(注意:我将自己指定名称和密码,而不是通过从数据库中检索它,因此不需要 SQL 脚本)我在其中搜索了太多,找不到有用的东西。提前感谢您的努力。

4

2 回答 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 回答