简体   繁体   English

似乎无法使PHP登录名变为“ stick”

[英]Can't seem to get PHP login to 'stick'

<?php
//Login Module (Updated, isset now correct)
session_start();
if(!(isset($_SESSION['login']) && ($_SESSION['login'] != ""))) {
    include('processor/ProcessLogout.php');
} else {
    include('processor/ProcessLog.php');
}
?>

Problem is...it doesn't work. 问题是...它不起作用。 I can't seem to get it to validate to true T_T. 我似乎无法使其验证为真正的T_T。 I set $_SESSION['login'] in processor/assess_login.php. 我在processor / assess_login.php中设置了$ _SESSION ['login']。 ProcessLog is merely a container for some divs and a form the form passes information to asssess_login (which then tells me whether a login has been successful or not). ProcessLog仅仅是一些div的容器,并且该表单将信息传递给asssss_login的表单(然后它告诉我登录是否成功)。 One displays a login form the other displays a logout form. 一个显示登录表单,另一个显示注销表单。 Unfortunately, even though I get "Login Successful"... it's rather worrying that $_SESSION['login'] refuses to change to '1'. 不幸的是,即使我获得了“登录成功”的信息,也很担心$ _SESSION ['login']拒绝更改为'1'。 (That's what I do in assess_login if the login is successful. if it fails I set it to an empty string. (如果登录成功,这就是我在valuate_login中执行的操作。如果登录失败,则将其设置为空字符串。

Now as far as I'm aware session_start() is supposed to remember this, but for some reason...it doesn't oo; 现在,据我所知session_start()应该记住这一点,但是由于某种原因... So any tips on my bug hunting 所以我找虫子的任何提示

There are compilation errors and taking away the ! 有编译错误,并且带走了! does infact display the alternative, so I know that bit 'is' working it just isn't evaluating to true. 确实会显示替代方案,所以我知道位“正在”起作用,只是评估不正确。

Now... as for the assess_login... 现在...至于评估登录...

           if ($db_found) {
        $member_username = quote_smart($member_username, $db_handle);
        $member_password = quote_smart($member_password, $db_handle);

        $sql = "SELECT * FROM $tblname WHERE username=$member_username AND passphrase=$member_password";
        $result = mysql_query($sql);
        $num_rows = mysql_num_rows($result);

        //Validate there is a user
        if($result) {
            if($num_rows == 1) {
                session_start();
                $_SESSION['login'] = '1';
                header("location: ../login_success.php");

            } else {
                session_start();
                $_SESSION['login'] = "";
                header("location: ../login_fail.php");

            }
        } else {
            $error_msg = "Error Validating User! -1";
        }           
    mysql_close($db_handle);
    }

Bearing in mind it is buried somewhat. 铭记它有点埋没。 As I've said before I can't get the login to stick and I know I'm missing something obvious I'll be damned if I can figure out what though. 就像我之前说过的那样,我无法保持登录状态,而且我知道我遗漏了一些明显的东西,如果我能弄清楚该怎么办,那该死的。

Your if statement is not correct: 您的if陈述不正确:

if(!(isset($_SESSION['login'])) && ($_SESSION['login'] != ""))

should be 应该

if(!(isset($_SESSION['login']) && $_SESSION['login'] != ""))
if(!(isset($_SESSION['login']) && $_SESSION['login'] != ""))

在这段代码中,您说的是:如果未设置并且不为空,则希望将其设置为不为空:

if((isset($_SESSION['login'])) && ($_SESSION['login'] != ""))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM